PDF: write a TrimBox

This is necessary for PDF/X-4 conformance (§ 6.12), but does not
hurt specify it always, matching the MediaBox.

This work has been kindly sponsored by the QGIS project
(https://qgis.org/).

Change-Id: Ifc698f271eb1217da15413e4bf25321dea2e955f
Reviewed-by: Tobias Koenig <tobias.koenig@kdab.com>
Reviewed-by: Albert Astals Cid <aacid@kde.org>
bb10
Giuseppe D'Angelo 2024-05-14 17:37:18 +02:00
parent 67dffd871f
commit a3a91c947c
1 changed files with 11 additions and 4 deletions

View File

@ -2126,17 +2126,24 @@ void QPdfEnginePrivate::writePage()
qreal userUnit = calcUserUnit();
addXrefEntry(pages.constLast());
// make sure we use the pagesize from when we started the page, since the user may have changed it
const QByteArray formattedPageWidth = QByteArray::number(currentPage->pageSize.width() / userUnit, 'f');
const QByteArray formattedPageHeight = QByteArray::number(currentPage->pageSize.height() / userUnit, 'f');
xprintf("<<\n"
"/Type /Page\n"
"/Parent %d 0 R\n"
"/Contents %d 0 R\n"
"/Resources %d 0 R\n"
"/Annots %d 0 R\n"
"/MediaBox [0 0 %s %s]\n",
"/MediaBox [0 0 %s %s]\n"
"/TrimBox [0 0 %s %s]\n",
pageRoot, pageStream, resources, annots,
// make sure we use the pagesize from when we started the page, since the user may have changed it
QByteArray::number(currentPage->pageSize.width() / userUnit, 'f').constData(),
QByteArray::number(currentPage->pageSize.height() / userUnit, 'f').constData());
formattedPageWidth.constData(),
formattedPageHeight.constData(),
formattedPageWidth.constData(),
formattedPageHeight.constData());
if (pdfVersion >= QPdfEngine::Version_1_6)
xprintf("/UserUnit %s\n", QByteArray::number(userUnit, 'f').constData());