【发布时间】:2014-04-24 18:29:10
【问题描述】:
好的,我正在尝试使用 iTextSharp 从 PDF 文件中提取文本……这就是我想要的。但是,当我提取文本时,它给我的是垃圾而不是文本。
这是我正在使用的代码...
List<String> pdfText = new List<string>();
for (int page = 1; page <= reader.NumberOfPages; page++)
{
ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.LocationTextExtractionStrategy();
String strPage = PdfTextExtractor.GetTextFromPage(reader, page, its);
strPage = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default,
Encoding.UTF8, Encoding.Default.GetBytes(strPage)));
pdfText.Add(strPage);
}
然后我将该数据保存到一个文本文件中,但我得到的不是可读文本,而是看起来像二进制数据的文本......到处都是不可打印的字符。我会发布我所看到的图像,但它不会让我。对此感到抱歉。
我已经尝试过不进行编码尝试,但它并没有更好地工作......仍然是二进制数据(在记事本中查看),尽管我不确定它与编码尝试产生的数据相同。
知道发生了什么以及如何解决它吗?
【问题讨论】:
-
看看这是否对初学者有帮助stackoverflow.com/a/10191879/231316
-
请提供有问题的 PDF 文件。有些 PDF 文件不包含如何将字形标识符转换为 Unicode 的信息,有些甚至试图误导。
-
克里斯,我不确定这是否是问题所在,因为我尝试了没有编码行的代码,但问题仍然存在。不过,我会再试一次,只是为了覆盖所有基础。
-
mkl,如果 PDf 采用自定义编码方法,除非 PDF 文件包含处理它所需的信息,否则 Adobe 如何正确显示它?无论如何,我要解析的 PDF 文件可以位于以下网址:fileshare.homestead.com/files/share/…
-
如果 PDf 采用自定义编码方法,除非 PDF 文件包含处理它所需的信息,否则 Adobe 如何正确显示它? - PDF 可以包含嵌入的字体。如果他们这样做了,所有关于编码“含义”的信息都可以省略; PDF 需要包含的所有内容都是针对所用编码的每个字节的一组图形渲染指令。它确实不需要该图形表示哪个Unicode字母的信息。
标签: c# .net pdf itextsharp