【问题标题】:How to print pdf file with wicket and javascript如何使用 wicket 和 javascript 打印 pdf 文件
【发布时间】:2012-09-05 15:25:17
【问题描述】:

我的检票口应用程序创建了一些 pdf 文件。现在我想添加按钮来打印它,这样想:http://javascript.about.com/library/blprint.htm 我该怎么做?

【问题讨论】:

标签: java printing wicket


【解决方案1】:

看起来你把两个东西混在一起了。你的例子是一个javascript。它不是 PDF,它只是打印您的文档。它与浏览器菜单 File -> Print 相同,但事件是从处理按钮操作的 javascript 调用的。您可以使用与该示例中相同的按钮并将@print CSS 添加到您的网页中,以使您的文档可以很好地打印。

还有另一种方法。如果您想从应用程序打印 PDF 文档并从 Java 代码生成 PDF,请查看 Wicket 1.6 的以下示例:

add(new Link<Void>("myPdfLink") {

    private static final long serialVersionUID = 1L;

    @Override
    public void onClick() {
        byte[] data = ... // TODO your data
        final ByteArrayInputStream stream = new ByteArrayInputStream(data);
        IResourceStream resourceStream = new AbstractResourceStream() {                    
            private static final long serialVersionUID = 1L;

            @Override
            public InputStream getInputStream() throws ResourceStreamNotFoundException {
                return stream;
            }

            @Override
            public void close() throws IOException {
                stream.close();
            }

            @Override
            public String getContentType() {
                return "application/pdf";
            }

        };   

        getRequestCycle().scheduleRequestHandlerAfterCurrent(
            new ResourceStreamRequestHandler(resourceStream)
                .setFileName("my-pdf-to-download.pdf")
                .setContentDisposition(ContentDisposition.ATTACHMENT)
                .setCacheDuration(Duration.ONE_SECOND)
        );  

    }

}); 

【讨论】:

  • +1 表示setCacheDuration()。很好的例子,我见过的最完整的一个地方
  • 谢谢,伙计。要在浏览器中打开新标签,只需更改 ContentDisposition.INLINE
猜你喜欢
  • 1970-01-01
  • 2011-11-03
  • 1970-01-01
  • 2013-02-16
  • 1970-01-01
  • 2014-07-05
  • 1970-01-01
  • 1970-01-01
  • 2013-03-19
相关资源
最近更新 更多