本文整理汇总了C++中poppler::Document::numPages方法的典型用法代码示例。如果您正苦于以下问题:C++ Document::numPages方法的具体用法?C++ Document::numPages怎么用?C++ Document::numPages使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类poppler::Document
的用法示例。
在下文中一共展示了Document::numPages方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: checkScanForFonts
void TestFontsData::checkScanForFonts()
{
Poppler::Document *doc;
doc = Poppler::Document::load("../../../test/tests/fonts.pdf");
QVERIFY( doc );
QList<Poppler::FontInfo> listOfFonts = doc->fonts();
QCOMPARE( listOfFonts.size(), 3 );
// check we get the very same result when gatering fonts using scanForFonts
QList<Poppler::FontInfo> listOfFonts2;
for ( int i = 0; i < doc->numPages(); ++i )
{
doc->scanForFonts( 1, &listOfFonts2 );
}
QCOMPARE( listOfFonts, listOfFonts2 );
// check doing a second scanForFonts gives no result
QList<Poppler::FontInfo> listOfFonts3;
for ( int i = 0; i < doc->numPages(); ++i )
{
doc->scanForFonts( 1, &listOfFonts3 );
}
QVERIFY( listOfFonts3.isEmpty() );
delete doc;
}
示例2: main
int main( int argc, char **argv )
{
QApplication a( argc, argv ); // QApplication required!
QTime t;
t.start();
QDir directory( argv[1] );
foreach ( const QString &fileName, directory.entryList() ) {
if (fileName.endsWith("pdf") ) {
qDebug() << "Doing" << fileName.toLatin1().data() << ":";
Poppler::Document *doc = Poppler::Document::load( directory.canonicalPath()+"/"+fileName );
if (!doc) {
qWarning() << "doc not loaded";
} else if ( doc->isLocked() ) {
if (! doc->unlock( "", "password" ) ) {
qWarning() << "couldn't unlock document";
delete doc;
}
} else {
doc->pdfVersion();
doc->info("Title");
doc->info("Subject");
doc->info("Author");
doc->info("Keywords");
doc->info("Creator");
doc->info("Producer");
doc->date("CreationDate").toString();
doc->date("ModDate").toString();
doc->numPages();
doc->isLinearized();
doc->isEncrypted();
doc->okToPrint();
doc->okToCopy();
doc->okToChange();
doc->okToAddNotes();
doc->pageMode();
for( int index = 0; index < doc->numPages(); ++index ) {
Poppler::Page *page = doc->page( index );
QImage image = page->renderToImage();
page->pageSize();
page->orientation();
delete page;
std::cout << ".";
std::cout.flush();
}
std::cout << std::endl;
delete doc;
}
}
}
std::cout << "Elapsed time: " << (t.elapsed()/1000) << "seconds" << std::endl;
}
示例3: checkNumPages
void TestMetaData::checkNumPages()
{
Poppler::Document *doc;
doc = Poppler::Document::load("../../../test/unittestcases/doublepage.pdf");
QVERIFY( doc );
QCOMPARE( doc->numPages(), 2 );
delete doc;
doc = Poppler::Document::load("../../../test/unittestcases/truetype.pdf");
QVERIFY( doc );
QCOMPARE( doc->numPages(), 1 );
delete doc;
}
示例4: rect
WINPrint::~WINPrint() {
if (!doit) return;
Poppler::Document* document = Poppler::Document::load(file);
if (document) {
document->setRenderHint(Poppler::Document::Antialiasing);
document->setRenderHint(Poppler::Document::TextAntialiasing);
int nbpages=document->numPages(), nextpage=nbpages-1;
QPainter Paint;
if(Paint.begin(Prt)) {
QImage image;
QRect rect (0, 0,
Prt->paperRect (QPrinter::DevicePixel).width(),
Prt->paperRect(QPrinter::DevicePixel).height());
double rres= Prt->resolution();
Paint.setRenderHint (QPainter::Antialiasing);
for (int pg=0;pg < nbpages;pg++) {
Poppler::Page* pdfPage = document->page (pg);
if (pdfPage) {
image= pdfPage->renderToImage (rres, rres);
delete pdfPage;
}
if (!image.isNull()) {
Paint.drawImage (rect, image);
if (pg != nextpage) Prt->newPage();
}
else convert_error << "Fail to create image at "
<< rres << " dpi resolution\n";
}
Paint.end();
}
delete (document);
}
}
示例5: indexPdf
// Index any PDFs that are attached. Basically it turns the PDF into text and adds it the same
// way as a note's body
void IndexRunner::indexPdf(qint32 lid, Resource &r) {
if (!keepRunning || pauseIndexing) {
indexTimer->start();
return;
}
ResourceTable rtable(&db->conn);
qint32 reslid = rtable.getLid(r.guid);
if (lid <= 0) {
indexTimer->start();
return;
}
QString file = global.fileManager.getDbaDirPath() + QString::number(reslid) +".pdf";
QString text = "";
Poppler::Document *doc = Poppler::Document::load(file);
if (doc == NULL) {
indexTimer->start();
return;
}
for (int i=0; keepRunning && !pauseIndexing && i<doc->numPages(); i++) {
QRectF rect;
text = text + doc->page(i)->text(rect) + QString(" ");
}
IndexRecord *rec = new IndexRecord();
rec->content = text;
rec->source = "recognition";
rec->weight = 100;
rec->lid = lid;
if (indexHash->contains(lid)) {
delete indexHash->value(lid);
indexHash->remove(lid);
}
indexHash->insert(lid, rec);
}
示例6: indexPdf
// Index any PDFs that are attached. Basically it turns the PDF into text and adds it the same
// way as a note's body
void NoteIndexer::indexPdf(qint32 reslid) {
NSqlQuery sql(global.db);
if (reslid <= 0)
return;
QString file = global.fileManager.getDbaDirPath() + QString::number(reslid) +".pdf";
QString text = "";
Poppler::Document *doc = Poppler::Document::load(file);
if (doc == NULL || doc->isEncrypted() || doc->isLocked())
return;
for (int i=0; i<doc->numPages(); i++) {
QRectF rect;
text = text + doc->page(i)->text(rect) + QString(" ");
}
// Add the new content. it is basically a text version of the note with a weight of 100.
sql.prepare("Insert into SearchIndex (lid, weight, source, content) values (:lid, :weight, :source, :content)");
sql.bindValue(":lid", reslid);
sql.bindValue(":weight", 100);
sql.bindValue(":source", "recognition");
sql.bindValue(":content", text);
sql.exec();
}
示例7: searchPDFPostResults
//TODO think about storing the documents instead of the filenames in a list
//Would avoid creation of the documents for each search but probably take up more memory
bool MainWindow::searchPDFPostResults(const QFileInfo &fi, QString searchString)
{
bool nHitsExceeded = false;
Poppler::Document *document = Poppler::Document::load(fi.absoluteFilePath());
if (!document || document->isLocked()) {
//Oops, document empty => error message
QMessageBox mbox;
mbox.setText(tr("Could not read the file \n'") + fi.fileName() +
tr("\ntherefore, possible matches might be missing"));
mbox.exec();
delete document;
return false;
}
//Get document title
QString title = document->info("Title");
//If no title specified => use filename instead
if(title == "")
title = fi.fileName();
QString shortTitle = QString(title);
if (shortTitle.length() > 16)
{
shortTitle = "..." + shortTitle.right(16);
}
ui->statusBar->showMessage("Durchsuche PDF: " + shortTitle);
qDebug() << "Searching pdf: " << title;
//Search the document for the searchString
int hitCounter = 0;
for (int page = 0; page < document->numPages(); page++) {
//Parameters 1,2,3,4 of the search function
//will contain the rectangle coordinates of where the text was found.
//Since we are not interested in these coordinates, we just pass a single variable
double coordinate = 0.0;
if (document->page(page)->search(searchString, coordinate,coordinate,coordinate,coordinate,
Poppler::Page::NextResult,
Poppler::Page::CaseInsensitive)) {
hitCounter++;
ui->statusBar->showMessage(tr("Searching in ") + shortTitle +
" - hit on page: " + QString::number(page));
//Yay, we found the search String on this page
//=> Add this page to the result list
addDocNPageToResultList(title, fi, page);
// TODO make this limit a variable
if(hitCounter >= maxHits)
{
QMessageBox mbox;
mbox.setText(tr("Search has already reached the maximum of ") + QString::number(maxHits)
+ tr(" hits please choose a more specific criterion"));
mbox.exec();
nHitsExceeded = true;
break;
}
}
}
//Don't forget to delete the document
delete document;
//Return whether the max number of hits was reached
return nHitsExceeded;
}
示例8: PDFpageCount
int jsBridge::PDFpageCount(QString hash)
{
Poppler::Document *doc = pdf->getDocument(hash);
if (doc == NULL)
return 0;
return doc->numPages();
}
示例9: extractIsbnsFromPdf
void guFolderInspector::extractIsbnsFromPdf(QString fileName, QList<QString> &ISBNList)
{
//PDFDoc *doc;
//doc = new PDFDoc()
//qDebug() << "file:" << fileName;
Poppler::Document* document;
document = Poppler::Document::load(fileName,0,0);
//Poppler::Document::
if (!document || document->isLocked()) {
// ... error message ....
delete document;
return;
}
// Paranoid safety check
if (!document) {
// ... error message ...
return;
}
Poppler::Page* pdfPage;
isbnMethods find;
// Access page of the PDF file
int numOfPages = document->numPages(); //количество страниц
int numOfSearchPages = 15;
//qDebug() << "num of pages " << numOfPages;
if(numOfPages < numOfSearchPages)
{
numOfSearchPages = numOfPages;
}
for ( int pageNumber = 0 ; pageNumber < numOfSearchPages ; pageNumber++)
{
pdfPage = document->page(pageNumber); // Document starts at page 0
if (!pdfPage) {
// ... error message ...
continue;
}
//QtMsgHandler qInstallMsgHandler ( QtMsgHandler handler )
QString pageContent;
pageContent = pdfPage->text(QRectF(QPointF(0,0),pdfPage->pageSizeF()));
find.findIsbns(pageContent, ISBNList);
// ... use image ...
//qDebug() << pageContent;
}
// after the usage, the page must be deleted
delete pdfPage;
//Finally, don't forget to destroy the document:
delete document;
}
示例10: main
int main( int argc, char **argv )
{
QApplication a( argc, argv ); // QApplication required!
if ( argc != 3)
{
qWarning() << "usage: test-password-qt4 owner-password filename";
exit(1);
}
Poppler::Document *doc = Poppler::Document::load(argv[2], argv[1]);
if (!doc)
{
qWarning() << "doc not loaded";
exit(1);
}
// output some meta-data
int major = 0, minor = 0;
doc->getPdfVersion( &major, &minor );
qDebug() << " PDF Version: " << qPrintable(QString::fromLatin1("%1.%2").arg(major).arg(minor));
qDebug() << " Title: " << doc->info("Title");
qDebug() << " Subject: " << doc->info("Subject");
qDebug() << " Author: " << doc->info("Author");
qDebug() << " Key words: " << doc->info("Keywords");
qDebug() << " Creator: " << doc->info("Creator");
qDebug() << " Producer: " << doc->info("Producer");
qDebug() << " Date created: " << doc->date("CreationDate").toString();
qDebug() << " Date modified: " << doc->date("ModDate").toString();
qDebug() << "Number of pages: " << doc->numPages();
qDebug() << " Linearised: " << doc->isLinearized();
qDebug() << " Encrypted: " << doc->isEncrypted();
qDebug() << " OK to print: " << doc->okToPrint();
qDebug() << " OK to copy: " << doc->okToCopy();
qDebug() << " OK to change: " << doc->okToChange();
qDebug() << "OK to add notes: " << doc->okToAddNotes();
qDebug() << " Page mode: " << doc->pageMode();
QStringList fontNameList;
foreach( const Poppler::FontInfo &font, doc->fonts() )
fontNameList += font.name();
qDebug() << " Fonts: " << fontNameList.join( ", " );
Poppler::Page *page = doc->page(0);
qDebug() << " Page 1 size: " << page->pageSize().width()/72 << "inches x " << page->pageSize().height()/72 << "inches";
PDFDisplay test( doc ); // create picture display
test.setWindowTitle("Poppler-Qt4 Test");
test.show(); // show it
return a.exec(); // start event loop
}
示例11: preprocessDocument
void NCSAFindBar::preprocessDocument()
{
wordSpottingUtil = new NCSAWordSpottingUtil();
QString filepath = getFilePath();
Poppler::Document *pdf = Poppler::Document::load(filepath);
if(pdf == NULL)
{
QMessageBox::warning(0, QString("Error"), QString("Cannot locate file at path: ").append(filepath).append(" ."));
return;
}
for(int i = 0; i < pdf->numPages(); i++)
{
wordSpottingUtil->addPage(pdf->page(i)->renderToImage(150, 150), i);
}
}
示例12: keyPressEvent
void PDFDisplay::keyPressEvent( QKeyEvent *e )
{
if (e->key() == Qt::Key_Down)
{
if (m_currentPage + 1 < doc->numPages())
{
m_currentPage++;
display();
}
}
else if (e->key() == Qt::Key_Up)
{
if (m_currentPage > 0)
{
m_currentPage--;
display();
}
}
else if (e->key() == Qt::Key_Q)
{
exit(0);
}
}
示例13: indexPdf
// Index any PDFs that are attached. Basically it turns the PDF into text and adds it the same
// way as a note's body
void IndexRunner::indexPdf(qint32 lid, Resource &r) {
ResourceTable rtable(&db->conn);
qint32 reslid = rtable.getLid(r.guid);
if (lid <= 0 || !keepRunning || pauseIndexing)
return;
QString file = global.fileManager.getDbaDirPath() + QString::number(reslid) +".pdf";
QString text = "";
Poppler::Document *doc = Poppler::Document::load(file);
if (doc == NULL)
return;
for (int i=0; i<doc->numPages() && keepRunning && !pauseIndexing; i++) {
QRectF rect;
text = text + doc->page(i)->text(rect) + QString(" ");
}
QSqlQuery sql(db->conn);
sql.prepare("Insert into SearchIndex (lid, weight, source, content) values (:lid, :weight, 'recognition', :content)");
sql.bindValue(":lid", lid);
sql.bindValue(":weight", 100);
sql.bindValue(":content", text);
sql.exec();
}
示例14: indexRecognition
// Index any resources
void IndexRunner::indexRecognition(qint32 lid, Resource &r) {
if (!keepRunning || pauseIndexing) {
//indexTimer->start();
return;
}
// Add filename or source url to search index
if (r.attributes.isSet()) {
NSqlQuery sql(db);
ResourceAttributes a = r.attributes;
if (a.fileName.isSet()) {
sql.prepare("Insert into SearchIndex (lid, weight, source, content) values (:lid, :weight, :source, :content)");
sql.bindValue(":lid", lid);
sql.bindValue(":weight", 100);
sql.bindValue(":source", "recognition");
sql.bindValue(":content", QString(a.fileName));
sql.exec();
}
if (a.sourceURL.isSet()) {
sql.prepare("Insert into SearchIndex (lid, weight, source, content) values (:lid, :weight, :source, :content)");
sql.bindValue(":lid", lid);
sql.bindValue(":weight", 100);
sql.bindValue(":source", "recognition");
sql.bindValue(":content", QString(a.sourceURL));
sql.exec();
}
}
// Make sure we have something to look through.
Data recognition;
if (r.recognition.isSet())
recognition = r.recognition;
if (!recognition.body.isSet())
return;
QDomDocument doc;
QString emsg;
doc.setContent(recognition.body, &emsg);
// look for text tags
QDomNodeList anchors = doc.documentElement().elementsByTagName("t");
#if QT_VERSION < 0x050000
for (unsigned int i=0; keepRunning && !pauseIndexing && i<anchors.length(); i++) {
#else
for (int i=0; keepRunning && !pauseIndexing && i<anchors.length(); i++) {
#endif
QApplication::processEvents();
QDomElement enmedia = anchors.at(i).toElement();
QString weight = enmedia.attribute("w");
QString text = enmedia.text();
if (text != "") {
IndexRecord *rec = new IndexRecord();
rec->weight = weight.toInt();
rec->lid = lid;
rec->content = text;
rec->source = "recognition";
if (indexHash->contains(lid)) {
delete indexHash->value(lid);
indexHash->remove(lid);
}
indexHash->insert(lid, rec);
}
}
}
// Index any PDFs that are attached. Basically it turns the PDF into text and adds it the same
// way as a note's body
void IndexRunner::indexPdf(qint32 lid, Resource &r) {
if (!global.indexPDFLocally)
return;
if (!keepRunning || pauseIndexing) {
//indexTimer->start();
return;
}
ResourceTable rtable(db);
qint32 reslid = rtable.getLid(r.guid);
if (lid <= 0) {
//indexTimer->start();
return;
}
QString file = global.fileManager.getDbaDirPath() + QString::number(reslid) +".pdf";
QString text = "";
Poppler::Document *doc = Poppler::Document::load(file);
if (doc == nullptr || doc->isEncrypted() || doc->isLocked()) {
//indexTimer->start();
return;
}
for (int i=0; keepRunning && !pauseIndexing && i<doc->numPages(); i++) {
QRectF rect;
text = text + doc->page(i)->text(rect) + QString(" ");
}
IndexRecord *rec = new IndexRecord();
rec->content = text;
rec->source = "recognition";
rec->weight = 100;
//.........这里部分代码省略.........
示例15: main
int main( int argc, char **argv )
{
QApplication a( argc, argv ); // QApplication required!
if ( argc < 2 ||
(argc == 3 && strcmp(argv[2], "-arthur") != 0) ||
argc > 3)
{
// use argument as file name
qWarning() << "usage: test-poppler-qt4 filename [-arthur]";
exit(1);
}
Poppler::Document *doc = Poppler::Document::load(QFile::decodeName(argv[1]));
if (!doc)
{
qWarning() << "doc not loaded";
exit(1);
}
if (doc->isLocked())
{
qWarning() << "document locked (needs password)";
exit(0);
}
if (doc->numPages() <= 0)
{
delete doc;
qDebug() << "Doc has no pages";
return 0;
}
QString backendString;
if (argc == 3 && strcmp(argv[2], "-arthur") == 0)
{
backendString = "Arthur";
doc->setRenderBackend(Poppler::Document::ArthurBackend);
}
else
{
backendString = "Splash";
doc->setRenderBackend(Poppler::Document::SplashBackend);
}
doc->setRenderHint(Poppler::Document::Antialiasing, true);
doc->setRenderHint(Poppler::Document::TextAntialiasing, true);
for (int i = 0; i < doc->numPages(); ++i)
{
Poppler::Page *page = doc->page(i);
if (page) {
qDebug() << "Rendering page using" << backendString << "backend: " << i;
QTime t = QTime::currentTime();
QImage image = page->renderToImage();
qDebug() << "Rendering took" << t.msecsTo(QTime::currentTime()) << "msecs";
image.save(QString("test-rennder-to-file%1.ppm").arg(i));
delete page;
}
}
return 0;
}