gpt4 book ai didi

java - 如何打开带有打印对话框的 Flying Saucer/itext 创建的 PDF

转载 作者:行者123 更新时间:2023-11-30 06:31:32 26 4
gpt4 key购买 nike

这个问题的一些背景可以在 Check printing with Java/JSP 找到。和 Create a "print-only" PDF with itext

我已经能够使用 iText-2.0.8 和以下代码成功创建和打开带有打印对话框的 PDF:

String outputFile = "firstdoc.pdf";
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(outputFile));
writer.setOpenAction(new PdfAction(PdfAction.PRINTDIALOG));
document.open();
document.add(new Paragraph("TEST"));
document.close();

我还能够使用 Flying Saucer 通过以下代码从 XHTML 生成 PDF:

String inputFile = "firstdoc.xhtml";
String url = new File(inputFile).toURI().toURL().toString();
String outputFile = "firstdoc.pdf";

OutputStream os = new FileOutputStream(outputFile);

ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(url);
renderer.layout();
renderer.createPDF(os);

os.close();

但是,我似乎无法让两者一起工作......

我想像第二个代码块一样使用 Flying Saucer 创建 PDF 并且我想将该 PDF 的打开操作设置为 PdfAction.PRINTDIALOG .

我怎样才能让这两组代码一起工作,这样一个 Flying Saucer 创建的 PDF 最初打开时会出现一个打印对话框?

最佳答案

您可以实现 Flying Saucer 的 org.xhtmlrenderer.pdf.PDFCreationListener 并在 preWrite(ITextRenderer iTextRenderer, int pageCount) 方法中编写您的打印对话框相关代码。

@Override    
public void preWrite(ITextRenderer iTextRenderer, int pageCount)
{
iTextRenderer.getOutputDevice().getWriter().setOpenAction(new PdfAction(PdfAction.PRINTDIALOG));
}

在 ITextRenderer 中添加这个监听器

ITextRenderer renderer = new ITextRenderer();
renderer.setListener(PDFCreationListener implemetation class);
renderer.setDocumentFromString(htmlContent);
renderer.layout();
renderer.createPDF(os);

希望这对您有所帮助。

关于java - 如何打开带有打印对话框的 Flying Saucer/itext 创建的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9672012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com