Задача: объединение PDF-файлов Как среда интеграции, наши задачи часто включают в себя консолидацию информации, разбросанной по нескольким документам. Объединение PDF-файлов — распространенное требование, которое можно элегантно выполнить в MuleSoft.
Объедините несколько файлов PDF с помощью Java и Mule 4. Мы будем использовать Apache PDFBox для функции объединения PDF и интегрировать ее с потоком Mule 4, чтобы предоставить конечную точку HTTP, которая принимает несколько файлов PDF и возвращает объединенный PDF.
Реализация с помощью MuleSoft:
1. Добавьте зависимости Apache PDFBox:
Java-библиотека для работы с PDF-документами. Откройте файл pom.xml вашего проекта Mule и добавьте следующие зависимости, чтобы включить Apache PDFBox.
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.20</version>
</dependency>
2. Создание класса Java для объединения PDF-файлов:
Реализуйте метод mergePDFs в классе PDFMerger с помощью утилит PDFBox. Этот метод принимает список массивов байтов PDF, объединяет их и возвращает объединенный PDF в виде массива байтов.
package com.mule.api;
import org.apache.pdfbox.multipdf.PDFMergerUtility;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;
public class MergePdfFile {
public static byte[] mergePdfs(List<byte[]> pdfs)throws IOException {
PDFMergerUtility pdfMerger = new PDFMergerUtility();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
for (byte[] pdf : pdfs) {
pdfMerger.addSource(new ByteArrayInputStream(pdf));
}
pdfMerger.setDestinationStream(outputStream);
pdfMerger.mergeDocuments(null);
return outputStream.toByteArray();
}
}
3. Настройка потока Mule 4:
Используйте компонент Java для вызова метода mergePDFs из класса PDFMerger, передавая ему извлеченные файлы PDF. Установите в качестве полезных данных объединенный PDF-файл и настройте ответ так, чтобы он возвращал правильный тип MIME (application/pdf).
<flow name = "post:\v1\merge-pdf:multipart\form-data:experience-merge-pdf-api-config">
<java:invoke-static method = "mergePdfs(java.util.List)" doc:name = "Invoke static mergePdfs" doc:id = "fd7f982b-265f-468c-ab3e-7034472626d5" class = "com.mule.api.MergePdfFile" target = "mergedPdfFile">
<java:args><![CDATA[#[{
pdfs: payload.parts..content
}]]]></java:args>
</java:invoke-static>
<set-payload value = "#[vars.mergedPdfFile]" doc:name = "Set mergedPdfFile" doc:id = "d4451400-47c2-4ca4-8dec-d06dd2f37432" mimeType = "application/pdf" />
</flow>
Тестирование API документов:
Чтобы протестировать API Merge PDF, мы отправим образцы файлов PDF (sampleFile1.pdf и sampleFile2.pdf) в API Merge PDF. После успешного выполнения файл должен быть объединены в один PDF-файл.
Я надеюсь, что эта статья поможет.
Привет Мулсофт!!