[英]Generate and open PDF in new browser at clients machine with java IText
[英]How to open a pdf file generated with itext 7 in new browser tab java
我使用 itext 7 在 java 中制作了一个 pdf 文件,并且可以将它保存在我的本地计算机上。
如何在不将其存储在我的计算机上的情况下以某种方式在新的浏览器选项卡中打开此文件?
我解决了我的问题。
这里我生成一个pdf文件并返回他的StreamResource:
public static StreamResource generateTestPdf(){
ByteArrayOutputStream dest = new ByteArrayOutputStream();
PdfWriter writer = new PdfWriter(dest);
PdfDocument pdfDoc = new PdfDocument(writer);
Document document = new Document(pdfDoc);
Paragraph title = new Paragraph("Hello World!");
document.add(title);
StreamResource streamResource = null;
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
document.close();
ByteArrayInputStream inputStream = new ByteArrayInputStream(dest.toByteArray());
streamResource = new StreamResource("file.pdf", new InputStreamFactory() {
@Override
public InputStream createInputStream() {
return inputStream;
}
});
return streamResource;
}
之后,我在我的页面上添加了一个带有侦听器的按钮,它会在浏览器的新选项卡中打开生成的文件:
Button print = new Button("Print");
print.addClickListener(e -> {
this.close();
final StreamRegistration registration = VaadinSession.getCurrent().getResourceRegistry().registerResource(PdfGenerator.generateTestPdf());
UI.getCurrent().getPage().setLocation(registration.getResourceUri());
}
);
我不知道这个解决方案有多正确,但它对我有用。 谢谢大家!
PS我使用Vaadin 14和Itext 7.1.12
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.