Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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 Itext pdf下载后无效_Java_Servlets_Itext - Fatal编程技术网

Java Itext pdf下载后无效

Java Itext pdf下载后无效,java,servlets,itext,Java,Servlets,Itext,当我下载签名的pdf文档时,Adobe Reader会将其显示为无效。我通常可以在本地项目文件夹的服务器上查看此文件,但当我通过servlet下载此文件时,此下载过程中的某些内容会使pdf无效。 这是我的servlet下载代码: response.setContentType("application/pdf"); response.setHeader("Expires", "0"); response.setHeader("Cache-Control","must-revalidate, po

当我下载签名的pdf文档时,Adobe Reader会将其显示为无效。我通常可以在本地项目文件夹的服务器上查看此文件,但当我通过servlet下载此文件时,此下载过程中的某些内容会使pdf无效。 这是我的servlet下载代码:

response.setContentType("application/pdf");
response.setHeader("Expires", "0");
response.setHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0");
response.setHeader("Content-Disposition","inline;filename=CompensationReport" + compensation+".pdf");
response.setHeader("Accept-Ranges", "bytes");

FileInputStream fis = new FileInputStream(thePdf1);
BufferedInputStream bis = new BufferedInputStream(fis);
ServletOutputStream sos = response.getOutputStream();
byte[] buffer = new byte[2048];
while (true) {
    int bytesRead = bis.read(buffer, 0, buffer.length);
    if (bytesRead < 0) {
        break;
    }
    sos.write(buffer, 0, bytesRead);
    sos.flush();
}
sos.flush();
bis.close();  
return;
response.setContentType(“application/pdf”);
response.setHeader(“Expires”、“0”);
setHeader(“缓存控制”,“必须重新验证,后检查=0,预检查=0”);
setHeader(“内容处置”,“内联;文件名=补偿报告”+补偿+”.pdf”);
setHeader(“接受范围”、“字节”);
FileInputStream fis=新的FileInputStream(thePdf1);
BufferedInputStream bis=新的BufferedInputStream(fis);
ServletOutputStream sos=response.getOutputStream();
字节[]缓冲区=新字节[2048];
while(true){
int bytesRead=bis.read(buffer,0,buffer.length);
如果(字节读取<0){
打破
}
写入(缓冲区,0,字节读取);
sos.flush();
}
sos.flush();
二、关闭();
返回;
如前所述,尝试设置内容长度

response.setContentLength(filebytesize);
如前所述,尝试设置内容长度

response.setContentLength(filebytesize);
如前所述,尝试设置内容长度

response.setContentLength(filebytesize);
如前所述,尝试设置内容长度

response.setContentLength(filebytesize);


这些文件有何区别,即服务器上磁盘上的文件和客户端接收到的文件?后一个被切断了吗?有人问我,我不太确定接受范围是否是一个好主意。你使用哪种浏览器?我在计算机上本地开发,当我尝试从项目文件夹打开文件时,它打开得很好,当我使用servlet下载选项下载文件夹时,Adobe Reader会说:此文档无效。如果没有签名字段,文档打开正常。我使用mozilla,它也会在预览中打开加载的文档,但通常情况下,浏览器不会显示签名字段show文件是否不同,即服务器上磁盘上的文件和客户端接收到的文件?后一个被切断了吗?有人问我,我不太确定接受范围是否是一个好主意。你使用哪种浏览器?我在计算机上本地开发,当我尝试从项目文件夹打开文件时,它打开得很好,当我使用servlet下载选项下载文件夹时,Adobe Reader会说:此文档无效。如果没有签名字段,文档打开正常。我使用mozilla,它也会在预览中打开加载的文档,但通常情况下,浏览器不会显示签名字段show文件是否不同,即服务器上磁盘上的文件和客户端接收到的文件?后一个被切断了吗?有人问我,我不太确定接受范围是否是一个好主意。你使用哪种浏览器?我在计算机上本地开发,当我尝试从项目文件夹打开文件时,它打开得很好,当我使用servlet下载选项下载文件夹时,Adobe Reader会说:此文档无效。如果没有签名字段,文档打开正常。我使用mozilla,它也会在预览中打开加载的文档,但通常情况下,浏览器不会显示签名字段show文件是否不同,即服务器上磁盘上的文件和客户端接收到的文件?后一个被切断了吗?有人问我,我不太确定接受范围是否是一个好主意。你使用哪种浏览器?我在计算机上本地开发,当我尝试从项目文件夹打开文件时,它打开得很好,当我使用servlet下载选项下载文件夹时,Adobe Reader会说:此文档无效。如果没有签名字段,文档将被打开。我使用mozilla,它也会在预览中打开加载的文档,但通常情况下,浏览器不会显示签名字段,但我使用ServletOutputStream sos=response.getOutputStream();这件事起作用了,我不知道是不是运气好,FileInputStream fis=newfileinputstream(thePdf1);response.setContentLength(fis.available());设置内容长度类似于设置标题和内容类型。@JovoKrneta
fis.available()
适用于
FileInputStream
实例。但是,对于
InputStream
,通常,
available()
不一定返回确切的总长度,而是只返回当前手头的数据量;这件事起作用了,我不知道是不是运气好,FileInputStream fis=newfileinputstream(thePdf1);response.setContentLength(fis.available());设置内容长度类似于设置标题和内容类型。@JovoKrneta
fis.available()
适用于
FileInputStream
实例。但是,对于
InputStream
,通常,
available()
不一定返回确切的总长度,而是只返回当前手头的数据量;这件事起作用了,我不知道是不是运气好,FileInputStream fis=newfileinputstream(thePdf1);response.setContentLength(fis.available());设置内容长度类似于设置标题和内容类型。@JovoKrneta
fis.available()
适用于
FileInputStream
实例。但是,对于
InputStream
,通常,
available()
不一定返回确切的总长度,而是只返回当前手头的数据量;这件事起作用了,我不知道是不是运气好,FileInputStream fis=newfileinputstream(thePdf1);response.setContentLength(fis.available());设置内容长度类似于设置标题和内容类型。@JovoKrneta
fis.available()
适用于
FileInputStream
实例。但是,对于
InputStream
,通常,
available()
不一定返回确切的总长度,而是只返回当前的数据量