Объедините несколько файлов PDF с помощью Java и Mulesoft

Задача: объединение PDF-файлов Как среда интеграции, наши задачи часто включают в себя консолидацию информации, разбросанной по нескольким документам. Объединение PDF-файлов — распространенное требование, которое можно элегантно выполнить в MuleSoft.

Объедините несколько файлов PDF с помощью Java и Mule 4. Мы будем использовать Apache PDFBox для функции объединения PDF и интегрировать ее с потоком Mule 4, чтобы предоставить конечную точку HTTP, которая принимает несколько файлов PDF и возвращает объединенный PDF.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Реализация с помощью 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-файл.

Я надеюсь, что эта статья поможет.

Привет Мулсофт!!

Другие вопросы по теме