Set page boxes

This commit is contained in:
Jakub Melka
2020-11-10 19:31:33 +01:00
parent 8167065be5
commit 1382ead109
6 changed files with 484 additions and 27 deletions

View File

@@ -3315,6 +3315,20 @@ void PDFDocumentBuilder::setCatalogAcroForm(PDFObjectReference acroForm)
}
void PDFDocumentBuilder::setCatalogNames(PDFObjectReference names)
{
PDFObjectFactory objectBuilder;
objectBuilder.beginDictionary();
objectBuilder.beginDictionaryItem("Names");
objectBuilder << ((names.isValid()) ? PDFObject::createReference(names) : PDFObject());
objectBuilder.endDictionaryItem();
objectBuilder.endDictionary();
PDFObject updatedCatalog = objectBuilder.takeObject();
mergeTo(getCatalogReference(), updatedCatalog);
}
void PDFDocumentBuilder::setCatalogOptionalContentProperties(PDFObjectReference ocProperties)
{
PDFObjectFactory objectBuilder;
@@ -3494,6 +3508,51 @@ void PDFDocumentBuilder::setLanguage(QString language)
}
void PDFDocumentBuilder::setPageArtBox(PDFObjectReference page,
QRectF box)
{
PDFObjectFactory objectBuilder;
objectBuilder.beginDictionary();
objectBuilder.beginDictionaryItem("ArtBox");
objectBuilder << box;
objectBuilder.endDictionaryItem();
objectBuilder.endDictionary();
PDFObject updatedPageObject = objectBuilder.takeObject();
mergeTo(page, updatedPageObject);
}
void PDFDocumentBuilder::setPageBleedBox(PDFObjectReference page,
QRectF box)
{
PDFObjectFactory objectBuilder;
objectBuilder.beginDictionary();
objectBuilder.beginDictionaryItem("BleedBox");
objectBuilder << box;
objectBuilder.endDictionaryItem();
objectBuilder.endDictionary();
PDFObject updatedPageObject = objectBuilder.takeObject();
mergeTo(page, updatedPageObject);
}
void PDFDocumentBuilder::setPageCropBox(PDFObjectReference page,
QRectF box)
{
PDFObjectFactory objectBuilder;
objectBuilder.beginDictionary();
objectBuilder.beginDictionaryItem("CropBox");
objectBuilder << box;
objectBuilder.endDictionaryItem();
objectBuilder.endDictionary();
PDFObject updatedPageObject = objectBuilder.takeObject();
mergeTo(page, updatedPageObject);
}
void PDFDocumentBuilder::setPageDocumentPart(PDFObjectReference page,
PDFObjectReference documentPart)
{
@@ -3509,6 +3568,36 @@ void PDFDocumentBuilder::setPageDocumentPart(PDFObjectReference page,
}
void PDFDocumentBuilder::setPageMediaBox(PDFObjectReference page,
QRectF box)
{
PDFObjectFactory objectBuilder;
objectBuilder.beginDictionary();
objectBuilder.beginDictionaryItem("MediaBox");
objectBuilder << box;
objectBuilder.endDictionaryItem();
objectBuilder.endDictionary();
PDFObject updatedPageObject = objectBuilder.takeObject();
mergeTo(page, updatedPageObject);
}
void PDFDocumentBuilder::setPageTrimBox(PDFObjectReference page,
QRectF box)
{
PDFObjectFactory objectBuilder;
objectBuilder.beginDictionary();
objectBuilder.beginDictionaryItem("TrimBox");
objectBuilder << box;
objectBuilder.endDictionaryItem();
objectBuilder.endDictionary();
PDFObject updatedPageObject = objectBuilder.takeObject();
mergeTo(page, updatedPageObject);
}
void PDFDocumentBuilder::updateTrailerDictionary(PDFInteger objectCount)
{
PDFObjectFactory objectBuilder;
@@ -3533,20 +3622,6 @@ void PDFDocumentBuilder::updateTrailerDictionary(PDFInteger objectCount)
}
void PDFDocumentBuilder::setCatalogNames(PDFObjectReference names)
{
PDFObjectFactory objectBuilder;
objectBuilder.beginDictionary();
objectBuilder.beginDictionaryItem("Names");
objectBuilder << ((names.isValid()) ? PDFObject::createReference(names) : PDFObject());
objectBuilder.endDictionaryItem();
objectBuilder.endDictionary();
PDFObject updatedCatalog = objectBuilder.takeObject();
mergeTo(getCatalogReference(), updatedCatalog);
}
/* END GENERATED CODE */
} // namespace pdf

View File

@@ -1000,6 +1000,11 @@ public:
void setCatalogAcroForm(PDFObjectReference acroForm);
/// Set reference to 'Names' dictionary to catalog.
/// \param names Reference to Names dictionary.
void setCatalogNames(PDFObjectReference names);
/// Set optional content properties to catalog.
/// \param ocProperties Reference to catalog optional content properties.
void setCatalogOptionalContentProperties(PDFObjectReference ocProperties);
@@ -1075,6 +1080,30 @@ public:
void setLanguage(QString language);
/// Sets art box to the page. Art box defines page's meaningful content.
/// \param page Page
/// \param box Box
void setPageArtBox(PDFObjectReference page,
QRectF box);
/// Sets bleed box to the page. Bleed box is, basically, a clipping box for output in a production
/// environment. Default value is the page's crop box.
/// \param page Page
/// \param box Box
void setPageBleedBox(PDFObjectReference page,
QRectF box);
/// Sets crop box to the page. Crop box defines clipping region of the page. Page contents are clipped
/// to this region, graphics outside of clipping box will not be printed. Default value is same, as media
/// box.
/// \param page Page
/// \param box Box
void setPageCropBox(PDFObjectReference page,
QRectF box);
/// Sets document part to page.
/// \param page Page
/// \param documentPart Document part
@@ -1082,17 +1111,27 @@ public:
PDFObjectReference documentPart);
/// Sets media box to the page. The media box defines size of physical medium, onto which the page
/// is to be printed.
/// \param page Page
/// \param box Box
void setPageMediaBox(PDFObjectReference page,
QRectF box);
/// Sets trim box to the page. Trim box is physical region, of the printed page after trimming.
/// \param page Page
/// \param box Box
void setPageTrimBox(PDFObjectReference page,
QRectF box);
/// This function is used to update trailer dictionary. Must be called each time the final document is
/// being built.
/// \param objectCount Number of objects (including empty ones)
void updateTrailerDictionary(PDFInteger objectCount);
/// Set reference to 'Names' dictionary to catalog.
/// \param names Reference to Names dictionary.
void setCatalogNames(PDFObjectReference names);
/* END GENERATED CODE */
private: