https://github.com/zytc2009/BigTeam_learning
分类: C/C++
2010-12-20 15:40:26
在Qt程序中查看PDF文件(linux) 简 略地介绍了一下怎么在Qt-X11中使用poppler库来读取阅读PDF文件,因为在桌面应用中一般系统都会自带poppler-qt4安装包,所以使 用起来应该不会有什么问题。 但是想在QtEmbedded上使用poppler库,就得自己来编译了。对于Qt或Linux下编译不太熟悉的朋友,可能也算小有难度,所以本文讲在 QVFb下的编译配置分享出来,对于想做PDF Reader的朋友也算是个参考。
下载地址:
首先配置好下面几个环境变量
export POPPLER_QT4_CFLAGS=”-I/usr/local/Trolltech/QtEmbedded-4.5.2/include”
export POPPLER_QT4_LIBS=”-L/usr/local/Trolltech/QtEmbedded-4.5.2/lib -lQtGui -lQtXml”
export POPPLER_QT4_TEST_CFLAGS=”-I/usr/local/Trolltech/QtEmbedded-4.5.2/include”
export POPPLER_QT4_TEST_LIBS=”-L/usr/local/Trolltech/QtEmbedded-4.5.2/lib -lQtTest”
export MOCQT4=”/usr/local/Trolltech/QtEmbedded-4.5.2/bin/moc“
在你的系统上唯一要改的就是/usr/local/Trolltech/QtEmbedded-4.5.2这一串地址,改成你编译QtEmbedded时
指定的那个prefix地址,如果你没有指定prefix,那么默认安装路径就是/usr/local/TrolltechQtEmbedded-
4.x.x。
然后执行如下configure命令就可以了
./configure –enable-poppler-qt4
Qt本身是不支持PDF文件的解析的,但是我们可以通过第三方的库实现。
libpoppler就是这样一个能够解析pdf文件的工具,它提供了图形应用访问pdf接口。如果Qt程序希望能够使用它,则还需要安装一个libpoppler-qt4-dev(在ubuntu里是这个名字),这样能够使poppler输出Qt能识别的格式。
poppler通过Poppler:Document来对应一个pdf文件,例如
Poppler::Document *doc = Poppler::Document::load(path);
通过page(pageno)来对应pdf文件中的每一页。
1)你可以将page页转成QImage在自己的QWidget里显示,如
void DocumentWidget::showPage(int page)
{
QImage image = doc->page(currentPage)->renderToImage(
scaleFactor * physicalDpiX(),
scaleFactor * physicalDpiY());
...
setPixmap(QPixmap::fromImage(image));
}
2)你也可以在这个页面里查找文本
bool found = page->search(text, searchLocation,
Poppler::Page::NextResult,
Poppler::Page::CaseInsensitive);
searchLocation的值是QRectF格式,对应查到文本的一个区域,你可以高亮它
3)你也可以取出这整个页面的文本
QString text = doc->page(currentPage)->text(selectedRect);
本文目的不是要介绍怎么去用它,而是提醒有这么个工具。英文全文要详细的多,在
,已经实现了PDF查看的基本功能
源代码下载在
如果想详细了解poppler的功能,可以去这个网站。