Подтвердить что ты не робот

Бесплатная библиотека Java для преобразования существующего PDF в PDF/A

Я пытаюсь преобразовать PDF в PDF/A. В настоящее время я могу сделать это, используя OpenOffice pdf viewer plugin вместе с Jodconverter 2. Но это довольно громоздко.

Кто-нибудь знает какие-либо библиотеки с открытым исходным кодом/бесплатные библиотеки Java, которые я могу использовать для этого?

Я нашел эти библиотеки с открытым исходным кодом до сих пор, но ни одна из них не поддерживает преобразование PDF в PDF/A

iText
gnujpdf
PDF Box
FOP
JFreeReport
PJX
JPedal
PDFjet
jPod
PDF Renderer

UPDATE

Похоже, Apache FOP имеет возможность конвертировать документ (а не документ PDF) в PDF/A

4b9b3361

Ответ 1

Преобразование из PDF в PDF/A

Это ответ на ваш вопрос, как изначально сформулированный.

Для решения, которое не предполагает потенциально потерю рендеринга, посмотрите http://www.opensubscriber.com/message/[email protected]/8027900.html, кажется, что Форис Золтан смог получить что-то (не исчерпывающее, но, возможно, достаточное для большинства PDF файлов), использующее iText без излишнего повторного рендеринга.

Если решение Zoltan не является приемлемым/достаточным в соответствии с вашими требованиями, тогда вы застреваете с повторной рендерингом. Вы можете придерживаться OpenOffice/JODConverter или перейти на меньше накладных расходов, предпочтительно используя GhostScript (мать всех их), трубопровод pdf2ps обратно в PDF/A-enabled ps2pdf.

Apache FOP

Другие респонденты предложили Apache FOP, который в контексте преобразования PDF в PDF/A имеет следующие преимущества и недостатки:

  • преимущество: меньше "движущихся частей" , чем комбинация OpenOffice/JODCOnverter (например, сравнение FOP процесса с демонизированным OO)
  • Недостаток: вы несете ответственность за преобразование из PDF в XSL-FO или иным образом рендеринг в FOP (больше кодирования и/или интеграции работа), тогда как OpenOffice/JODCOnverter и Ghostscript могут потребовать меньше дополнительного кодирования.

Однако, если я не ошибаюсь, кажется, что вы используете PDF в качестве промежуточного формата, т.е. то, что вы пытаетесь достичь, - это XHTML to PDF to PDF/A conversion. Преобразуя непосредственно из XHTML в PDF/A, процесс будет быстрее, будет использовать меньше ресурсов (например, память) и не приведет к ненужному ухудшению качества вывода (как могут быть реверсивные решения) или требует глубокого знания формата PDF (как решение Zoltan делает.)

В этом случае прямое преобразование из XHTML в PDF/A было бы идеальным решением, либо

Ответ 2

Seam PDF - это просто удобство для проектов, которые используют Seam. Нет ничего, что помешало бы вам использовать Apache FOP с Seam для создания файлов PDF.

Я лично использовал Apache FOP для создания файлов PDF/A в веб-приложении, и он отлично работает. Поскольку ссылка, уже приведенная Лигги, говорит, что это так же просто, как

userAgent.getRendererOptions(). Положим ( "PDF-а-режим", "PDF/A-1b" );

Поэтому мое предложение заключается в том, чтобы напрямую использовать Apache FOP вместо обращения к конверсии (что также имеет проблемы с производительностью)

Update:

Веб-сайт Apache FOP содержит список примеров использования кода Java. http://xmlgraphics.apache.org/fop/0.95/embedding.html

Вот минимальная команда командной строки, которая преобразует XML в PDF

Другим подходом, который специально посвящен XHTML (а не только XML), является использование таблицы стилей xhtml2fo из Антенны.

Это пример: http://blog.platinumsolutions.com/node/216

Просто добавьте следующие две строки перед созданием объекта "FOP", и вам хорошо идти.

FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); 
foUserAgent.getRendererOptions().put("pdf-a-mode","PDF/A-1b");

Ответ 3

Вы упоминаете Apache FOP в своем списке API, но с этой страницы - http://xmlgraphics.apache.org/fop/trunk/pdfa.html в нем упоминается, что есть некоторая поддержка PDF/А:

PDF/A-1b реализуется до степени, что FOP поддерживает создание элементов, описанных в ISO 19005-1.

PDF/A-1a основан на PDF-A-1b и добавляет функции доступности (например, Tagged PDF). Этот формат доступен в пределах ограничения, описанного на странице доступности.

В нем особо не упоминается о PDF в PDF/A, но это может быть альтернатива с открытым исходным кодом.

Ответ 4

Там проект, размещенный в gitHub pdf2htmlEX, стоит посмотреть. это открытый исходный текст в С++.

Ответ 5

Мы только что выпустили jPDFPreflight, библиотеку Java, которая может конвертировать PDF файлы в PDF/A. В этой первой версии типов документов, которые могут быть преобразованы, есть некоторые ограничения.