【发布时间】:2017-03-01 15:26:48
【问题描述】:
我正在使用 iTextSharp 阅读 PDF 文件。我尝试用这个简单的代码阅读第一页的全文:
var pdfReader = new PdfReader("<fileName>");
var pageText = PdfTextExtractor.GetTextFromPage(pdfReader, 1, new SimpleTextExtractionStrategy());
它返回一个这样的字符串:
"\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 !\n\" \0 \0 \0 \ 0 \0 \0 # \0 $ \0 % \0 & $ \0 ' \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \ 0 \0 \0 \0 \0 \0 \0 !\n\" \0 \0 \0 (\n\0 \0 \0 ) \0 \0 * \0 + , \0 , \0 \0 & , \0 - \0 . # \0 \0 \0 & $ \0 , \0 /\n+ \0 & & \0 * 0 \0 1 .\n2 \0 3\n4 - \0 5 \0 \0 $ \0 \0 # \0 \0 \0 & $ \0 , \0 * & \0 \0 ' \0 .\n6\n\0 \0 \0 - \0 \0 \0 \0 & \0 \0 \0 \0 \0 \0 \0 , \0 # \0 \0 \0 & $ \0 , \0 \0 \0 & \0 # \0 \0 & $ ' ) & \ 0 \0 \0 \0 # \0 ' ' \0 7 - \0 $ \0 \0 7 \0 ' \0 , \0 8\n9 5 \0 \0 , \0 \0 $ $ \0 \ 0 \0 \0 \0 ' \0 \0 3\n\0 \0 \0 ) \0 \0 \0 \0 4 - \0 5 \0 \0 $ \0 \0 * & \0 \0 ' \0 .\n\0 \0 \0 \0 # \0 $ \0 $ \0 \0 ) \0 \0 \0 : 0 ; \0 ; \0 ? \0 ? \0 3 \0 (\n@\n\0 \0 # \0 $ \0 % \0 & $ \0 ’ \0 !3\n\0 ......"
我可以使用 Acrobat Reader 和浏览器阅读原始 PDF。该文件似乎是 PDF/A。
我使用的代码适用于其他 PDF。
iText 对这个标准有问题吗?
有人能指出正确的方向吗?
更新
从 Acrobat 复制/粘贴给我的文本损坏。我不认为这是 iTextSharp (5.5.10) 的问题。
更新
你可以试试这个文件: PDF Example
【问题讨论】:
-
AFAIK iTextSharp 适用于 PDF/A。当您提供任何其他 PDF 或 PDF/A 时,此方法是否正常工作?
-
尝试自己读取文件的
byte[]内容并将其传递给PdfReader构造函数。它必须与编码有关。 -
你能用 Acrobat 提取文本吗?
-
您没有提及您使用的是哪个版本的 iTextSharp。旧版本没有读取 toUnicode 映射。 iTextSharp 的标准没有任何问题,但一些声称是 PDF(页面上方的蓝丝带)的 PDF 并不是真正的 PDF/A 文件。您是否在 Acrobat 中对其进行了验证?
-
@Paulo - 从 Acrobat 复制/粘贴给我损坏的文本。