Бесплатная библиотека 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
Ответы
Ответ 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. В этой первой версии типов документов, которые могут быть преобразованы, есть некоторые ограничения.