有关pdfbox-1.3.1中Identity-H编码为乱码的解决方法

使用lucene和pdfbox-1.3.1索引PDF时遇到Identity-H编码导致的乱码问题。通过对比1.2.1版本,发现1.3.1缺少处理此编码的代码。将处理Identity-H的代码添加到1.3.1版本,并尝试添加adobe-gb1-us2转码表,最终解决了乱码问题。
摘要由CSDN通过智能技术生成

最近用lucene做一个搜索文档的小程序,其中索引pdf文件时使用pdfbox1.3时出现乱码。

索引pdf的函数如下:(使用pdfbox-1.3.1.jar以及fontbox-1.3.1.jar)

package luceneTest;

import java.io.File;
import java.io.Reader;
import java.io.StringReader;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;

public class LucenePdf {
  public static Document getDocument(File pdf){
             String pdfpath = pdf.getAbsolutePath();
             PDDocument pdDocument = null;
             Document document = new Document();
             String title = pdf.getName();
             try{

                pdDocument = PDDocument.load(pdf);
                PDFTextStripper stripper = new PDFTextStripper();
                String s1 = stripper.getText(pdDocument);
                System.out.println(s1);
                 Reader contents = new StringReader(s1);
                 document.add(new Field("title", title, Field.Store.YES, Field.Index.ANALYZED));
          document.add(new Field("contents",contents));
          document.add(new Field("path", pdfpath, Field.Store.YES, Field.Index.NO));
   pdDocument.close();
       }catch(Exception e){
   e.printStackTrace();
       }
       return document;
  }
}

结果出现了乱码,调试时发现pdf文档的编码格式为Identify-H。我又用了pdfbox-1.2.1.jar来替换pdfbox-1.3.1.jar,结果该文档可以正常显示。通过比较两个不同版本中的org.apache.pdfbox.pdmodel.font.PDFont源代码,我发现1.2.1中有一段代码专门用来处理Identity-H编码,而在1.3.1中则没有。于是将这段代码放入1.3.1版本中的PDFont中。

下面是pdfbox-1.3

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值