“java.io.IOException:这可能不是PDF文件”
我想从url读取pdf文件并将其转换为缩略图。我正在使用以下代码。我没有在这里包括转换部分。问题出在pdffile=new PDFFilebuf;我得到一个异常java.io.IOException:这可能不是PDF文件。但我可以在浏览器上看到pdf。我怎么了?请帮帮我“java.io.IOException:这可能不是PDF文件”,java,pdf,Java,Pdf,我想从url读取pdf文件并将其转换为缩略图。我正在使用以下代码。我没有在这里包括转换部分。问题出在pdffile=new PDFFilebuf;我得到一个异常java.io.IOException:这可能不是PDF文件。但我可以在浏览器上看到pdf。我怎么了?请帮帮我 byte[] byteArray = null; InputStream is = null; String streamTo = null; BufferedImage bmg = null;
byte[] byteArray = null;
InputStream is = null;
String streamTo = null;
BufferedImage bmg = null;
PDFFile pdffile;
ByteBuffer buf;
int pageNumber = 1;
try {
is = fetchImageFromServer(url); //Pdf Url path
if (!pageNumber.isEmpty()) {
streamTo = is.toString();
byteArray = streamTo.getBytes();
buf = ByteBuffer.wrap(byteArray);
pdffile = new PDFFile(buf);
}
} catch (IOExceptio e) {
}
您必须阅读流的内容。toString不会这样做。您必须读取流的内容。toString不会这样做。PDf是一个二进制对象。如果将其转换为字符串,它将更改字节值并中断文件。PDf是一个二进制对象。如果将其转换为字符串,它将更改字节值并中断文件。is.toString调用不会正确读取所有字节。有一个实用功能,将帮助您。试试这个:
is = fetchImageFromServer(url); //Pdf Url path
if (!pageNumber.isEmpty()) {
byteArray = IOUtils.toByteArray(is);
buf = ByteBuffer.wrap(byteArray);
pdffile = new PDFFile(buf);
}
is.toString调用无法正确读取所有字节。有一个实用功能,将帮助您。试试这个:
is = fetchImageFromServer(url); //Pdf Url path
if (!pageNumber.isEmpty()) {
byteArray = IOUtils.toByteArray(is);
buf = ByteBuffer.wrap(byteArray);
pdffile = new PDFFile(buf);
}
您应该提到您正在使用哪个库来执行此操作-Pdfile不是标准的Java类。我为我公司的Java PDF组件套件写了这篇文章,但它做了您正在尝试做的事情。我知道的不多。如果我的部件出现任何故障或给我任何建议,请提供帮助。+1,代码中有轻微错误:一个额外的while和一个空块:while ballength=is1.readba1!=-1{fos1.writeb1,0,ballength;}而ballength!=-1.谢谢你,莫里斯。我很惊讶它在没有警告的情况下编译。我已经修复了这个错误。您应该提到您正在使用哪个库来执行此操作-Pdfile不是标准的Java类。请尝试本文-。我为我公司的Java PDF组件套件写了这篇文章,但它做了您正在尝试做的事情。我知道的不多。如果我的部件出现任何故障或给我任何建议,请提供帮助。+1,代码中有轻微错误:一个额外的while和一个空块:while ballength=is1.readba1!=-1{fos1.writeb1,0,ballength;}而ballength!=-1.谢谢你,莫里斯。我很惊讶它在没有警告的情况下编译。我已修复错误。感谢您的快速响应。请再解释一下+1@Sarika:只需阅读关于流的Java教程。。。这是标准知识,莫里斯不需要在这里复制。@Daniel:-1不是我标记的。昨天我离开了办公室。谢谢你的快速回复。请再解释一下+1@Sarika:只需阅读关于流的Java教程。。。这是标准知识,莫里斯不需要在这里复制。@Daniel:-1不是我标记的。昨天我离开了办公室。PDF文件格式是一个blob。如果将其转换为字符串,就像将PNG或其他二进制图像转换为字符串并返回一样。转换过程将改变一些字节,这将打破blob。@马克·斯蒂芬斯:谢谢-我没有标记1。昨天我离开了办公室。在Java中,字符串可以包含任何字符。如果您将某个内容转换为字符串,并将其转换回,则一切仍然正常!这不是C!当然,在一个方向上使用UTF8转换字节,如果要将其转换回来,就会出现错误。只要您确切地知道自己在做什么。如果使用某些writer/Stream函数,它可能会保持不变,但效率很低,并且可能会损坏blob。因此,建议一般避免PDF文件格式是blob。如果将其转换为字符串,就像将PNG或其他二进制图像转换为字符串并返回一样。转换过程将改变一些字节,这将打破blob。@马克·斯蒂芬斯:谢谢-我没有标记1。昨天我离开了办公室。在Java中,字符串可以包含任何字符。如果您将某个内容转换为字符串,并将其转换回,则一切仍然正常!这不是C!当然,在一个方向上使用UTF8转换字节,如果要将其转换回来,就会出现错误。只要您确切地知道自己在做什么。如果使用某些writer/Stream函数,它可能会保持不变,但效率很低,并且可能会损坏blob。因此建议一般避免