Вопрос

Я пытаюсь молчать файлы PDF -файла из приложения Java (более конкретно j2ee webapp).

В этом приложении я создаю PDF -файлы с ITEXT. Составленные файлы - это буквы формы, каждая из которых состоит из ровно одной страницы.

Чтобы отобразить и распечатать эти файлы PDF, я попытался использовать библиотеку PDF-Renderer. (Глянь сюда: https://pdf-derender.dev.java.net/ )

Я нашел какой -то полезный пример кода в http://juixe.com/techcown/index.php/2008/01/17/print-a-pdf-document-in-java/ И действительно, вскоре я смог распечатать первый документ с моей рабочей машины.

Но теперь наступает смешная часть:

После печати каждого из файлов PDF каким -то образом испортились. Это было все еще читаемо и все такое, но весь форматирование сошла с ума. Линейные тормоза, где они не должны быть, артефакты ошибок в содержащемся изображении, неотъемлемый текст внезапно длиннее или короче, как предполагалось ...

Кроме того, то, что было напечатано, было также этой «взломанной» версией ... так что я думаю, что ошибка должна быть где -то в процессе рендеринга.

Это исходный код, ответственный за весь процесс рендеринга и печати:

File f = this.file; //This accesses the created PDF file

FileInputStream fis = new FileInputStream(f);

FileChannel fc = fis.getChannel();

ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());

PDFFile pdfFile = new PDFFile(bb); // Create PDF Print Page

PDFPrintPage pages = new PDFPrintPage(pdfFile);



// Create Print Job

PageFormat pf = PrinterJob.getPrinterJob().defaultPage();

pjob.setJobName(f.getName());

Book book = new Book();

book.append(pages, pf, pdfFile.getNumPages());

pjob.setPageable(book);

Еще один интересный факт: обладание PDF происходит только в созданных документах ITEXT PDF. Если я попытаюсь распечатать какой -то случайный PDF, он не искалечен.

Есть идеи о том, в чем может быть проблема? И как рендеринг может повлиять на мой PDF вообще? Насколько я понимаю этот код ископаемости, режим read_only должен предотвратить именно это ...

РЕДАКТИРОВАТЬ: Я только что увидел, что печать ITEXT, созданный PDF, также удаляет встроенные шрифты. Опять же, перед рендерингом/печати через PDF-Renderer работал совершенно хорошо. (Шрифты также появились в свойствах PDF и т. Д. ...)

Это было полезно?

Решение

Может быть, ITEXT создает PDF -файлы, которые не совместимы с вашим рендерером? Вы проверяли, какую PDF -версию он создает? Может быть, можно указать более старую версию?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top