我们编写了一个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);
}
答案 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等库的代码。
你还没有开始战斗。