mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-09 05:24:14 +02:00
Fix bugtracker #340: small PDF text drawn too bold in Adobe Acrobat
Qt 6 declares the PDF/X namespace (pdfxid) in the XMP metadata of every PDF it writes, even when the file is not PDF/X. Adobe Acrobat then draws small text too bold at some zoom levels. Qt only needs the declaration for PDF/X-4 output, which QElectroTech never asks for. Blank the declaration out after export, in place with spaces so no offsets move, in both the export window and the --export-pdf path. Diagnosis and the Acrobat testing by Alf, bugtracker #340. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G2d2Zi8BfrYRPX88zhaoFG
This commit is contained in:
@@ -388,6 +388,29 @@ void convertUriToGoTo(const QString &pdfPath)
|
||||
out.close();
|
||||
}
|
||||
|
||||
void removeUnusedPdfxNamespace(const QString &pdfPath)
|
||||
{
|
||||
QFile f(pdfPath);
|
||||
if (!f.open(QIODevice::ReadOnly)) return;
|
||||
QByteArray data = f.readAll();
|
||||
f.close();
|
||||
|
||||
// Qt only fills the pdfxid namespace in when it writes PDF/X-4.
|
||||
if (data.contains("pdfxid:GTS_PDFXVersion")) return;
|
||||
|
||||
static const QByteArray decl =
|
||||
" xmlns:pdfxid=\"http://www.npes.org/pdfx/ns/id/\"";
|
||||
const int pos = data.indexOf(decl);
|
||||
if (pos == -1) return;
|
||||
|
||||
// Same length, so the stream /Length and the xref offsets stay valid.
|
||||
data.replace(pos, decl.size(), QByteArray(decl.size(), ' '));
|
||||
|
||||
if (!f.open(QIODevice::WriteOnly | QIODevice::Truncate)) return;
|
||||
f.write(data);
|
||||
f.close();
|
||||
}
|
||||
|
||||
void convertComponentInfoAnnotations(const QString &pdfPath,
|
||||
const QList<ComponentInfo> &annotations)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user