Java 尝试在“我的浏览器”中查看PDF文件时,PDF将呈现为文本内容
我有一个错误,当我想下载或在网络浏览器中看到一个pdf文件,不知何故,该文件是以文本形式生成的。有人有这个问题吗 这是我的代码:Java 尝试在“我的浏览器”中查看PDF文件时,PDF将呈现为文本内容,java,pdf,jsf,servlets,response,Java,Pdf,Jsf,Servlets,Response,我有一个错误,当我想下载或在网络浏览器中看到一个pdf文件,不知何故,该文件是以文本形式生成的。有人有这个问题吗 这是我的代码: public void downloadPDF(File ArchivoPDF, String NombrePDF) throws IOException{ FacesContext facesContext = FacesContext.getCurrentInstance(); ExternalContext externalContext =
public void downloadPDF(File ArchivoPDF, String NombrePDF) throws IOException{
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
BufferedInputStream input = null;
BufferedOutputStream output = null;
try{
input = new BufferedInputStream(new FileInputStream(ArchivoPDF),DEFAULT_BUFFER_SIZE);
response.reset();
response.setHeader("Content-Type","application/pdf");
response.setHeader("Content-Length",String.valueOf(ArchivoPDF.length()));
response.setHeader("Content-Disposition","attachment; filename=\"" + NombrePDF + ".pdf\"");
output = new BufferedOutputStream(response.getOutputStream(),DEFAULT_BUFFER_SIZE);
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
int length;
while((length = input.read(buffer)) > 0){
output.write(buffer,0,length);
}
output.flush();
} finally{
close(output);
close(input);
}
facesContext.responseComplete();
}
private static void close(Closeable resource){
if(resource != null){
try{
resource.close();
} catch(IOException e){
e.printStackTrace();
}
}
}
我的组件命令按钮是:
<a4j:commandButton id="btnGenerarAllPDF" style="width:130px;"
rendered="#{clsGestionReclamoRealSrv.objComponente.blVerBtnGenerarExpedienteElectronico}"
value="Generar Expediente"
onclick="#{rich:component('modCargando')}.show();"
action="#{clsGestionReclamoRealSrv.doGenerarAllPDF}"
oncomplete="#{rich:component('modCargando')}.hide();"
reRender="frmRegistrarReclamo"/>
结果是浏览器中的文本
他们知道如何修复它。我认为设置内容类型的适当方法如下:
response.setContentType("Content-Type","application/pdf");
response.setHeader("Content-Disposition", "inline; filename=\"" + NombrePDF + ".pdf\";");
这可以按预期将您的文件下载为pdf
。要在浏览器中查看文件,请尝试以下操作:
response.setContentType("Content-Type","application/pdf");
response.setHeader("Content-Disposition", "inline; filename=\"" + NombrePDF + ".pdf\";");
嗨,把目标改成空白,它就成功了。你可以在不占用大量带宽的情况下加载pdf?