Java:如何将PDF写入文本文件?

时间:2009-11-10 09:45:02

标签: java pdf text itext

当我打开PDF文件并将内容写入文本文件时,文本文件中的内容会混乱。我认为这是因为编码。根据我的理解,JVM将默认字符集设置为Cp1252(因为我在Windows XP上运行)。我已更改默认字符集但没有结果(System.setProperty("file.encoding", "ISO-8859-1");

  • 我试图使用IText,但结果内容缺少一些有变音符号的字母

有什么想法吗?

7 个答案:

答案 0 :(得分:4)

iText未正确读取所有字母的原因可能是由于字体使用的编码。您可以声明如下字体:

BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED);

其中BaseFont.CP1252是使用的编码。请注意,某些字体不支持所有类型的编码。

答案 1 :(得分:2)

您可以尝试JavaPDF。它有一个API供您完成这项工作。您可以从PDFReader类调用方法extractTextFromPage(int pageIndex)

答案 2 :(得分:2)

使用iText助手类PdfTextExtractor应该可以正常工作。在将文件写入磁盘时,只需检查您是否使用了正确的编码:

OutputStreamWriter out = new OutputStreamWriter( new FileOutputStream(file),"ISO-8859-1") );

答案 3 :(得分:1)

iText是一个从头开始创建pdf的API,但是为了读取和编辑现有文件,您可以查看以下链接 http://www.lowagie.com/iText/

答案 4 :(得分:1)

您必须使用专门的包。我使用的两个是pdftotext(http://en.wikipedia.org/wiki/Pdftotext)和PDFBox(http://incubator.apache.org/pdfbox/)。即使有了一个软件包,你也无法保证成功,因为一些PDF编写工具的质量很差,并且会产生糟糕的PDF。

答案 5 :(得分:1)

我们的PDFTextStream库为变音符提供全面支持,以及Unicode标准中定义的所有字符集(包括中文,日文和韩文字符,水平和垂直书写模式)。您可能会发现它可以在其他工具没有的情况下正确提取这些变音符号。

在某些情况下,当提取到文本时,字符看起来与Acrobat等PDF阅读器显示的字符不同 - 这种情况通常是使用以下方式呈现相关文本的情况。基于图像的字体(显然不会直接转换为文本,并且需要一个OCR过程才能获得正确的重音字符)。

答案 6 :(得分:0)

PDF是二进制文件,因此您无法将其作为文本文件读取。您将不得不寻找一些第三方库来阅读PDF内容。