Преобразование из PDF в PDF / A
Это ответ на ваш вопрос в первоначальном виде.
Для решения, которое не предполагает повторного рендеринга с потерями , взгляните на http://www.opensubscriber.com/message/itext-questions@lists.sourceforge.net/8027900.html, похоже, что Форис Золтан смог получить что-то (не исчерпывающее, но, возможно, достаточное) для большинства PDF-файлов) использование iText без излишнего повторного рендеринга.
Если решение Золтана не является приемлемым / достаточным в соответствии с вашими требованиями, то вы застряли с повторной визуализацией . Вы можете придерживаться OpenOffice / JODConverter или пойти на меньше накладных расходов, предпочтительно используя GhostScript (мать их всех), отправив pdf2ps
обратно в PDF / A- включено ps2pdf
.
Apache FOP
Другие респонденты предложили Apache FOP, который в контексте преобразования PDF в PDF / A имеет следующие преимущества и недостатки:
- преимущество : меньше «движущихся частей» по сравнению с комбинацией OpenOffice / JODCOnverter (например, сравнение внутрипроцессного FOP с демонизированным OO)
- недостаток : вы отвечаете за преобразование из PDF в XSL-FO или иным образом рендеринг в FOP ( больше кодирования и / или интеграции требуется требуется от вас ), тогда как OpenOffice / JODCOnverter и Ghostscript могут потребовать меньше дополнительного кодирования.
Однако, если я не ошибаюсь, похоже, что вы используете PDF в качестве промежуточного формата , то есть то, что вы пытаетесь достичь, - Преобразование XHTML в PDF в PDF / A . При непосредственном преобразовании из XHTML в PDF / A процесс будет быстрее, будет потребляться меньше ресурсов (например, памяти) и не будет бесполезно снижать качество вывода (как это могут делать решения для повторного рендеринга) или потребовать глубоких знаний о формате PDF (как решение Золтана). делает.)
В этом случае , напрямую конвертирующее из XHTML в PDF / A , будет идеальным решением, либо с использованием iText напрямую (в примере используется iTextSharp, a .Net-порт iText, но он такой же для Java), или с использованием Apache FOP, как предлагали другие (который также использует iText для внутреннего использования при выводе в PDF, и хотя он более раздутый, неэффективный и сложный в настройке, чем непосредственное использование iText) , он может дать лучшие результаты, чем пример iText - только один способ решить эту проблему, то есть вы должны попробовать его на нескольких ваших файлах XHTML в качестве примеров. :))