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)9int 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