PDF到ByteArray转换

时间:2015-06-09 13:39:38

标签: java pdf

我们编写了一个java代码,我们正在尝试将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);

} 

2 个答案:

答案 0 :(得分:1)

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

因为XML的可能性更小。

例如,存在用于读取PDF的itext库。

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

答案 1 :(得分:0)

  

我们编写了一个java代码,我们正在尝试将PDF转换为Bytearray。

不,你没有。您编写的代码读取 文件,无需转换,转换为字节数组。这是一个按位复制操作,而不是转换。

  

但问题是当我们尝试转换

此处没有转换,除了几乎肯定无效的ByteArrayOutputStream转换为String。

  

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

你得到了垃圾。二进制垃圾。您将获得原始的,未转换的PDF及其所有二进制字符,可能包括许多CR和BS字符。这不是一个有效的操作。解决方案:不要这样做。

  

为什么会这样?

因为你没有转换任何东西。

  

当我隐藏整个pdf时,它必须是一个很大的字符

毫无疑问,但你尚未转换任何东西。如果要查看文本,请使用PDF查看器,或编写一些使用iText等库的代码。

你还没有开始战斗。