如何在JSF页面上显示PDF

时间:2011-04-21 15:27:54

标签: html jsf pdf

我想在我的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, 0, length);
            }
        }finally{
            output.close();
            input.close();
        }
    }
    ...
}

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

4 个答案:

答案 0 :(得分:4)

没有其他方法(期望来自HTML <object>标签会有相同的“问题”),但您可以给<iframe>一个固定大小并禁用滚动,如下所示:< / p>

<iframe src="foo.pdf" width="600" height="400" scrolling="no"></iframe>

如果您还想隐藏(默认)边框,请同时添加frameBorder="0"

答案 1 :(得分:2)

你应该看看ICEpdf,它会在服务器端创建一个图像,提供缩放和其他控件(demo)。

答案 2 :(得分:1)

尝试进入Adobe Reader,在“选项”对话框下有一些网页设置,您可以在其中指明您始终希望在浏览器中打开PDF类型文档。

很遗憾,这是客户端修复,并未考虑其他PDF阅读器。

答案 3 :(得分:1)

你想要的是不可能的。浏览器不是魔术,它们只显示不同类型的文档,其中一些(HTML)可以嵌入由插件(flash,java)提供的对象和iframe(pdf,flash,html)中的其他文档。如果要显示pdf微缩模型,则必须在服务器上生成图像。