Html 如何在JSF页面上显示PDF

Html 如何在JSF页面上显示PDF,html,jsf,pdf,Html,Jsf,Pdf,我想在我的JSF页面上显示一个PDF文件,我已经选中了这个,但我不想在iframe上显示它(因为它会生成滚动条)。我只想把pdf显示在一个像图片一样的页面上,并能给出它的宽度和高度 编辑Hi BalusC。我仍然无法在线显示pdf。这是我的代码。 @WebServlet(name = "pdfHandler", urlPatterns = {"/pdfHandler/*"}) public class pdfHandler extends HttpServlet { private s

我想在我的JSF页面上显示一个PDF文件,我已经选中了这个,但我不想在iframe上显示它(因为它会生成滚动条)。我只想把pdf显示在一个像图片一样的页面上,并能给出它的宽度和高度

编辑Hi 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文件。顺便说一句,你能发现任何错误吗?

实际上没有其他方法(除了HTML
标签会有同样的“问题”),但你可以给
一个固定大小,并按如下方式禁用滚动:

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


如果您还想隐藏(默认)边框,也可以添加
frameBorder=“0”

实际上没有其他方法(除了HTML
标记会有相同的“问题”),但您可以只给
一个固定大小,并按如下方式禁用滚动:

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


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

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


不幸的是,这是一个客户端修复程序,不考虑其他PDF阅读器。

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



不幸的是,这是一个客户端修复程序,没有考虑其他PDF阅读器。

您想要的是不可能的。浏览器并不神奇,它们只是显示不同类型的文档,其中一些(HTML)可以将插件(flash、java)提供的对象和其他文档嵌入iFrame(pdf、flash、HTML)中。如果要显示pdf缩影,必须在服务器上生成图像。

您想要的是不可能的。浏览器并不神奇,它们只是显示不同类型的文档,其中一些(HTML)可以将插件(flash、java)提供的对象和其他文档嵌入iFrame(pdf、flash、HTML)中。如果要显示pdf缩图,必须在服务器上生成图像。

您应该查看,它在服务器端创建图像,提供缩放和其他控件()。

您应该查看,它在服务器端创建图像,提供缩放和其他控件()。

当我在iframe中显示时,它不显示pdf,它会立即提示我下载pdf文件。转换pdf->image是否是唯一的解决方案?必须将
内容处置
响应标题设置为
内联
(默认),而不是
附件
。另请参见您链接的答案,以获取执行此操作的代码行。根据您的更新:这是一种浏览器设置,当检索到任何PDF时,它都会强制保存PDF。你使用Firefox吗?工具>选项>应用程序。请注意,默认情况下不会这样做,在获取PDF file.yup时,您之前必须勾选一些记住选项。我切换到chrome,然后它的行为符合预期。处理pdf实际上是一件痛苦的事情。当我在iframe中显示时,它不会显示pdf,它会立即提示我下载pdf文件。转换pdf->image是否是唯一的解决方案?必须将
内容处置
响应标题设置为
内联
(默认),而不是
附件
。另请参见您链接的答案,以获取执行此操作的代码行。根据您的更新:这是一种浏览器设置,当检索到任何PDF时,它都会强制保存PDF。你使用Firefox吗?工具>选项>应用程序。请注意,默认情况下不会这样做,在获取PDF file.yup时,您之前必须勾选一些记住选项。我切换到chrome,然后它的行为符合预期。处理pdf实际上是一种痛苦。谢谢。关于将pdf转换为图像的Java开源API有什么建议吗?位于(来自SwingLabs)的pdf渲染器库过去工作得很好(虽然我从来没有用它来制作拇指,但它应该可以工作)。在哪里下载可执行文件,jar文件?我看到的只是源代码。Uhmpf。。。它已被移动到新的基础架构中,看起来有所不同。我想你会在这里找到二进制文件:这是一篇让我开始使用它的文章:谢谢。关于将pdf转换为图像的Java开源API有什么建议吗?位于(来自SwingLabs)的pdf渲染器库过去工作得很好(虽然我从来没有用它来制作拇指,但它应该可以工作)。在哪里下载可执行文件,jar文件?我看到的只是源代码。Uhmpf。。。它已被移动到新的基础架构中,看起来有所不同。我想你会在这里找到二进制文件:这是一篇让我开始使用它的文章:首先,检查你的浏览器上是否安装了Adobe Reader插件。您是否可以在浏览器中查看PDF文档,或者它仍然要求下载?首先,检查您的浏览器上是否安装了Adobe Reader插件。你能在浏览器中查看PDF文档吗,或者它仍然要求下载?你以前使用过这个库吗?不使用servlet部分,只使用图像转换,但是如果你下载这个版本,它有一个JSF(ICEfaces)webapp示例。你以前使用过这个库吗?不使用servlet部分,只使用图像转换,但是如果你下载这个版本,它有一个JSF(ICEfaces)webapp示例。