Создайте новый PDF-файл с содержимым из другого PDF-файла в java - PullRequest
0 голосов
/ 14 июля 2020

У меня есть требование, когда мне нужно сгенерировать новый файл PDF из существующего файла PDF.

Входные данные, которые мне нужно обрабатывать: закодированная в Base64 строка старого файла PDF, startPage, endPage.

Скажем, например - Report.pdf имеет 100 страниц. Но мне нужно создать документ со страниц 10–15 этого Report.pdf.

Я пробовал несколько подходов, но не смог пройти до конца sh.

любая помощь приветствуется .

stripper.setStartPage(StartPDF);
stripper.setEndPage(EndPDF);
String result = stripper.getText(doc);

Используется PDFTextStripper, и он может получать текстовое содержимое из обрезанного файла. Но я действительно не хочу получать текст. Мне просто нужны эти страницы в моем новом pdf.

Обновление : Я изучил библиотеки PDFBox, библиотеки iText. У меня есть ограничение - я работаю на платформе Pega, что ограничивает мою способность использовать эти библиотеки. Могли бы вы предложить любой другой подход?

1 Ответ

0 голосов
/ 16 июля 2020

Вы не указали, какую версию Pega вы используете, но все современные версии Pega, например Pega 8, поставляются с библиотекой pd4ml, которую можно использовать для различных манипуляций с PDF.

В Pega создаст шаг Java в правиле действия, где вы можете попробовать что-то вроде этого:

  1. Создайте и отобразите пустой документ PDF с любыми настройками страницы, такими как Insets org.zefer. pd4ml.PD4ML pd4ml = новый org.zefer.pd4ml.PD4ML (); pd4ml.setPageInsets (new java .awt.Insets (0, 20, 15, 30));

  2. Декодируйте исходный PDF-файл Base64 в InputStream

  3. Создайте org.zefer.pd4ml.PD4Document из этого с помощью конструктора PD4Document (byte [] bytes, java .lang.String password)

  4. Merge specifici c страниц этого PD4Document в ваш пустой документ с помощью функции слияния:

     merge
     public void merge(java.io.InputStream input,
                       int fromPage,
                       int toPage,
                       boolean append)
     Merges conversion result with an already existing PDF document
     Parameters:
     input - PDF document input stream
     fromPage - start page of the existing document (1 or greater)
     toPage - end page of the existing document (-1 means all pages)
     append - 'true' forces to append the existing PDF to the conversion result. Otherwise the existing document will lead the conversion result.
    

Полный API можно найти по адресу https://pd4ml.com/api/index.html

В качестве альтернативы вы можете установить внешние jar-файлы, такие как pdfbox. apache .org, в вашу систему Pega и использовать их на шаге java. Jar-файлы можно импортировать с помощью инструмента командной строки https://community.pega.com/knowledgebase/articles/how-import-or-export-archive-command-line или через Pega Dev Studio -> Distribution-> Import. Для этого может потребоваться перезапуск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...