2016-04-26 53 views
0

我想只提取使用提卡按照其网站上的教程一个PDF文件中的文本,但我刚开始25K行文字后面,看起来像这样的。提卡犯规输出文档内容

%PDF-1.5% μμμμ 1 0 OBJ < >>> endobj 2 0 OBJ <> endobj 3 0 OBJ <>/ProcSet [/ PDF /文本/ ImageB/ImageC/ImageI] >> /多媒体[0 0 612 792] /目录4 0 R /组<> /拉环/ S/StructParents 0 >> endobj 4 0 OBJ <> 流 XOE•Wßoâ8?〜Gâ ~Çät?Û±óCª“曲®î'+?t¼öÁ,@£祢?ÙëíóÙ??mºœ=žùfæóÌ“OO /º¹™〜™ÿqGrúÙm7?UÛɧ۸,éönN· õµ°¹?Ù{ ½AL®EL?‘˜k?ͯ?3-¤6”Z+ŠãýL’HÄiXÐßq?½Ä&ªø¹Œ'6ª!^ÇJ‡•—¡hÚXÉ zæÝvà–•É„ê;ü0?;\àú??ïò1š+#àßH©?¤ÊÒÒòR&R?³r’ÜHeg¥Ü±H†#©ýÚ ·?V0†ffË”?ê??àÀ¨ÌY4Ï?dvWN PKA€O 3§ ¥?þ?±R ?b /ùîYi±Z/.Urß™耶> ED IX÷”Bboùã½K™O = Y#CH 3 ?? U8>¡#DI¢即:???????û8øšA- C™DC‰?? ±d%邻d =e¿|§É;?%H“白??çcW®º@小号ÝGn4÷UTHR#M +¨Åö5ιμ¸Ûè¥q±2ÑOH«Ýž0®???? :rO¯Ü¸UÓšÑíƒ+Š³`ý»¶Ž• U型oiýÌ^väh_o7ŒÐT8÷〜“我

与尝试它时,我也得到了同样的事情?!?的.docx格式太多,但它正常工作与.TXT。没有人知道我在做什么错?

BodyContentHandler handler = new BodyContentHandler(-1); 

     Metadata metadata = new Metadata(); 
     FileInputStream inputstream = new FileInputStream(new File("fake.pdf")); 
     ParseContext pcontext=new ParseContext(); 

     //Text document parser 
     TXTParser TexTParser = new TXTParser(); 

     TexTParser.parse(inputstream, handler, metadata,pcontext); 
     System.out.println("Contents of the document:" + handler.toString()); 

回答

0

刚刚意识到我是使用TXTParser代替AutoDetectParser。有人可以关闭或删除这个问题吗?

3

的问题似乎是,你要使用一个TXTParser来解析PDF文档。 PDF代表Portable Document Format,其中包含文件中的二进制数据。

幸运Apache Tika配备了一个包装,会自动检测你试图解析该文件的格式。

尝试从Tika Documentation这个例子:

public String parseExample() throws IOException, SAXException, TikaException { 
    AutoDetectParser parser = new AutoDetectParser(); 
    BodyContentHandler handler = new BodyContentHandler(); 
    Metadata metadata = new Metadata(); 
    try (InputStream stream = ParsingExample.class.getResourceAsStream("test.pdf")) { 
     parser.parse(stream, handler, metadata); 
     return handler.toString(); 
    } 
}