当我打开 PDF 文件并将内容写入文本文件时,文本文件中的内容会混乱。我认为这是因为编码。据我了解,JVM将默认字符集设置为Cp1252
(因为我在 Windows XP 上运行)。我更改了默认字符集但没有结果 ( System.setProperty("file.encoding", "ISO-8859-1");
)
- 我尝试使用 IText 但生成的内容缺少一些带有变音符号的字母
有任何想法吗?
iText 没有正确读取所有字母的原因可能是由于字体使用的编码。你可以像这样声明字体:
BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED);
其中 BaseFont.CP1252 是使用的编码。请注意,某些字体不支持所有类型的编码。
使用 iText 助手类 PdfTextExtractor 应该可以正常工作。只需在将文件写入磁盘时检查您是否使用了正确的编码:
OutputStreamWriter out = new OutputStreamWriter( new FileOutputStream(file),"ISO-8859-1") );
你可以试试JavaPDF。它有一个 API 供您完成这项工作。您可以extractTextFromPage(int pageIndex)
从 PDFReader 类调用该方法。
我们的PDFTextStream库提供对变音符号以及 Unicode 标准中定义的所有字符集(包括中文、日文和韩文字符,水平和垂直书写模式)的全面支持。您可能会发现它可以正确提取其他工具无法正确提取的那些变音符号。
在某些情况下,一个字符在提取为文本时看起来与由 Acrobat 等 PDF 阅读器显示时的不同——这通常是使用基于图像的文本呈现所讨论的文本时的情况。字体(显然不会直接转换为文本,并且需要 OCR 过程才能导出正确的重音字符)。
iText 是一个从头开始创建 pdf 的 API,但是为了阅读和编辑现有文件,您可以查看以下链接 http://www.lowagie.com/iText/
您必须使用专门的软件包。我使用的两个是 pdftotext ( http://en.wikipedia.org/wiki/Pdftotext ) 和 PDFBox ( http://incubator.apache.org/pdfbox/ )。即使有一个包,你也不能总是保证成功,因为一些 PDF 编写工具质量很差,生成的 PDF 也很差。
PDF 是二进制文件,因此您不能将其作为文本文件读取。您将不得不寻找一些第三方库来阅读 PDF 内容。