如何使用wicket和javascript打印pdf文件
我的wicket应用程序创建了一些pdf文件。现在我想添加一个按钮来打印它,就像这样想:我怎么能做到呢?看起来你把两件事混合在一起了。您的示例是一个javascript。它不是PDF,只是在打印您的文档。它等同于浏览器菜单文件->打印,但该事件是从处理按钮操作的javascript调用的。您可以使用与该示例中相同的按钮,将@print CSS添加到您的网页中,以使您的文档可以很好地打印 还有另外一种方法。如果要从应用程序打印PDF文档,并从Java代码生成PDF,请查看Wicket 1.6的以下示例:如何使用wicket和javascript打印pdf文件,java,printing,wicket,Java,Printing,Wicket,我的wicket应用程序创建了一些pdf文件。现在我想添加一个按钮来打印它,就像这样想:我怎么能做到呢?看起来你把两件事混合在一起了。您的示例是一个javascript。它不是PDF,只是在打印您的文档。它等同于浏览器菜单文件->打印,但该事件是从处理按钮操作的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)
);
}
});
add(新链接(“myPdfLink”){
私有静态最终长serialVersionUID=1L;
@凌驾
公共void onClick(){
字节[]数据=…//TODO您的数据
最终ByteArrayInputStream=新的ByteArrayInputStream(数据);
IResourceStream resourceStream=新的AbstractResourceStream(){
私有静态最终长serialVersionUID=1L;
@凌驾
公共InputStream getInputStream()引发ResourceStreamNotFoundException{
回流;
}
@凌驾
public void close()引发IOException{
stream.close();
}
@凌驾
公共字符串getContentType(){
返回“application/pdf”;
}
};
getRequestCycle().scheduleRequestHandlerAfterCurrent(
新ResourceStreamRequestHandler(resourceStream)
.setFileName(“我的pdf下载.pdf”)
.setContentDisposition(ContentDisposition.ATTACHMENT)
.setCacheDuration(持续时间.1秒)
);
}
});
我认为这更多地与JavaScript有关,而不是与Wicket有关。看看这个:如果您正在为setCacheDuration()
生成PDF:+1,那么还有一个相关问题。很好的例子,这是我在一个地方见过的最完整的例子谢谢,伙计。要在浏览器中打开新选项卡,只需更改ContentDisposition.INLINE