Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“java.io.IOException:这可能不是PDF文件”_Java_Pdf - Fatal编程技术网

“java.io.IOException:这可能不是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;

我想从url读取pdf文件并将其转换为缩略图。我正在使用以下代码。我没有在这里包括转换部分。问题出在pdffile=new PDFFilebuf;我得到一个异常java.io.IOException:这可能不是PDF文件。但我可以在浏览器上看到pdf。我怎么了?请帮帮我

    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。因此建议一般避免