【问题标题】:Java: how to write out PDF to a text file?Java:如何将 PDF 写入文本文件?
【发布时间】:2009-11-10 09:45:02
【问题描述】:

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

  • 我尝试使用 IText,但生成的内容缺少一些带有变音符号的字母

有什么想法吗?

【问题讨论】:

    标签: java pdf text itext


    【解决方案1】:

    iText 无法正确读取所有字母的原因可能是字体使用的编码。你可以像这样声明字体:

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

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

    【讨论】:

    • 非常感谢,您的建议解决了部分问题:D Cheers
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 感谢您的回复,这让我的工作轻松了很多,但仍然没有解决我的一些变音符号问题
      【解决方案4】:

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

      【讨论】:

      • 我尝试使用 IText,但在结果内容中缺少一些带有变音符号的字母。有什么想法吗?谢谢
      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        在某些情况下,提取到文本的字符与由 Acrobat 等 PDF 阅读器显示时显示的字符不同 - 最常见的情况是使用基于图像的字体(显然不会直接转换为文本,并且需要 OCR 过程才能获得正确的重音字符)。

        【讨论】:

          【解决方案7】:

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

          【讨论】:

          • 你对,谢谢你的回复......我尝试使用 IText,但结果内容中缺少一些带有变音符号的字母有什么想法吗?谢谢
          猜你喜欢
          • 2019-01-15
          • 1970-01-01
          • 1970-01-01
          • 2011-02-16
          • 2018-07-06
          • 1970-01-01
          • 2018-10-19
          • 2014-09-26
          • 1970-01-01
          相关资源
          最近更新 更多