我正在开发一个PDF解析器/编写器,但我坚持生成交叉引用流.我的程序读取此文件,然后删除其线性化,并解压缩对象流中的所有对象.最后,它构建PDF文件并保存.
当我使用正常的交叉引用和预告片时,这非常有效,正如您在此文件中看到的那样.
当我尝试生成交叉引用流对象时(导致此文件,Adobe Reader无法查看它).
有没有人使用PDF,可以帮助我搜索问题所在?
请注意,交叉引用是文件2和文件3之间的唯一区别.前34127个字节是相同的.
如果有人需要解码参考流的内容,请下载此文件并在HEX编辑器中打开它.我一次又一次检查了这个参考表,但我找不到任何错误.但字典似乎也没问题.
非常感谢你的帮助!!!
更新
我现在已经彻底解决了这个问题.您可以在此处找到新PDF .
我正在使用Jsoup.parse解析一段html.
其他一切都很棒,但我应该稍后在pdf转换器中解析这个HTML.
由于某种原因,Jsoup.parse删除了结束标记,而pdf-parser抛出了关于缺少关闭img标记的异常.
Can't load the XML resource (using TRaX transformer). org.xml.sax.SAXParseException;
lineNumber: 115; columnNumber: 4; The element
type "img" must be terminated by the matching end-tag "</img>"
Run Code Online (Sandbox Code Playgroud)
如何防止Jsoup.parse删除关闭的img标记?
例如这一行:
<img src="C:\path\to\image\image.png"></img>
Run Code Online (Sandbox Code Playgroud)
转向:
<img src="C:\path\to\image\image.png">
Run Code Online (Sandbox Code Playgroud)
同样的情况:
<img src="C:\path\to\image\image.png"/>
Run Code Online (Sandbox Code Playgroud)
这是代码:
private void createPdf(File file, String content) throws IOException, DocumentException {
OutputStream os = new FileOutputStream(file);
content = tidyUpHTML(content);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(content);
renderer.layout();
renderer.createPDF(os);
os.close();
}
Run Code Online (Sandbox Code Playgroud)
这是上面方法中调用的tidyUpHTML方法:
private String tidyUpHTML(String html) {
org.jsoup.nodes.Document doc = Jsoup.parse(html);
doc.select("a").unwrap();
String fixedTags …Run Code Online (Sandbox Code Playgroud) 我正在使用流星反应将PDF文档上传到我的Node.js后端,在这里我想以json或其他方式读取上传的PDF文档。可能吗?您会为此推荐什么库/工具?谢谢!
我想从pdf 文档中提取一个表
我尝试了pdf的路线 - > html - >提取表.转换为html时我上面提到的pdf产生垃圾,可能是因为字体,文件不是英文的.
因为这样的解决方案需要从URL上面提到的,这将有表,但不总是在相同的位置未来的PDF工作用x提取PDF和y坐标是不是一种选择.
请帮忙,
提前致谢.
PDF可以在几个部分中定义透明度(参见此处):
作为图形样式属性:
/ca)或stroke opacities(/CA)填充到1.0以下\SMask)或者使用透明度页面组(/S /Transparency)的定义.
以下grep表达式是对此的快速(和脏)检查:
grep -aE -e '/[Cc][Aa] +0?\.[0-9]' -e '/SMask' -e '/S /Transparency' *.pdf
Run Code Online (Sandbox Code Playgroud)
是否可以检查是否有透明物体gs?
我正在使用 poppler 实用程序将 PDF 文档转换为 HTML。但它为每个页面创建单独的 html 文件,但在将 pdf 转换为 html 后我想要一个单独的 HTML 文件。
我使用了以下语法:
pdftohtml -c abc.pdf
Run Code Online (Sandbox Code Playgroud)
但它创建了 abc-1.html、abc-2.html、.... 等
我也尝试过 pdftohtml -c abc.pdf abc.html但没有得到预期的输出。
谁能告诉如何在单个文件而不是多个 html 文件中获取 html 输出?
我有一个pdf,只包含文本,没有特殊字符或图像等.是否有任何Perl模块(看cpan无济于事)帮我逐行解析每个页面?(将PDF转换为文本会产生错误结果和不可解析的数据)
谢谢,
我想将pdf转换为csv文件.pdf文件具有表格格式的数据,第一行作为标题.我已达到可以从单元格中提取文本的级别,比较表格中的文本基线并检测换行符,但我需要比较表格边框以检测表格的开始.我不知道如何检测和比较PDF中的行.谁能帮我?
谢谢!!!
我想用iText 解析这个文件(http://www.bbm.ca/_documents/top_30_tv_programs_english/2011/nat01032011.pdf).问题是它没有被标记,所以我无法获取XML文件.我决定从中提取文本,我认为例如第一行将是:
1\specialCharWJC:PLAYOFFS CANADA\specialCharTSN+\specialCharM.W....\specialChar19:30\specialChar21:57\specialChar5133
Run Code Online (Sandbox Code Playgroud)
我为第一行提取的文字是
1 WJC:PLAYOFFS CANADA TSN+ M.W.... 19:30 21:57 5133
Run Code Online (Sandbox Code Playgroud)
我使用以下方法提取文本:
PdfReader reader = new PdfReader(filename);
String str = PdfTextExtractor.getTextFromPage(reader, 1);
Run Code Online (Sandbox Code Playgroud)
PDf观众如何知道加拿大在第二列不在第三列.
我目前的解决方案是使用http://www.idrsolutions.com/online-pdf-to-html5-converter/将pdf文件转换为html5 ,后者可以确定每列的文本.
感谢您的答复
使用peepdf我正在分析两个简单的 pdf 文件。这两个文件都包含一行文本(“ZYXWVUTSRQQRSTUVWXYZ”)并且是在 Mac OS X 上创建的。
第一个文件是用 TextEdit 创建的。只有三个流,看第一个(用peepdf自动解码)可以清楚地显示文本。
PPDF> stream 4
q Q q 72 707.272 468 12.72803 re W n /Cs1 cs 0 sc q 0.9790795 0 0 -0.9790795 72 720
cm BT 0.0001 Tc 11 0 0 -11 5 10 Tm /TT1 1 Tf (ZYXWVUTSRQQRSTUVWXYZ) Tj ET
Q Q
Run Code Online (Sandbox Code Playgroud)
第二个文件是用 MS Word 创建的。有四个流,但无法找到解码的文本。查看 Word 文档中的相应流不会显示解码的字符串:
PPDF> stream 4
q Q q 18 40 576 734 re W n /Cs1 cs 0 0 0 sc …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个脚本来修复 PDF,这些 PDF 是通过 Autocad 的 DWG2PDF 打印驱动程序导出的大量 PDF。
使用此驱动程序时,所有 SHX 字体都呈现为形状数据而不是文本数据,但它们确实会在 PDF 的预期位置和预期文本中插入注释。
到目前为止,在我的脚本中,我已经让它运行整个 PDF 并在每个部分的顶部插入隐藏文本,并将文本压缩到评论的大小,这让我完成了 90% 的工作,并为我提供了一个文档可搜索。
不幸的是,评论区域的大小相对较粗(基于整数),这使得很难准确确定短文本的方向,并导致文本周围的框大小不均匀。
我想要做的是解析 PDF 中的形状数据,收集注释范围内的所有内容,然后确定一个更小、更准确的边界框。然而,我能找到的所有信息都是人们试图解析文本数据,而我在形状数据方面根本找不到任何信息。
下图是 PDF 中原始文本的示例,第二张图显示了蓝色的注释边界框,红色文本是我设置为隐藏的内容,以使文档可搜索和复制/粘贴。通过将框缩小固定的边距,我可以让事情变得更好一些,但是对于小文本项目,注释框坐标数据的低分辨率会使事情变得混乱。
为了实现这一目标,我使用了 PyPDF2 和 reportlab 的组合,但我愿意迁移到不同的库。
当我在 PDF 查看器中打开 PDF 时,我会在实际文档的左侧看到一系列书签。那里显示的信息似乎并未成为文档实际内容的一部分:它没有打印出来,也没有出现在特定页面上。
如何使用 Java 提取这些书签?
pdf-parsing ×12
pdf ×9
java ×3
python ×2
csv ×1
deflate ×1
ghostscript ×1
html-parsing ×1
itext ×1
itextsharp ×1
jsoup ×1
ms-word ×1
node.js ×1
parsing ×1
pdf-reader ×1
pdf-to-html ×1
perl ×1
poppler ×1
textedit ×1
transparency ×1