加快iText /飞碟生成PDF打印对话框的显示速度

时间:2012-03-13 14:23:26

标签: performance pdf itext flying-saucer

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

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

然而,当我将PDF嵌入隐藏的iframe中时......

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

...最初渲染页面时,PDF打印对话框永远不会显示。

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

有没有一种方法可以加速PDF打印对话框的渲染?

1 个答案:

答案 0 :(得分:0)

看起来好像有几件东西加速了我......

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