精华内容
下载资源
问答
  • poppler window-mingw

    2020-10-07 18:33:10
    poppler是window下加载pdf文件的库,使用mingw编译器编译,这里是在qt creator环境下使用
  • poppler-0.68.0_x86.7z

    2019-10-25 15:56:31
    I have been using the Poppler library for some time, over a series of various projects. It’s an open source set of libraries and command line tools, very useful for dealing with PDF files. Poppler is...
  • Poppler,PDF渲染库 这是Poppler,一个用于渲染PDF文件并检查或修改其结构的库。 Poppler最初来自XPDF来源。 请参阅原始xpdf-3.03自述文件的文件。 请注意, Poppler是根据GPL许可的,而不是LGPL许可的,因此,调用...
  • 使用Qt poppler-qt5实现简单pdf阅读器, 打开关闭文件,有翻页,放大缩小,查看目录,查看缩略图等功能,使用qt5.9 mingw编译器可用.
  • Windows打包的Poppler 下载带有Windows依赖项的最新Poppler预置二进制文件。 在conda-forge和 feedstock的帮助下构建。 包括最新的poppler数据。 下载 您可以从下载最新。 过时了吗? 确保是最新的。 创建一个新...
  • Poppler PDF渲染库的异步node.js包装器 介绍 是一个PDF呈现库,还包括实用程序二进制文件的集合,该实用程序二进制文件允许对PDF文档中的数据进行操作和提取,例如将PDF文件转换为HTML,TXT或PostScript。 node-...
  • Qt用Poppler库解析PDF成图片的简单示例,更多请参考原文:https://blog.csdn.net/u014597198/article/details/53286042#comments
  • 需要用到Poppler开源库,下载地址如下 https://poppler.freedesktop.org/ 如果只是要在window的gcc下运行的话,可以下载已经编译好的库 https://sourceforge.net/projects/poppler-win32/   注意:这个是MinGW版本...
  • Qt使用poppler读取pdf

    2017-09-13 22:44:03
    Qt使用poppler读取pdf文件,使用的IDE为QtCreater5.6,minGw32位。将读取到的pdf挨个转化为图片显示到界面上。
  • 用过移植arm,自己找了一份poppler交叉编译,移植用的依赖库和资源包,也把步骤记下来了,大家参考一下,我已经成功,如果有问题,可以留言评论
  • poppler:Poppler在Katie的支持下
  • Qt 使用Poppler实现pdf阅读器 博客地址:http://blog.csdn.net/chy555chy/article/details/51613545
  • poppler-0.39.0-win32.zip

    2020-10-07 18:51:44
    poppler压缩包,包含了window下dll,用来在window下加载pdf文件并显示,qt环境下使用
  • poppler-qt4, pdf 浏览器, vs2010 + qt4.8.6,解压后即可使用
  • qt 显示pdf poppler

    2016-05-31 22:17:44
    qt中显示pdf 适合初级学习
  • Poppler0.20.2 开发库

    2014-01-27 16:11:25
    1. Poppler是一个PDF浏览器引擎库,支持PDF的读取、解析和绘制; 2. Poppler的Linux编译非常容易,但Windows版本编译却问题多多; 3. 经过长时间的搜寻,通过kdewin-installer-gui-0.9.9-7获取到这个库文件; 4. ...
  • 使用Poppler和Tesseract的pdf文本提取的Python OCR实现 特征: 同时支持文本可读和非文本可读(扫描)的文档 通过三种不同的性能配置文件实现多处理,以优化执行速度 基本文字清理 以.docx或.csv格式导出数据 要求...
  • QT+Poppler+PDFviewer.zip

    2020-02-17 22:11:20
    在windows,QT5 开发运行环境下,应用第三方库POPPLER 来创建简单的PDF viewer。
  • poppler_0.39.0_win32

    2018-06-07 10:47:48
    oppler Win32 are pre-built binaries of the Poppler library, it includes libpoppler.dll.a and libpoppler-qt5.dll.a. We made these pre-built binaries since building Poppler (Especially with Qt5 support...
  • 真正编译好的poppler-qt4

    热门讨论 2014-06-07 07:17:47
    在msys环境下编译的可使用于Mingw编译器的poppler-qt4库。 使用方法:1、将poppler-qt4文件夹放到Qt的include目录下 2、将libpoppler-qt4.a文件放到QT的lib目录下,在使用poppler-qt4的工程的pro文件中加入LIBS+=-...
  • poppler-qt4库可以用于Qt桌面程序直接显示PDF文档内容,而不依赖于Adobe。但编译poppler-qt4过程较为复杂(依赖库较多)。 为了方便Qt程序员使用,笔者特意选择Qt4最后版本4.8.6作为开发环境。 使用MinGW 4.8.2作为...
  • poppler.tar.gz

    2019-12-10 10:28:00
    该资源仅提供动态库,相关*.h 头文件请到官网进行下载,另附带一份使用方法!该动态只能在Linux下使用(mingw编译环境),请勿做必须要的下载!
  • PDF到PNG转换库(基于poppler pdftoppm ) 安装 $ pip install pdftopng 用法 from pdftopng import pdftopng pdftopng.convert(pdf_path="foo.pdf", png_path="foo.png") 测验 首先,使用以下步骤设置开发环境: ...
  • Qt pdf poppler

    2019-04-22 15:18:58
    poppler的头文件 poppler的动态库文件 poppler的调试代码 基于mingw32 qtcreator5.12 win7 poppler0.39
  • 开发环境:Windows 10、Qt ...Poppler开源库,下载地址:https://poppler.freedesktop.org/ 已经编译好的Poppler库下载地址:https://sourceforge.net/projects/poppler-win32/ 我选择下载已经编译好的P

    参考文章:https://blog.csdn.net/chy555chy/article/details/51613545

    开发环境:Windows 10、Qt 5.9.1、Qt Creator 4.3.1、MinGW 5.3.0

    Poppler开源库,下载地址:https://poppler.freedesktop.org/

    已经编译好的Poppler库下载地址:https://sourceforge.net/projects/poppler-win32/

    我选择下载已经编译好的Poppler库,省事儿。

    为了让Poppler能解析中文,还需要编码文件:https://poppler.freedesktop.org/poppler-data-0.4.10.tar.gz

    注意:如果不使用编码文件,Poppler解析出来的PDF文件可能无法显示中文,在Qt Creator中调试时会报如下内容的错误:

    "Error: Missing language pack for 'Adobe-GB1' mapping"
    "Error: Unknown font tag 'F1'"
    "Error (286): No font in show"

    后文将讲解如何使用编码文件。

    万事俱备,开始!

    一、将需要的文件拷贝到项目下

    1、新建项目,在项目的根目录新建一个“poppler”文件夹,将Poppler开源库中poppler-20.12.1/poppler-20.12.1/qt5/src/目录下的文件都丢进去。

    2、将已编译好的Poppler库中的libpoppler.dll、libpoppler-qt5.dll、libpoppler.dll.a、libpoppler-qt5.dll.a也复制到项目根目录的"poppler"文件夹下。

    3、在项目根目录的"poppler"文件夹下新建"share"文件夹,在"share"文件夹下新建"poppler"文件夹。将Poppler编码文件包下的cidToUnicode、cMap、nameToUnicode、unicodeMap四个文件夹拷贝到"项目根目录\poppler\share\poppler\"文件夹下。注意,这一步非常关键!我没有吃饱了撑的在"poppler"下新建个"share"文件夹,又在"share"下新建个"poppler"文件夹。

    这样在Qt Creator下执行程序时,程序才会检测到编码文件,才能正确显示中文。

    在Linux系统下,很多文章都说过使用"sudo apt-get install poppler-data"命令安装poppler-data即可解决中文乱码问题,就是没有人指导在windows下怎么解决poppler解析中文的问题,这让我思考了很久。看poppler-data的文档,受到启发,猜到编码文件一定是要放在特定的地方才能被程序检测到。试了几次,发现上面的方法。

    提前说一下:在正式发布程序时,还要把项目根目录\poppler\文件夹下的share文件夹拷贝到程序的根目录,这样发布的程序才能正确解析中文字符,而且程序所在路径还不能含有中文,否则程序找不到编码文件,一样无法正确解析中文字符。这一问题,可能需要修改并重新编译Poppler库才能解决,还是留给高手们吧,我们能用就行。

    4、最终,项目根目录下,"poppler"文件夹的文件结构如下:

    项目根目录\poppler\
    │  CMakeLists.txt
    │  Doxyfile
    │  libpoppler-qt5.dll
    │  libpoppler-qt5.dll.a
    │  libpoppler.dll
    │  libpoppler.dll.a
    │  Mainpage.dox
    │  poppler-annotation-helper.h
    │  ......
    │  
    └─share
        └─poppler
            ├─cidToUnicode
            │      Adobe-CNS1
            │      ......
            │      
            ├─cMap
            │  ├─Adobe-CNS1
            │  │      Adobe-CNS1-0
            │  │      ......
            │  │      
            │  ├─Adobe-GB1
            │  │      Adobe-GB1-0
            │  │      ......
            │  │      
            │  ├─Adobe-Japan1
            │  │      78-EUC-H
            │  │      ......
            │  │      
            │  ├─Adobe-Japan2
            │  │      Adobe-Japan2-0
            │  │      
            │  ├─Adobe-Korea1
            │  │      Adobe-Korea1-0
            │  │      ......
            │  │      
            │  └─Adobe-KR
            │          Adobe-KR-0
            │          ......
            │          
            ├─nameToUnicode
            │      Bulgarian
            │      Greek
            │      Thai
            │      
            └─unicodeMap
                    Big5
                    ......
                    
    

    二、配置pro文件,引用头文件和库文件

    在项目的工程文件*.pro中添加如下内容。因为是在windows下,所以添加win32前缀。

    INCLUDEPATH += $$PWD/poppler
    win32: LIBS += -L$$PWD/poppler -llibpoppler
    win32: LIBS += -L$$PWD/poppler -llibpoppler-qt5

    三、使用Poppler类

    在程序源文件中包含poppler-qt5.h头文件

    #include "poppler-qt5.h"

    打开并加载一个PDF文档

    QString filename=QFileDialog::getOpenFileName(this,QString::fromUtf8("打开"),"","pdf file (*.pdf)");//获取pdf文件路径
    if(filename.isEmpty()){
        return;//如果文件路径为空则返回
    }
    Poppler::Document* document = Poppler::Document::load(filename);//加载pdf文件
    if (!document || document->isLocked()) {
    
      ui->label_message->setText(QString::fromUtf8("无法打开文件:%1").arg(filename));//如果加载不成功,输出错误信息,并返回
    
      delete document;
      return;
    }

    将PDF文档的每一页输出为QImage图像

    //再次检查document是否可用                                                     
    if (document == 0) {                                                           
      ui->label_message->setText(QString::fromUtf8("文件内无内容:%1").arg(filename));//不可用则输出错误信息,并返回    
      return;                                                                      
    } 
    
    //将PDF文档的每一页输出为QImage
    for(int pageNumber=0;pageNumber<document->numPages();pageNumber++){
    
      //获取指定页码的页面,页码从0开始
      Poppler::Page* pdfPage = document->page(pageNumber);
      if (pdfPage == 0) {                                                               
        qDebug() << QString::fromUtf8("获取页面失败:%1").arg(filename);//如果获取页面失败,输出错误信息并返回
        return;                                                                         
      }
    
      //将页面内容转换为QImage
      double xres=72.0, yres=72.0; int x=-1, y=-1, width=-1, height=-1;                                 
      QImage image = pdfPage->renderToImage(xres, yres, x, y, width, height);           
      if (image.isNull()) {                                                                            
        qDebug() << QString::fromUtf8("pdf转图片失败:%1").arg(filename);//如果输出为QImage失败,输出错误信息并返回 
        return;                                                                                        
      }  
      
      //使用QImage,可以让QImage显示在QLabel中,或者进一步处理,作其他用途……
    
      //使用完后记得释放掉Poppler::Page* pdfPage
      delete pdfPage; 
    }

    最后,别忘了释放掉document

    delete document;

    在将PDF页面输出为QImage的过程中,有个关键的函数:QImage Poppler::Page::renderToImage ( double xres = 72.0, double yres = 72.0, int x = -1, int y = -1, int w = -1, int h = -1, Rotation rotate = Rotate0 )。在应用过程中,我换了几个参数,输出效果都不尽人意。最终还是使用了默认的参数,输出效果最好。这几个参数还有待日后慢慢理解吧,这里先将官方文档翻译如下,便于自己日后回忆。

    QImage Poppler::Page::renderToImage(double xres = 72.0,double yres = 72.0,int x = -1,int y = -1,int w = -1,int h = -1,Rotation rotate = Rotate0 )const

    该函数使用 Document renderer 将PDF页面转换为QImage并输出。

    如果 x = y = w = h = -1, 该函数将会根据参数xres和yres定义的水平和垂直分辨率自动计算待生成图像的大小。否则,该函数仅转换由参数(x、y、w、h)定义的页面的一部分。转换后的QImage的大小由 (wh)定义,而与PDF页面的大小无关。(我理解x,y,w,h四个参数所定义的矩形框是一个“选取框”,如果该矩形框在PDF页面内,那么就将PDF页面在矩形框内的部分输出为QImage图像。如果x = y = w = h = -1,则将这个PDF页面输出为QImage图像。)

    参数

    x定义矩形框左上角的X坐标(以像素为单位)
    y定义矩形框左上角的y坐标(以像素为单位)
    w定义矩形框的宽度(以像素为单位)
    h定义矩形框的高度(以像素为单位)
    xres定义绘图设备的水平分辨率,单位为“点/英寸”。(比如xres=72代表水平方向每英寸有72个点)
    yres定义绘图设备的垂直分辨率,单位为“点/英寸”。
    rotate

    定义如何旋转页面。这是一个Poppler::Page::Rotation枚举类型。

    Rotate0代表不旋转。

    Rotate90代表顺时针旋转90度。

    Rotate180代表旋转180度。

    Rotate270代表顺时针旋转270度(即逆时针旋转90度)

    注意

    参数(x,y,w,h)没有进行严格的测试。异常或无意义的参数可能会得到意想不到的输出结果。

    返回值

    返回一幅QImage图像。如果转换失败,返回一个空QImage

    四、发布程序

    发布程序时记得将项目根目录\poppler\下的libpoppler.dll、libpoppler-qt5.dll和share文件夹全部复制到程序根目录。有share文件夹和share文件夹内的编码文件,读取中文PDF文档时就不会出现乱码或中文不显示的问题。再次强调,注意程序路径不能含有中文字符!有空格倒没关系。使用人家编译好的东西就是有这样那样的小问题。

    五、其他用法

    列出一些自己摸索Poppler Qt5的过程中使用过的程序片段

    统计PDF文档中嵌入文件的数量

    const QList< Poppler::EmbeddedFile * > embedded = document->embeddedFiles ();
    qDebug() << "EmbeddedFile count:" << embedded.count();

    遍历PDF文档中所使用的所有字体

    const QList<Poppler::FontInfo> fonts = document->fonts();
    Q_FOREACH (const Poppler::FontInfo &font, fonts) {         
            if (font.name().isNull()) {                        
                qDebug() << "font name:" << "[none]";          
            } else {                                           
                qDebug() << "font name:" << font.name();       
            }                                                  
            qDebug() << "type name:" << font.typeName() <<     
            "is embedded:" << font.isEmbedded() <<             
            "subset:" << font.isSubset() <<                    
            "file:" << font.file();                            
     }                                                     

    获取PDF文档中某一页的所有文本

    QList<Poppler::TextBox * >texts = pdfPage->textList();//pdfPage是一个Poppler::Page的指针
    for(int i=0;i<texts.count();i++){
        //boundingBox()函数返回的是一个QRectF的矩形框,这个矩形框就定义了文本的大小和位置
        qDebug() << "Text:" << texts.at(i)->text() << "\nBoundingBox:" << texts.at(i)->boundingBox();//输出文本内容和文本框的大小、位置
        for(int j=0;j<texts.at(i)->text().count();j++){                                              
            qDebug() << "Char[" << j << "]:" << texts.at(i)->charBoundingBox(j);//甚至可以输出每个文本中的字符和字符的大小、位置
        }                                                                           
    }

     

    展开全文
  • Qt使用Poppler-qt5操作PDF文件

    热门讨论 2014-04-02 22:58:41
    Qt使用Poppler-qt5操作PDF文件 原文 http://blog.csdn.net/hellogdut/article/details/22827431
  • 因此,随Windows 7和OS X预编译的Poppler一起分发了racket-poppler。感谢Matthew Flatt提供了这些二进制文件。 Poppler的许可证为GPL,因此无法与Racket一起分发。 注意:请使用Racket的开发版本-使用比当前发行版...
  • poppler-0.42.0.tar.xz

    2020-07-23 00:22:04
    我是用来测试qt
  • poppler-0.90.0.tar.xz

    2020-07-23 00:21:08
    我是用来测试qt
  • [![language] [code-shield]] [code-url] [![language-top] [code-top]] [code-url] [![discord] [discord-shield]] [discord-url] 注意:对于v17及更早版本,请将manifest.json移动到Contents ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,914
精华内容 765
关键字:

Poppler