【问题标题】:Speeding up display of iText/flying-saucer generated PDF print dialog加快显示 iText/飞碟生成的 PDF 打印对话框
【发布时间】:2012-03-13 14:23:26
【问题描述】:

我使用飞碟创建了一个 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();

PdfReader reader = new PdfReader(outputFile);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("firstdocprint.pdf"));
stamper.setPageAction(PdfWriter.PAGE_OPEN, new PdfAction(PdfAction.PRINTDIALOG), 1); 
stamper.close();

当我在 PC 上打开 PDF 时,几秒钟后会显示打印对话框。

但是,当我将 PDF 嵌入到隐藏的 iframe 中时...

<iframe src="firstdocprint.pdf" style="display:none"></iframe>

...最初呈现页面时,PDF 打印对话框从不显示。

隐藏的 iframe 方法正在处理一个非常简单的“测试”PDF。我希望“firstdocprint.pdf”打印对话框会在几秒钟内出现,而且 PDF 只有 2KB(简单的“TEST”PDF 只有 1KB)。

有没有一种编程方式来加快 PDF 打印对话框的呈现速度?

【问题讨论】:

    标签: performance pdf itext flying-saucer


    【解决方案1】:

    看起来有几件事让我加快了速度......

    • 删除未使用/失效的打印机
    • 不使用"display:none",而是使用非常小的宽度和高度渲染 iframe:
      &lt;iframe src="firstdocprint.pdf" style="width:2px;height:2px;"&gt;&lt;/iframe&gt;
      我想我也可以将它绝对定位在页面之外的某个位置,或者用另一个元素覆盖它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 2017-08-04
      • 1970-01-01
      • 2013-07-30
      • 2016-06-26
      • 2019-01-07
      • 2019-05-29
      相关资源
      最近更新 更多