Java ZIP do pliku PDF

Pliki ZIP są powszechnie używane do kompresowania i pakowania wielu plików w jedno archiwum. Konwersja tych plików do formatu PDF może być przydatna do różnych celów, takich jak tworzenie raportów, archiwizowanie dokumentów lub udostępnianie informacji w ustandaryzowanym formacie. W tym samouczku omówimy, jak przekonwertować plik ZIP na dokument PDF przy użyciu języka Java.

Dlaczego warto konwertować ZIP do formatu PDF?

W różnych przypadkach może być konieczne przekonwertowanie plików ZIP na format PDF. Omawiamy tutaj kilka powodów konwersji:

Generowanie raportów: Generuj raporty w formacie PDF, wyodrębniając dane z plików ZIP i prezentując je w sformatowanym dokumencie.

Archiwizacja dokumentów: Konwertuj wiele dokumentów lub plików przechowywanych w archiwum ZIP na jeden plik PDF w celu łatwej archiwizacji i odzyskiwania.

Standaryzacja dokumentów: Konwertuj różne formaty plików w archiwum ZIP na jednolity format PDF, aby ułatwić udostępnianie i przeglądanie.

Konwerter plików ZIP na PDF — konfiguracja środowiska Java

Musisz skonfigurować środowisko programistyczne, uruchomić kod Java i osadzić tę funkcję w swoim systemie.

  • Upewnij się, że w systemie jest zainstalowany zestaw Java Development Kit (JDK).
  • Upewnij się, że masz zintegrowane środowisko programistyczne (IDE), takie jak IntelliJ IDEA, Apache NetBeans do programowania w języku Java.
  • Ponadto pobierz plik JAR Conholdate.Total for Java lub użyj następujących konfiguracji Mavena:
<dependency>
<groupId>com.conholdate</groupId>
<artifactId>conholdate-total</artifactId>
<version>24.2</version>
<type>pom</type>
</dependency>

Konwertuj ZIP na PDF w Javie

Poniższe kroki pokazują, jak przekonwertować ZIP na PDF w Javie:

  • Zainicjuj obiekt ZipInputStream przy użyciu wejściowego pliku ZIP.
  • Określ katalog wyjściowy, w którym zostaną zapisane wyodrębnione pliki.
  • Wykonaj iterację po każdym pliku w wejściowym pliku ZIP i wyodrębnij go do katalogu wyjściowego.
  • Utrzymuj tymczasową listę do przechowywania nazw wyodrębnionych plików z rozpakowanego folderu.
  • Uzyskaj listę wszystkich plików (w tym ich pełne ścieżki) z rozpakowanego folderu.
  • Wykonaj iterację po każdym wyodrębnionym pliku i przekonwertuj go na format PDF.
  • Scal przekonwertowane pliki PDF.
  • Utwórz instancję klasy Merger z pierwszym wejściowym dokumentem PDF z listy tymczasowej.
  • Przeglądaj listę przekonwertowanych dokumentów PDF, zaczynając od drugiego pliku.
  • Wywołaj metodę save instancji klasy Merger, aby zapisać scalony dokument PDF.

Poniższy przykładowy kod pokazuje, jak przekonwertować ZIP na PDF w Javie:

// Obsługiwane formaty plików: https://docs.groupdocs.com/conversion/java/supported-document-formats/
// Współpracuje z 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"));

            // Dla formatów, które są oddzielnie archiwizowane i kompresowane. Podobnie jak tar.gz tar.bz tar.xz Użyj
            // CompressorInputStream, a następnie użyj ArchiveInputStream do załadowania pliku wejściowego.
            //CompressorInputStream cis = nowy CompressorStreamFactory().createCompressorInputStream(plik wejściowy);
            //ArchiveInputStream ais = nowy ArchiveStreamFactory().createArchiveInputStream(cis);

            // Dla formatów, które mają wbudowaną obsługę kompresji. Podobnie jak Zip RAR JAR 7zip
            // ArchiveInputStream, aby załadować plik wejściowy bez CompressorInputStream
            //ArchiveInputStream ais = nowy ArchiveStreamFactory().createArchiveInputStream(plik wejściowy);

            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();
            }

            // Lista tymczasowa do przechowywania nazw wyodrębnionych plików z rozpakowanego folderu
            ArrayList<String> filesList = new ArrayList<>();

            // Pobierz listę wszystkich plików (z pełnymi ścieżkami) z rozpakowanego folderu
            File[] files = outputDir.listFiles();

            // Przejrzyj każdy rozpakowany plik i przekonwertuj go na format PDF
           for (File file : files) {
                // Załaduj wyodrębniony plik
                Converter converter = new Converter(file.getAbsolutePath());
                // Ustaw opcje konwersji dla formatu PDF				
                PdfConvertOptions convertOptions = new PdfConvertOptions();                
                // Konwertuj do formatu PDF
                String outPath = outputDir.getAbsolutePath() + File.separator + file.getName()+ ".pdf";
                converter.convert(outPath, convertOptions);
                // Dodaj nazwy plików do listy tymczasowej po konwersji do formatu PDF
                filesList.add(outPath);
            }

            // Scal pliki PDF za pomocą interfejsu GroupDocs.Merger API
            // Natychmiastowe połączenie z pierwszym wejściowym dokumentem PDF na liście tymczasowej
            Merger merger = new Merger(filesList.get(0));

            // Przeglądaj listę przekonwertowanych dokumentów PDF, zaczynając od drugiego pliku
           for (int i = 1; i < filesList.size(); i++) {
                // Wywołaj metodę Join instancji klasy Merger i przekaż po kolei pozostałe pliki źródłowe
                merger.join(filesList.get(i));
            }

            // Wywołaj metodę Save instancji klasy Merger, aby zapisać scalony dokument PDF
            merger.save("/tmp/output.pdf");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Bezpłatna licencja ewaluacyjna

Możesz konwertować pliki ZIP do formatu PDF i testować w pełni inne funkcje API, prosząc o bezpłatną licencję tymczasową.

Podsumowanie

W tym artykule podsumowano konwersję pliku ZIP do formatu PDF w Javie. Polega na wyodrębnieniu plików z archiwum ZIP, przekonwertowaniu ich do formatu PDF, a następnie połączeniu w jeden dokument PDF. Co więcej, proces ten można dodatkowo zautomatyzować i dostosować do konkretnych wymagań. W przypadku jakichkolwiek niejasności prosimy o kontakt na forum.

Często zadawane pytania

Czy mogę dostosować dokumenty PDF wygenerowane z plików ZIP?

Tak, możesz dostosować dokumenty PDF wygenerowane z plików ZIP. Możesz zastosować różne manipulacje, takie jak ustawienie czcionek, kolorów, układów i innych elementów stylizacji, aby poprawić wizualną prezentację dokumentów PDF. Możesz także dodawać nagłówki, stopki, znaki wodne i adnotacje zgodnie ze swoimi wymaganiami.

Czy mogę przekonwertować określone pliki w archiwum ZIP na format PDF zamiast konwertować wszystkie pliki?

Tak, możesz konwertować określone pliki w archiwum ZIP na format PDF, odpowiednio modyfikując kod Java. Możesz wyodrębnić określone pliki na podstawie ich nazw, rozszerzeń lub innych kryteriów, a następnie przekonwertować tylko te wyodrębnione pliki do formatu PDF. Pozwala to na selektywną konwersję i dostosowywanie w oparciu o Twoje wymagania.

Czy istnieje sposób zabezpieczenia hasłem wynikowego dokumentu PDF podczas konwersji?

Tak, możesz zabezpieczyć hasłem powstały dokument PDF, ponieważ obsługiwane funkcje obejmują szyfrowanie plików PDF, ustawianie haseł, uprawnień i poziomów szyfrowania dokumentów PDF.

Zobacz też