Java ZIP을 PDF로

ZIP 파일은 일반적으로 여러 파일을 단일 아카이브로 압축하고 패키징하는 데 사용됩니다. 이러한 파일을 PDF 형식으로 변환하면 보고서 작성, 문서 보관, 표준화된 형식의 정보 공유 등 다양한 목적에 유용할 수 있습니다. 이 튜토리얼에서는 Java를 사용하여 ZIP 파일을 PDF 문서로 변환하는 방법을 살펴보겠습니다.

ZIP을 PDF로 변환하는 이유는 무엇입니까?

다양한 사용 사례에 맞게 ZIP 파일을 PDF 형식으로 변환해야 할 수도 있습니다. 여기서는 전환의 몇 가지 이유에 대해 논의하고 있습니다.

보고서 생성: ZIP 파일에서 데이터를 추출하고 이를 형식화된 문서로 제시하여 PDF 보고서를 생성합니다.

문서 보관: ZIP 아카이브에 저장된 여러 문서 또는 파일을 단일 PDF로 변환하여 쉽게 보관하고 검색할 수 있습니다.

문서 표준화: 더 쉽게 공유하고 볼 수 있도록 ZIP 아카이브 내의 다양한 파일 형식을 통일된 PDF 형식으로 변환합니다.

ZIP을 PDF로 변환기 - Java 환경 구성

Java 코드를 실행하고 시스템에 기능을 포함시키는 개발 환경을 구성해야 합니다.

  • JDK(Java Development Kit)가 시스템에 설치되어 있는지 확인하십시오.
  • IntelliJ IDEA, Java 개발용 Apache NetBeans와 같은 통합 개발 환경(IDE)이 있는지 확인하세요.
  • 또한 Conholdate.Total for Java JAR 파일을 다운로드하거나 다음 Maven 구성을 사용합니다.
<dependency>
<groupId>com.conholdate</groupId>
<artifactId>conholdate-total</artifactId>
<version>24.2</version>
<type>pom</type>
</dependency>

Java에서 ZIP을 PDF로 변환

아래 단계는 Java에서 ZIP을 PDF로 변환하는 방법을 보여줍니다.

  • 입력 ZIP 파일을 사용하여 ZipInputStream 객체를 초기화합니다.
  • 추출된 파일이 저장될 출력 디렉터리를 지정합니다.
  • 입력 ZIP 파일의 각 파일을 반복하여 출력 디렉터리에 추출합니다.
  • 압축이 풀린 폴더에서 추출된 파일 이름을 저장하기 위한 임시 목록을 유지합니다.
  • 압축이 풀린 폴더에서 모든 파일 목록(전체 경로 포함)을 가져옵니다.
  • 추출된 각 파일을 반복하여 PDF 형식으로 변환합니다.
  • 변환된 PDF 파일을 병합합니다.
  • 임시 목록의 첫 번째 입력 PDF 문서를 사용하여 Merger 클래스의 인스턴스를 만듭니다.
  • 두 번째 파일부터 시작하여 변환된 PDF 문서 목록을 반복합니다.
  • 병합된 PDF 문서를 저장하려면 Merger 클래스 인스턴스의 저장 메소드를 호출하십시오.

다음 샘플 코드는 Java에서 ZIP을 PDF로 변환하는 방법을 보여줍니다.

// 지원되는 파일 형식: https://docs.groupdocs.com/conversion/java/supported-document-formats/
// OpenJDK 17에서 작동

package com.mycompany.asposejavatest;

import java.io.*;
import java.util.ArrayList;
import org.apache.commons.compress.archivers.*;
import org.apache.commons.compress.compressors.*;
import com.groupdocs.conversion.*;
import com.groupdocs.conversion.Converter;
import com.groupdocs.conversion.options.convert.PdfConvertOptions;
import com.groupdocs.conversion.contracts.PossibleConversions;
import com.groupdocs.conversion.options.convert.ConvertOptions;
import com.groupdocs.merger.*;
import com.groupdocs.merger.Merger;

public class AsposeJavaTest {

    public static void main(String[] args) {

        try {
            InputStream inputfile = new BufferedInputStream(new FileInputStream("input.zip"));

            // 별도로 보관되고 압축되는 형식의 경우. tar.gz와 유사 tar.bz tar.xz 사용
            // CompressorInputStream 및 ArchiveInputStream을 사용하여 입력 파일을 로드합니다.
            //CompressorInputStream cis = new CompressorStreamFactory().createCompressorInputStream(inputfile);
            //ArchiveInputStream ais = new ArchiveStreamFactory().createArchiveInputStream(cis);

            // 압축을 기본적으로 지원하는 형식의 경우. Zip RAR JAR 7zip과 같습니다.
            // CompressorInputStream 없이 입력 파일을 로드하는 ArchiveInputStream
            //ArchiveInputStream ais = new ArchiveStreamFactory().createArchiveInputStream(inputfile);

            ArchiveEntry entry = ais.getNextEntry();

            File outputDir = new File("/tmp/output");
            if (!outputDir.exists()) {
                outputDir.mkdirs();
            }

            while (entry != null) {
                String filePath = outputDir.getAbsolutePath() + File.separator + entry.getName();
                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
                byte[] bytesIn = new byte[1024];
                int read;

                while ((read = ais.read(bytesIn)) != -1) {
                    bos.write(bytesIn, 0, read);
                }

                ais.close();
                bos.close();
                entry = ais.getNextEntry();
            }

            // 압축이 풀린 폴더에서 추출된 파일 이름을 보관하는 임시 목록
            ArrayList<String> filesList = new ArrayList<>();

            // 압축이 풀린 폴더에서 모든 파일 목록(전체 경로 포함)을 가져옵니다.
            File[] files = outputDir.listFiles();

            // 압축이 풀린 각 파일을 반복하고 각 파일을 PDF로 변환합니다.
           for (File file : files) {
                // 추출된 파일을 로드합니다.
                Converter converter = new Converter(file.getAbsolutePath());
                // PDF 형식에 대한 변환 옵션 설정				
                PdfConvertOptions convertOptions = new PdfConvertOptions();                
                // PDF 형식으로 변환
                String outPath = outputDir.getAbsolutePath() + File.separator + file.getName()+ ".pdf";
                converter.convert(outPath, convertOptions);
                // PDF로 변환한 후 임시 목록에 파일 이름 추가
                filesList.add(outPath);
            }

            // GroupDocs.Merger API를 사용하여 PDF 파일 병합
            // 임시 목록의 첫 번째 입력 PDF 문서로 병합 인스턴스화
            Merger merger = new Merger(filesList.get(0));

            // 두 번째 파일부터 시작하여 변환된 PDF 문서 목록을 반복합니다.
           for (int i = 1; i < filesList.size(); i++) {
                // Merger 클래스 인스턴스의 Join 메소드를 호출하고 나머지 소스 파일을 하나씩 전달합니다.
                merger.join(filesList.get(i));
            }

            // 병합된 PDF 문서를 저장하려면 Merger 클래스 인스턴스의 Save 메서드를 호출하세요.
            merger.save("/tmp/output.pdf");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

무료 평가판 라이선스

무료 임시 라이센스를 요청하여 ZIP 파일을 PDF 형식으로 변환하고 다른 API 기능을 전체 용량으로 테스트할 수 있습니다.

마무리

이 기사에서는 Java에서 ZIP 파일을 PDF로 변환하는 방법을 요약합니다. 여기에는 ZIP 아카이브에서 파일을 추출하고 PDF 형식으로 변환한 다음 단일 PDF 문서로 병합하는 작업이 포함됩니다. 또한 이 프로세스는 특정 요구 사항에 따라 더욱 자동화되고 사용자 정의될 수 있습니다. 모호한 점이 있으면 언제든지 포럼으로 문의해 주세요.

자주 묻는 질문

ZIP 파일에서 생성된 PDF 문서를 사용자 정의할 수 있습니까?

예, ZIP 파일에서 생성된 PDF 문서를 사용자 정의할 수 있습니다. PDF 문서의 시각적 표현을 향상시키기 위해 글꼴, 색상, 레이아웃 및 기타 스타일 요소 설정과 같은 다양한 조작을 적용할 수 있습니다. 요구 사항에 따라 머리글, 바닥글, 워터마크 및 주석을 추가할 수도 있습니다.

모든 파일을 변환하는 대신 ZIP 아카이브 내의 특정 파일을 PDF로 변환할 수 있습니까?

예, Java 코드를 적절하게 수정하여 ZIP 아카이브 내의 특정 파일을 PDF로 변환할 수 있습니다. 이름, 확장자 또는 기타 기준에 따라 특정 파일을 추출한 다음 추출된 파일만 PDF 형식으로 변환할 수 있습니다. 이를 통해 요구 사항에 따라 선택적 변환 및 사용자 정의가 가능합니다.

변환 중에 결과 PDF 문서를 비밀번호로 보호하는 방법이 있습니까?

예, 지원되는 기능에는 PDF 암호화, PDF 문서에 대한 암호 설정, 권한 및 암호화 수준이 포함되므로 결과 PDF 문서를 암호로 보호할 수 있습니다.

또한보십시오