本文整理汇总了C++中poppler::Document类的典型用法代码示例。如果您正苦于以下问题:C++ Document类的具体用法?C++ Document怎么用?C++ Document使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Document类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: checkNestedLayers
void TestOptionalContent::checkNestedLayers()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/NestedLayers.pdf");
QVERIFY( doc );
QVERIFY( doc->hasOptionalContent() );
Poppler::OptContentModel *optContent = doc->optionalContentModel();
QModelIndex index;
index = optContent->index( 0, 0, QModelIndex() );
QCOMPARE( optContent->data( index, Qt::DisplayRole ).toString(), QString( "Black Text and Green Snow" ) );
QCOMPARE( static_cast<Qt::CheckState>( optContent->data( index, Qt::CheckStateRole ).toInt() ), Qt::Unchecked );
index = optContent->index( 1, 0, QModelIndex() );
QCOMPARE( optContent->data( index, Qt::DisplayRole ).toString(), QString( "Mountains and Image" ) );
QCOMPARE( static_cast<Qt::CheckState>( optContent->data( index, Qt::CheckStateRole ).toInt() ), Qt::Checked );
// This is a sub-item of "Mountains and Image"
QModelIndex subindex = optContent->index( 0, 0, index );
QCOMPARE( optContent->data( subindex, Qt::DisplayRole ).toString(), QString( "Image" ) );
QCOMPARE( static_cast<Qt::CheckState>( optContent->data( index, Qt::CheckStateRole ).toInt() ), Qt::Checked );
index = optContent->index( 2, 0, QModelIndex() );
QCOMPARE( optContent->data( index, Qt::DisplayRole ).toString(), QString( "Starburst" ) );
QCOMPARE( static_cast<Qt::CheckState>( optContent->data( index, Qt::CheckStateRole ).toInt() ), Qt::Checked );
index = optContent->index( 3, 0, QModelIndex() );
QCOMPARE( optContent->data( index, Qt::DisplayRole ).toString(), QString( "Watermark" ) );
QCOMPARE( static_cast<Qt::CheckState>( optContent->data( index, Qt::CheckStateRole ).toInt() ), Qt::Unchecked );
delete doc;
}
示例2: 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();
}
示例3: performSearch
void NCSAFindBar::performSearch()
{
if(wordSpottingUtil == NULL)
{
this->preprocessDocument();
}
QPixmap search_input(display->size());
display->render(&search_input);
searchResult = wordSpottingUtil->search(search_input, 10);
QString filepath = getFilePath();
Poppler::Document *pdf = Poppler::Document::load(filepath);
////////displaying results
resultComboBox->clear();
for(int i = 0; i < searchResult.size(); i++)
{
NCSAWordInfo* wordInfo = searchResult[i];
QImage returnedPage = pdf->page(wordInfo->pagenum)->renderToImage(150,150); //TODO: get rid of having to read the file again
//QImage returnedPage = *(wordInfo->page);
const QImage word = returnedPage.copy(wordInfo->box->x, wordInfo->box->y, wordInfo->box->w, wordInfo->box->h);
resultComboBox->addItem(QPixmap::fromImage(word), "", -1);
returnedPage.height();
returnedPage.width();
}
QSize size(100,30);
resultComboBox->setIconSize(size);
}
示例4: QVERIFY
void TestAttachments::checkAttach2()
{
Poppler::Document *doc;
doc = Poppler::Document::load("../../../test/unittestcases/A6EmbeddedFiles.pdf");
QVERIFY( doc );
QVERIFY( doc->hasEmbeddedFiles() );
QList<Poppler::EmbeddedFile*> fileList;
fileList = doc->embeddedFiles();
QCOMPARE( fileList.size(), 3 );
Poppler::EmbeddedFile *embfile1 = fileList.at(0);
QCOMPARE( embfile1->name(), QString("Acro7 thoughts") );
QCOMPARE( embfile1->description(), QString("Acro7 Thoughts") );
QCOMPARE( embfile1->createDate(), QDateTime( QDate( 2003, 8, 4 ), QTime( 13, 54, 54), Qt::UTC ) );
QCOMPARE( embfile1->modDate(), QDateTime( QDate( 2003, 8, 4 ), QTime( 14, 15, 27), Qt::UTC ) );
Poppler::EmbeddedFile *embfile2 = fileList.at(1);
QCOMPARE( embfile2->name(), QString("acro transitions 1.xls") );
QCOMPARE( embfile2->description(), QString("AcroTransitions") );
QCOMPARE( embfile2->createDate(), QDateTime( QDate( 2003, 7, 18 ), QTime( 21, 7, 16), Qt::UTC ) );
QCOMPARE( embfile2->modDate(), QDateTime( QDate( 2003, 7, 22 ), QTime( 13, 4, 40), Qt::UTC ) );
Poppler::EmbeddedFile *embfile3 = fileList.at(2);
QCOMPARE( embfile3->name(), QString("apago_pdfe_wide.gif") );
QCOMPARE( embfile3->description(), QString("PDFE Animation") );
QCOMPARE( embfile3->createDate(), QDateTime( QDate( 2003, 1, 31 ), QTime( 15, 54, 29), Qt::UTC ) );
QCOMPARE( embfile3->modDate(), QDateTime( QDate( 2003, 1, 31 ), QTime( 15, 52, 58), Qt::UTC ) );
delete doc;
}
示例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: refresh
void TocManager::refresh() {
Poppler::Document *doc = Poppler::Document::load(_path);
if (doc) {
QList<Choice> choices;
QUrl docUrl("file:" + _path);
QDomDocument *toc = doc->toc();
if (toc) {
QDomNode child = toc->documentElement();
copyToc(docUrl, doc, child, choices, 0);
/*
while (!child.isNull()) {
if (child.isElement()) {
QDomElement el = child.toElement();
QString destName = el.attribute("DestinationName", "");
Poppler::LinkDestination *dest = doc->linkDestination(destName);
QUrl url("file:" + _path + "#page:" + QString::number(dest->pageNumber()));
choices << Choice(el.nodeName(), url.toString());
delete dest;
}
child = child.nextSibling();
}
*/
delete toc;
} else {
qDebug() << "NO TOC";
}
emit contentsChanged(choices);
}
delete doc;
}
示例7: 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);
}
}
示例8: QVERIFY
void TestLinks::checkDests_xr01()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/xr01.pdf");
QVERIFY( doc );
Poppler::Page *page = doc->page(0);
QVERIFY( page );
QList< Poppler::Link* > links = page->links();
QCOMPARE( links.count(), 2 );
{
QCOMPARE( links.at(0)->linkType(), Poppler::Link::Goto );
Poppler::LinkGoto *link = static_cast< Poppler::LinkGoto * >( links.at(0) );
const Poppler::LinkDestination dest = link->destination();
QVERIFY( !isDestinationValid_pageNumber( &dest, doc ) );
QVERIFY( isDestinationValid_name( &dest ) );
QCOMPARE( dest.destinationName(), QString::fromLatin1("section.1") );
}
{
QCOMPARE( links.at(1)->linkType(), Poppler::Link::Goto );
Poppler::LinkGoto *link = static_cast< Poppler::LinkGoto * >( links.at(1) );
const Poppler::LinkDestination dest = link->destination();
QVERIFY( !isDestinationValid_pageNumber( &dest, doc ) );
QVERIFY( isDestinationValid_name( &dest ) );
QCOMPARE( dest.destinationName(), QString::fromLatin1("section.2") );
}
delete doc;
}
示例9: run
void RenderThread::run()
{
double factor = qBound(0.01, m_zoomFactor, 10.0);
if (!QFile::exists(m_pdfUrl)) return;
Poppler::Document* document = Poppler::Document::load(m_pdfUrl);
if (!document || document->isLocked()) {
delete document;
return;
}
// Access page of the PDF file
document->setRenderHint(Poppler::Document::Antialiasing, true);
document->setRenderHint(Poppler::Document::TextAntialiasing, true);
Poppler::Page* pdfPage = document->page(0); // Document starts at page 0
if (pdfPage == 0) {
return;
}
// Generate a QImage of the rendered page
QImage image = pdfPage->renderToImage(factor*200.0, factor*200.0);
emit previewReady(image);
delete pdfPage;
delete document;
}
示例10: 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;
}
示例11: PDFpageCount
int jsBridge::PDFpageCount(QString hash)
{
Poppler::Document *doc = pdf->getDocument(hash);
if (doc == NULL)
return 0;
return doc->numPages();
}
示例12: 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;
}
示例13: QVERIFY
void TestPassword::password2a()
{
Poppler::Document *doc;
doc = Poppler::Document::load(QString::fromUtf8(TESTDATADIR "/unittestcases/Gday garçon - owner.pdf"), QString::fromUtf8("garçon").toLatin1() );
QVERIFY( doc );
QVERIFY( !doc->isLocked() );
delete doc;
}
示例14: checkThumbs
void TestPageMode::checkThumbs()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/UseThumbs.pdf");
QVERIFY( doc );
QCOMPARE( doc->pageMode(), Poppler::Document::UseThumbs );
delete doc;
}
示例15: checkFullScreen
void TestPageMode::checkFullScreen()
{
Poppler::Document *doc;
doc = Poppler::Document::load("../../../test/unittestcases/FullScreen.pdf");
QVERIFY( doc );
QCOMPARE( doc->pageMode(), Poppler::Document::FullScreen );
delete doc;
}