jsf页面中包含html页面,html – 如何在JSF页面上显示PDF

博主尝试在JSF页面上以非iframe方式显示PDF文件,期望像图片一样内联显示并可设置宽度和高度。他们提供了一个Servlet代码片段,但目前该代码仍然导致PDF文件被下载而不是在页面上直接显示。问题在于响应头的设置可能不正确,导致浏览器未能正确处理PDF内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我想在我的JSF页面上显示一个PDF文件,我已经检查了这个

how to display a pdf document in jsf page in iFrame,但我不想在iframe上显示它(因为它会生成滚动条).我只想将pdf显示在像图像这样的页面上,并能够为它提供宽度和高度.

编辑你好BalusC.我仍然无法显示pdf内联.这是我的代码.

@WebServlet(name = "pdfHandler",urlPatterns = {"/pdfHandler/*"})

public class pdfHandler extends HttpServlet {

private static final int DEFAULT_BUFFER_SIZE = 10240;

protected void processRequest(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException {

String requestedFile = request.getPathInfo();

File file = new File("/Users/KingdomHeart/Downloads/Test/pdf/" + requestedFile);

response.reset();

response.setContentType("application/pdf");

response.setBufferSize(DEFAULT_BUFFER_SIZE);

response.setHeader("Content-Length",String.valueOf(file.length()));

response.setHeader("Content-Disposition","inline; filename=\"" + file.getName() + "\"");

BufferedInputStream input = null;

BufferedOutputStream output = null;

try{

input = new BufferedInputStream(new FileInputStream(file),DEFAULT_BUFFER_SIZE);

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,length);

}

}finally{

output.close();

input.close();

}

}

...

}

它仍然提示我下载pdf文件.下载到我的电脑的pdf文件是正确的pdf文件btw.你能发现什么错吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值