Ускорение отображения сгенерированного iText / летающей тарелки диалогового окна PDF - PullRequest
0 голосов
/ 13 марта 2012

Я создал 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 работает с очень простым PDF-файлом "TEST". Я ожидаю, что диалоговое окно печати «firstdocprint.pdf» появится в течение нескольких секунд, а размер PDF - всего 2 КБ (простой «ТЕСТ» PDF - всего 1 КБ).

Есть ли способ программно ускорить рендеринг диалогового окна печати PDF?

1 Ответ

0 голосов
/ 13 марта 2012

Похоже, пара вещей ускорила это для меня ...

  • Удалите неиспользуемые / неработающие принтеры
  • Вместо использования "display:none" визуализируйте iframe с очень малой шириной и высотой:
    <iframe src="firstdocprint.pdf" style="width:2px;height:2px;"></iframe>
    Я думаю, что я могу также расположить его где-нибудь вне страницы или покрыть другим элементом
...