Create outline for a document

This commit is contained in:
Jakub Melka
2020-11-15 18:15:10 +01:00
parent e06148fa8c
commit cb3a36f891
8 changed files with 334 additions and 1 deletions

View File

@ -24,4 +24,5 @@ int main(int argc, char *argv[])
QApplication a(argc, argv);
PDFExamplesGenerator::generateAnnotationsExample();
PDFExamplesGenerator::generatePageBoxesExample();
PDFExamplesGenerator::generateOutlineExample();
}

View File

@ -322,3 +322,39 @@ void PDFExamplesGenerator::generatePageBoxesExample()
pdf::PDFDocumentWriter writer(nullptr);
writer.write("Ex_PageBoxes.pdf", &document, false);
}
void PDFExamplesGenerator::generateOutlineExample()
{
pdf::PDFDocumentBuilder builder;
builder.setDocumentTitle("Test document - Outline");
builder.setDocumentAuthor("Jakub Melka");
builder.setDocumentCreator(QCoreApplication::applicationName());
builder.setDocumentSubject("Testing outline");
builder.setLanguage(QLocale::system());
pdf::PDFObjectReference pageReference = builder.appendPage(QRectF(0, 0, 200, 200));
pdf::PDFOutlineItem root;
pdf::PDFOutlineItem* child = new pdf::PDFOutlineItem();
child->setTitle("Toto je kořen");
child->setAction(pdf::PDFActionPtr(new pdf::PDFActionGoTo(pdf::PDFDestination::createFit(pageReference), pdf::PDFDestination())));
root.addChild(QSharedPointer<pdf::PDFOutlineItem>(child));
child = new pdf::PDFOutlineItem();
child->setTitle("Toto je druhý kořen");
child->setAction(pdf::PDFActionPtr(new pdf::PDFActionGoTo(pdf::PDFDestination::createFit(pageReference), pdf::PDFDestination())));
child->setFontBold(true);
child->setTextColor(Qt::green);
root.addChild(QSharedPointer<pdf::PDFOutlineItem>(child));
pdf::PDFOutlineItem* subchild = new pdf::PDFOutlineItem();
subchild->setTitle("Toto je dítě");
subchild->setAction(pdf::PDFActionPtr(new pdf::PDFActionGoTo(pdf::PDFDestination::createFit(pageReference), pdf::PDFDestination())));
child->addChild(QSharedPointer<pdf::PDFOutlineItem>(subchild));
builder.setOutline(&root);
// Write result to a file
pdf::PDFDocument document = builder.build();
pdf::PDFDocumentWriter writer(nullptr);
writer.write("Ex_Outline.pdf", &document, false);
}

View File

@ -25,6 +25,7 @@ public:
static void generateAnnotationsExample();
static void generatePageBoxesExample();
static void generateOutlineExample();
};
#endif // PDFEXAMPLESGENERATOR_H