1 #include <QtCore/QCoreApplication>
2 #include <QtCore/QDebug>
3 
4 #include <iostream>
5 #include <memory>
6 
7 #include <poppler-qt5.h>
8 
main(int argc,char ** argv)9 int main(int argc, char **argv)
10 {
11     QCoreApplication a(argc, argv); // QApplication required!
12 
13     if (!(argc == 2)) {
14         qWarning() << "usage: poppler-page-labels filename";
15         exit(1);
16     }
17 
18     Poppler::Document *doc = Poppler::Document::load(argv[1]);
19     if (!doc || doc->isLocked()) {
20         qWarning() << "doc not loaded";
21         exit(1);
22     }
23 
24     for (int i = 0; i < doc->numPages(); i++) {
25         int j = 0;
26         std::cout << "*** Label of Page " << i << std::endl;
27         std::cout << std::flush;
28 
29         std::unique_ptr<Poppler::Page> page(doc->page(i));
30 
31         if (!page)
32             continue;
33 
34         const QByteArray utf8str = page->label().toUtf8();
35         for (j = 0; j < utf8str.size(); j++)
36             std::cout << utf8str[j];
37         std::cout << std::endl;
38 
39         std::unique_ptr<Poppler::Page> pageFromPageLabel(doc->page(page->label()));
40         const int indexFromPageLabel = pageFromPageLabel ? pageFromPageLabel->index() : -1;
41         if (indexFromPageLabel != i)
42             std::cout << "WARNING: Page label didn't link back to the same page index " << indexFromPageLabel << " " << i << std::endl;
43     }
44     delete doc;
45 }
46