void showPagesInfo(PDFParser& parser, InputFile& pdfFile, EStatusCode status) { for(unsigned long i=0; i < parser.GetPagesCount() && eSuccess == status; ++i) { cout << "Showing info for page " << i << ":\n"; // Parse page object RefCountPtr<PDFDictionary> page(parser.ParsePage(i)); // check XObject referenences checkXObjectRef(parser,page); // show page content RefCountPtr<PDFObject> contents(parser.QueryDictionaryObject(page.GetPtr(),"Contents")); if(!contents) { cout << "No contents for this page\n"; continue; } // content may be array or single cout << "Showing content of page:\n"; showPageContent(parser,contents,pdfFile); cout << "End page content\n"; } }
void checkXObjectRef(PDFParser& parser,RefCountPtr<PDFDictionary> page) { PDFObjectCastPtr<PDFDictionary> resources(parser.QueryDictionaryObject(page.GetPtr(),"Resources")); if(!resources) { wcout << "No XObject in this page\n"; return; } PDFObjectCastPtr<PDFDictionary> xobjects(parser.QueryDictionaryObject(resources.GetPtr(),"XObject")); if(!xobjects) { wcout << "No XObject in this page\n"; return; } cout << "Displaying XObjects information for this page:\n"; showXObjectsPerPageInfo(parser,xobjects); }