2015-06-09 194 views
0

我们已经编写了一个Java代码,我们正试图将PDF转换为Bytearray。PDF转ByteArray转换

但问题是,当我们尝试转换并尝试打印转换的输出时,我们只能得到8到10个字符。为什么?当我转换整个PDF文件时,它必须是大量的字符。

这里是我的代码:

public static void main(String[] args) 
    { 

      FileInputStream in = new FileInputStream(new File("C:\\test\\P12.pdf")); 
      FileOutputStream out = new FileOutputStream(new File("C:\\test\\pdfoutput.xml")); 

         byte[] buffer = new byte[1024]; 
      ByteArrayOutputStream bs = new ByteArrayOutputStream(); 
      int bytesRead; 
      while ((bytesRead = in.read(buffer)) != -1) 
      { 
       bs.write(buffer, 0, bytesRead); 
      } 
      System.out.println(in); 
      byte[] bytes = bs.toByteArray(); 

       System.out.println(bs.toString()); 
     out.write(bytes); 

} 
+0

这里没有转换。您已将PDF文件读取到一个字节数组中。它仍然是PDF格式。不能用'println()打印' – EJP

+0

你的问题有点不清楚。你想从PDF中提取所有文本数据吗? – Robert

+0

不,我不想读取所有文本数据..只是简单的PDF - > ByteArray格式就是这样。您能否让我知道我需要在哪里更改代码 –

回答

1

一个PDF是二进制数据。所以toString可能只是输出所谓的PDF签名,PDF +版本+一些有意的非ASCII字符。

由于XML更不可能。

存在例如读取PDF的itext库。

BTW in.close()也是一个好主意。

+0

而'out.close(),'并不试图打印输入流。 – EJP

0

我们已经写了一个java代码,我们试图将PDF转换为Bytearray。

不,你还没有。你已经编写代码读取一个文件,没有转换,一个字节数组。这是按位复制操作,不是转换。

但问题是,当我们尝试转换

这里没有转换,比ByteArrayOutputStream将字符串几乎肯定是无效的转换等。

,并尝试打印转换输出,我们只得到8到10个字符只有

你收到垃圾。二进制垃圾。你会得到原始的,未转换的PDF及其所有的二进制字符,可能包含大量的CR和BS字符。这不是一个有效的操作。解决方案:不要这样做。

为什么这样呢?

因为您还没有转换任何东西。

当我隐蔽整个PDF它必须是字符

毫无疑问的大不行,但是你有没有转换任何东西。如果您想要看到文本,请使用PDF查看器,或者编写一些使用iText等库的代码。

你还没有开始战斗。