繁体   English   中英

特殊字符未正确从pdf转换为文本

[英]Special characters are not converted correctly from pdf to text

我有一组包含中欧字符(例如č,Ď,Š等)的pdf文件。 我想将它们转换为文本,并且已经尝试通过Apache Tika进行pdftotextPDFBox ,但始终无法正确转换其中的一些。

奇怪的是,同一文本中的同一字符在某些地方正确转换,而在另一些地方错误转换! pdf是一个示例。

对于pdftotext,我正在使用以下选项:

pdftotext -nopgbrk -eol dos -enc UTF-8 070612.pdf

我的Tika代码如下所示:

          String newname = f.getCanonicalPath().replace(".pdf", ".txt");
          OutputStreamWriter print = new OutputStreamWriter (new FileOutputStream(newname), Charset.forName("UTF-16"));
          String    fileString = "path\to\myfiles\"
          try{

              is = new FileInputStream(f);

              ContentHandler contenthandler = new BodyContentHandler(10*1024*1024);
              Metadata metadata = new Metadata();
              PDFParser pdfparser = new PDFParser();

              pdfparser.parse(is, contenthandler, metadata, new ParseContext());
              String outputString = contenthandler.toString();

              outputString = outputString.replace("\n", "\r\n");
              System.err.println("Writing now file "+newname);
              print.write(outputString);

          }catch (Exception e) {
              e.printStackTrace();
            }
            finally {
               if (is != null) is.close();
               print.close();
            }

编辑:忘记提及从Acrobat Reader XI转换为文本时,我也面临相同的问题。

除了其他内容外,此代码还将使用平台默认编码:

PrintWriter print = new PrintWriter(newname);
print.print(outputString);
print.close();

我建议您使用OutputStreamWriter而不是包装FileOutputStream ,并指定UTF-8作为编码(因为它可以编码所有Unicode,并且通常受到很好的支持)。

您还应该在finally块中关闭作家,而我可能会将“阅读”部分与“写作”部分分开。 (我也避免捕获Exception ,但是进入异常处理的细节超出了此答案的范围。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM