加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

php – 如何从pdf中提取文本图层和背景图层?

发布时间:2021-01-14 21:01:51 所属栏目:Linux 来源:网络整理
导读:在我的项目中,我要用HTML5 / CSS3做一个PDF查看器,应用程序必须允许用户添加注释和注释.实际上,我要做一些与crocodoc.com非常相似的事情. 一开始我正在考虑从PDF创建图像,并允许用户创建区域并将评论关联到此区域.不幸的是,客户还希望在此PDF中导航并仅添

在我的项目中,我要用HTML5 / CSS3做一个PDF查看器,应用程序必须允许用户添加注释和注释.实际上,我要做一些与crocodoc.com非常相似的事情.

一开始我正在考虑从PDF创建图像,并允许用户创建区域并将评论关联到此区域.不幸的是,客户还希望在此PDF中导航并仅添加对允许的部分的注释(例如,段落或选定的文本).

而现在我面临的一个问题是获取文本和最佳方法.如果有任何身体有一些线索我怎么能达到它,我将不胜感激.

我尝试了pdftohtml,但输出看起来不像真正复杂的原始文档(example of document).即使这个也没有真正反映出输出,但是比pdftohtml要好得多.

我对任何解决方案持开放态度,优先选择linux下的命令行.

最佳答案 我和你一样走在同一条路上,甚至还有更复杂的任务.

在尝试了所有的东西之后,我最终在Mono下使用C#(因此它在linux上运行)使用了iTextSharp.

即使有一个非常完整的库,如iTextSharp,一些任务需要分配试错:)

要从页面中提取文本很容易(请查看下面的修剪器),但是如果您打算保留文本坐标,字体和大小,则还有更多工作要做.

int pdf_page = 5;
string page_text = "";

PdfReader reader = new PdfReader("path/to/pdf/file.pdf");
PRTokeniser token = new PRTokeniser(reader.GetPageContent(pdf_page));
while(token.NextToken())
{
    if(token.TokenType == PRTokeniser.TokType.STRING)
    {
        page_text += token.StringValue;
    }
    else if(token.StringValue == "Tj")
    {
        page_text += " ";
    }
}

在所有标记上执行Console.WriteLine(token.StringValue),以查看文本段落在PDF中的结构.这样你就可以检测坐标,字体,字体大小等.

加成:

鉴于您需要完成的任务,我有一个建议:

使用坐标和字体系列和大小提取文本 – 有关每个段落的所有信息.然后,对于PDF到图像,在您的在线查看器中,在需要的图像上的段落上应用不可见的可选文本.

这样,您的用户可以根据需要选择文本的一部分,而无需在html中重建整个PDF

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读