IRONSOFTWAREHOME

Jak podpisać cyfrowo PDF w Javie

Curtis Chau
Curtis Chau
Updated: 16 czerwca 2026

Podpisywanie cyfrowe PDF-a w Javie z IronPDF pozwala na zastosowanie podpisów kryptograficznych, które weryfikują autentyczność dokumentu i wykrywają nieautoryzowane zmiany. IronPDF obsluguje PdfSignature do dolaczania podpisow opartych na certyfikatach PFX do dowolnego PDF-a, ustawiania widocznych obrazów podpisów, kontroli poziomów certyfikacji PDF z PdfCertificationLevel oraz laczenia sie z serwerem urzedu znacznikow czasowych w celu dlugotrwalej waznosci podpisu.

Szybki start: Podpisuj cyfrowo PDF-a w Javie
  1. Zainstaluj IronPDF dla Java poprzez Maven lub Gradle
  2. Ustaw swoj klucz licencyjny za pomoca License.setLicenseKey()
  3. Zaladuj PDF za pomoca PdfDocument.fromFile()
  4. Utworz PdfSignature z plikiem certyfikatu PFX i haslem
  5. Zastosuj podpis za pomoca signDigitalSignature()
  6. Zapisz podpisany PDF za pomoca saveAs()
  1. 1Install IronPDF with Maven Central Repository

    > mvn install

  2. 2Skopiuj i uruchom ten fragment kodu.

    //:path=/static-assets/ironpdf-java/content-code-examples/how-to/how-to-digitally-sign-pdfs-java-tutorial/quickstart.java
    import java.io.IOException;
    import java.nio.file.Path;
    import com.ironsoftware.ironpdf.License;
    import com.ironsoftware.ironpdf.PdfDocument;
    import com.ironsoftware.ironpdf.signature.PdfSignature;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            // Set the IronPDF license key
            License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
    
            // Load an existing PDF document
            PdfDocument pdf = PdfDocument.fromFile(Path.of("document.pdf"));
    
            // Create a PdfSignature using a PFX certificate file and its password
            PdfSignature signature = new PdfSignature("certificate.pfx", "password123");
    
            // Set signature metadata for audit trails
            signature.setSigningContact("John Smith");
            signature.setSigningLocation("New York");
            signature.setSigningReason("Document Approval");
    
            // Apply the digital signature to the PDF
            pdf.signDigitalSignature(signature);
    
            // Save the signed PDF to a new file
            pdf.saveAs(Path.of("signed.pdf"));
        }
    }
    Java
  3. 3Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronPDF w swoim projekcie już dziś z darmową wersją próbną
    arrow pointer

Podpisy cyfrowe nadają dokumentom PDF tożsamość kryptograficzną powiązaną z kluczem prywatnym i certyfikatem. Gdy odbiorca otworzy podpisany PDF w Adobe Acrobat lub innym zgodnym programie, aplikacja weryfikuje, czy łańcuch certyfikatów sięga zaufanego organu oraz czy zawartość dokumentu nie zmieniła się od momentu podpisania. To połączenie uwierzytelnienia i integralności czyni podpisy cyfrowe niezbędnymi dla umów, faktur, zgłoszeń regulacyjnych i wszelkich dokumentów, w których dowód ingerencji ma znaczenie.

Podpisy PDF dzielą się na dwie kategorie: podpisy zatwierdzające i podpisy autora (certyfikacyjne). Podpis zatwierdzający rejestruje akceptację jednego podpisującego w określonym momencie; wiele stron może dodawać podpisy zatwierdzające w kolejności bez unieważniania wcześniejszych. Podpis certyfikacyjny, zastosowany za pomocą certify(), blokuje dokument wedlug PdfCertificationLevel i oznacza podpisujacego jako autora dokumentu. Podpisy certyfikacyjne muszą być pierwszym podpisem w dokumencie i kontrolują, jakie zmiany mogą wprowadzać kolejni podpisujacy, jeśli w ogóle.

IronPDF obsluguje oba typy podpisów przez spójne API oparte na PdfSignature i PdfDocument. Dla początkowej konfiguracji, konfiguracji zależności i instrukcji dotyczących kluczy licencyjnych zapoznaj się z Przegląd Href="https://ironpdf.com/java/docs/">Przegląd Href="https://ironpdf.com/java/docs/">Rozpoczęcie pracy.

Co jest potrzebne przed rozpoczęciem?

Przed podpisaniem plików PDF za pomocą IronPDF, upewnij się, że spełnione są następujące wymagania:

  • Java 8 lub wyższa: IronPDF wymaga JDK w wersji 8 lub nowszej.
  • IronPDF for Java: Dodaj zależność do pliku buildowego. Znajdź najnowszą wersję na Maven Central.
  • Wazny klucz licencyjny: Ustaw klucz podczas uruchomienia aplikacji za pomocä License.setLicenseKey(). Dla szczegółów konfiguracji, odwiedź przewodnik po kluczach licencyjnych.
  • Plik certyfikatu PFX lub P12: Jest to chronione hasłem archiwum zawierające Twój klucz prywatny i certyfikat publiczny w formacie PKCS#12. Certyfikaty samopodpisane nadają się do rozwoju i testowania; dla dokumentów produkcyjnych, które muszą być zaufane przez zewnętrznych odbiorców, użyj certyfikatu wydanego przez uznanego Dostawcę Usług Certyfikacyjnych (CA) takiego jak DigiCert, Comodo, czy GlobalSign.

Dla pełnej konfiguracji zależności i konfiguracji projektu, odnieś się do Przegląd rozpoczęcia pracy.

Jak Zastosować Podpis Cyfrowy do Pliku PDF?

Konstruktor PdfSignature przyjmuje sciezke do pliku certyfikatu PFX oraz jego haslo. Po skonstruowaniu, możesz dołączyć opcjonalne metadane przez trzy metody ustawiające:

  • setSigningContact(String): nazwa lub email osoby podpisujacej
  • setSigningLocation(String): fizyczna lub organizacyjna lokalizacja podpisujacego
  • setSigningReason(String): krotki opis, dlaczego dokument jest podpisywany

Te pola pojawiają się w panelu właściwości podpisu w przeglądarkach PDF i tworzą przydatny zapis audytu do celów zgodności. Wywolaj signDigitalSignature(PdfSignature) na zaladowanym PdfDocument, aby osadzic podpis kryptograficzny, nastepnie zapisz wynik za pomocą saveAs().

//:path=/static-assets/ironpdf-java/content-code-examples/how-to/how-to-digitally-sign-pdfs-java-tutorial/apply-signature.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.PdfSignature;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the IronPDF license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF to sign
        PdfDocument pdf = PdfDocument.fromFile(Path.of("contract.pdf"));

        // Construct the PdfSignature with the certificate path and password
        PdfSignature signature = new PdfSignature("certificate.pfx", "password123");

        // Set metadata that will appear in the signature properties panel
        signature.setSigningContact("Jane Doe");
        signature.setSigningLocation("Austin, TX");
        signature.setSigningReason("Contract Approval");

        // Embed the digital signature in the PDF
        pdf.signDigitalSignature(signature);

        // Save the signed document
        pdf.saveAs(Path.of("contract-signed.pdf"));
    }
}
Java

Po zakonczeniu signDigitalSignature(), PDF zawiera kryptograficzny hasz zawartosci dokumentu podpisany kluczem prywatnym z pliku PFX. Jakakolwiek modyfikacja pliku po tym punkcie uniewazni podpis.

Jak Dodać Widoczny Obraz Podpisu do Pliku PDF?

Widoczny obraz podpisu umieszcza graficzną reprezentację bezpośrednio na stronie PDF w miejscu pola podpisu. Jest to często używane do wyświetlenia zeskanowanego odręcznego podpisu, pieczęci firmowej lub logotypu, aby dokument wyglądał na podpisany, gdy jest drukowany lub przeglądany, a nie tylko podczas sprawdzania w panelu podpisu czytelnika PDF.

Aby dodac widoczny obraz, otworz plik obraz z FileInputStream i przekaz go do PdfSignature.setSignatureImage(InputStream) przed wywolaniem signDigitalSignature(). Obraz jest osadzany w polu podpisu na stronie.

//:path=/static-assets/ironpdf-java/content-code-examples/how-to/how-to-digitally-sign-pdfs-java-tutorial/visible-signature-image.java
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.PdfSignature;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the IronPDF license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF document to sign
        PdfDocument pdf = PdfDocument.fromFile(Path.of("agreement.pdf"));

        // Build the PdfSignature from a PFX certificate
        PdfSignature signature = new PdfSignature("certificate.pfx", "password123");

        // Set signing metadata
        signature.setSigningContact("Alice Johnson");
        signature.setSigningLocation("Chicago, IL");
        signature.setSigningReason("Agreement Authorization");

        // Open the signature image file and attach it to the signature
        FileInputStream imageStream = new FileInputStream("signature.png");
        signature.setSignatureImage(imageStream);

        // Apply the digital signature with the visible image to the PDF
        pdf.signDigitalSignature(signature);

        // Save the signed PDF with the visible signature image embedded
        pdf.saveAs(Path.of("agreement-signed.pdf"));
    }
}
Java

Obraz podpisu nie zastępuje ochrony kryptograficznej; zarówno graficzny stempel, jak i podstawowy certyfikat pozostają częścią podpisanego wyniku. Formaty PNG i JPEG są obsługiwane dla obrazu podpisu.

Jak Certyfikować Dokument PDF Z Określonym Poziomem Uprawnień?

Certyfikowanie dokumentu PDF różni się od dodawania podpisu zatwierdzającego. Gdy wywolujesz pdf.certify(PdfSignature, PdfCertificationLevel), podpisujesz dokument jako jego autor i okreslasz, jakie typy zmian sa dopuszczalne przez pozniejszych uzytkowników. Certyfikowany dokument PDF wyświetla niebieską wstążkę lub podobny wskaźnik zaufania w Adobe Acrobat, sygnalizując odbiorcom, że dokument pochodzi z zweryfikowanego źródła.

IronPDF zapewnia trzy poziomy certyfikacji poprzez enum PdfCertificationLevel:

  • PdfCertificationLevel.NO_CHANGES_ALLOWED: dokument jest w pelni zablokowany po certyfikacji; żadne dalsze modyfikacje nie są dozwolone.
  • PdfCertificationLevel.FORM_FILLING: odbiorcy moga wypelniac pola formularza, ale nie moga dodawac komentarzy, adnotacji ani innych zmian.
  • PdfCertificationLevel.FORM_FILLING_AND_ANNOTATIONS: odbiorcy moga wypelniac pola formularza i dodawac adnotacje, ale edycje strukturalne sa nadal zabronione.

Poniewaz podpis certyfikacyjny musi byc pierwszym podpisem na dokumencie, wywolaj certify() przed zastosowaniem jakikolwiek akceptacji podpisów od innych stron.

//:path=/static-assets/ironpdf-java/content-code-examples/how-to/how-to-digitally-sign-pdfs-java-tutorial/certify-pdf.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.PdfCertificationLevel;
import com.ironsoftware.ironpdf.signature.PdfSignature;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the IronPDF license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF that will be certified
        PdfDocument pdf = PdfDocument.fromFile(Path.of("report.pdf"));

        // Create the PdfSignature from the author's certificate
        PdfSignature signature = new PdfSignature("author-certificate.pfx", "password123");

        // Set author metadata for the certification signature
        signature.setSigningContact("Legal Department");
        signature.setSigningLocation("San Francisco, CA");
        signature.setSigningReason("Official Publication");

        // Certify the document with NO_CHANGES_ALLOWED to lock it completely
        // Use FORM_FILLING to allow form field input after certification
        // Use FORM_FILLING_AND_ANNOTATIONS to also permit annotations
        pdf.certify(signature, PdfCertificationLevel.NO_CHANGES_ALLOWED);

        // Save the certified PDF
        pdf.saveAs(Path.of("report-certified.pdf"));
    }
}
Java

Po certyfikacji z NO_CHANGES_ALLOWED, jakakolwiek proba modyfikacji PDF zerwie podpis certyfikacyjny i przegladarki PDF beda wyswietlac ostrzezenie. Wybierz FORM_FILLING lub FORM_FILLING_AND_ANNOTATIONS, gdy certyfikowany dokument musi byc wypelniony lub adnotowany przez pozniejszych odbiorców bez uniewaznienia certyfikatu autora.

Jak Dodać Znacznik Czasu do Podpisu Cyfrowego?

Serwer Urzędu Czasu (TSA) dostarcza kryptograficznie podpisany token czasowy, który jest osadzany razem z podpisem w PDF. Ten znacznik czasu udowadnia, kiedy podpis został zastosowany, niezależnie od lokalnego zegara podpisującego. Długoterminowa ważność zależy od znaczników czasu: nawet po wygaśnięciu certyfikatu podpisującego, zaufany znacznik czasu pozwala walidatorom potwierdzić, że podpis został stworzony, gdy certyfikat był jeszcze ważny.

Aby wlaczyc timestamping, ustaw dwie wlasciwosci na obiekcie PdfSignature przed podpisywaniem:

  • setTimestampHashAlgorithm(PdfHashAlgorithm): okresla algorytm skracający, ktorego nalezy uzywac podczas obliczania tokena znacznika czasu. PdfHashAlgorithm.SHA256 jest standardowym wyborem.
  • setTimestampUrl(String): adres HTTP lub HTTPS serwera TSA, który wyda token znaczka czsu.

Kilka serwerów TSA jest dostępnych bezpłatnie do testowania i niskonakładowych zastosowań produkcyjnych. https://freetsa.org/tsr i http://timestamp.digicert.com to dwa powszechnie uzywane endpoints.

//:path=/static-assets/ironpdf-java/content-code-examples/how-to/how-to-digitally-sign-pdfs-java-tutorial/timestamp-signature.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.PdfHashAlgorithm;
import com.ironsoftware.ironpdf.signature.PdfSignature;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the IronPDF license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF to sign with a timestamp
        PdfDocument pdf = PdfDocument.fromFile(Path.of("invoice.pdf"));

        // Construct the PdfSignature from the certificate file
        PdfSignature signature = new PdfSignature("certificate.pfx", "password123");

        // Set signature metadata
        signature.setSigningContact("Finance Team");
        signature.setSigningLocation("Seattle, WA");
        signature.setSigningReason("Invoice Authorization");

        // Configure the timestamp: set the hash algorithm and TSA endpoint
        signature.setTimestampHashAlgorithm(PdfHashAlgorithm.SHA256);
        signature.setTimestampUrl("https://freetsa.org/tsr");

        // Apply the digital signature; IronPDF will contact the TSA to obtain
        // and embed a timestamp token alongside the cryptographic signature
        pdf.signDigitalSignature(signature);

        // Save the timestamped, signed PDF
        pdf.saveAs(Path.of("invoice-signed-timestamped.pdf"));
    }
}
Java

Gdy TSA jest niedostępny w momencie podpisywania, IronPDF rzuci wyjątek; sprawdź dostępność sieci i adres URL punktu końcowego TSA przed wdrożeniem do produkcji. Dla wysokiego obciążenia, rozważ subskrypcję komercyjnego TSA, aby zapewnić gwarancje dostępności i przepustowości.

Jakie Są Kolejne Kroki dla Podpisywania Cyfrowego Plików PDF w Java?

Klasa PdfSignature IronPDF obejmuje pelny zakres wymagan dotyczacych podpisów PDF: akceptacyjne podpisy metadanymi certyfikatów, widoczne graficzne znaki, certyfikacje PDF z poziomami kontroli dostepu i timestampy wspierane przez TSA dla dlugotrwalej waznosci. Aby rozszerzyć swoje przepływy pracy PDF poza podpisywanie, odkryj te powiązane zasoby:

Rozpocznij swoj darmowy okres probny dodawania sygnatur cyfrowych do swojego procesu Java PDF. Aby zakupic licencje do użytku produkcyjnego, zobacz opcje licencjonowania.

Często Zadawane Pytania

Jak cyfrowo podpisać PDF w Java za pomocą IronPDF?

Wczytaj swój PDF za pomocą PdfDocument.fromFile(), utwórz PdfSignature używając ścieżki do pliku certyfikatu PFX i jego hasła, opcjonalnie ustaw metadane za pomocą setSigningContact(), setSigningLocation() i setSigningReason(), następnie wywołaj pdf.signDigitalSignature(signature) i zapisz za pomocą pdf.saveAs().

Jaka jest różnica między signDigitalSignature() a certify() w IronPDF?

signDigitalSignature() dodaje podpis zatwierdzający, który rejestruje zatwierdzenie jednego sygnatariusza. Wiele podpisów zatwierdzających może być dodanych w kolejności. certify() dodaje podpis autora, który musi być pierwszy w dokumencie i ustawia PdfCertificationLevel kontrolujący, jakie zmiany mogą wprowadzać kolejni sygnatariusze.

Jak dodać widoczny obraz podpisu do podpisanego PDF w Java?

Otwórz plik obrazu jako FileInputStream i przekaż go do signature.setSignatureImage(imageStream) przed wywołaniem signDigitalSignature(). Obraz jest osadzony w polu podpisu na stronie obok podpisu kryptograficznego.

Jakie poziomy certyfikacji PDF obsługuje IronPDF?

IronPDF obsługuje trzy poziomy za pośrednictwem wyliczenia PdfCertificationLevel: NO_CHANGES_ALLOWED całkowicie blokuje dokument, FORM_FILLING zezwala tylko na wprowadzanie danych w polach formularzy, a FORM_FILLING_AND_ANNOTATIONS zezwala na pola formularzy i adnotacje, zapobiegając strukturalnym edycjom.

Jak dodać znacznik czasu do podpisu cyfrowego w Java?

Ustaw signature.setTimestampHashAlgorithm(PdfHashAlgorithm.SHA256) i signature.setTimestampUrl("https://freetsa.org/tsr") w PdfSignature przed wywołaniem signDigitalSignature(). IronPDF kontaktuje się z serwerem TSA i osadza token znacznika czasu w podpisanym PDF.

Jaki format pliku certyfikatu jest wymagany przez IronPDF do podpisywania PDF?

IronPDF wymaga pliku certyfikatu PFX lub P12, co jest archiwum PKCS#12 zawierającym klucz prywatny i publiczny certyfikat. Certyfikaty samopodpisane działają w celach rozwojowych; do użycia produkcyjnego uzyskaj certyfikat od zaufanego Urzędu Certyfikacji takiego jak DigiCert lub GlobalSign.

Jakie są wymogi wstępne do cyfrowego podpisywania plików PDF za pomocą IronPDF w Java?

Potrzebujesz Java 8 lub nowszego, dodanej zależności IronPDF przez Maven lub Gradle, ważnego klucza licencyjnego ustawionego za pomocą License.setLicenseKey() oraz pliku certyfikatu PFX lub P12 z jego hasłem.

How do I certify a document with no changes allowed using IronPDF?

To certify a document with no changes allowed, construct a PdfSignature, set any required metadata, and call pdf.certify() with the PdfCertificationLevel.NO_CHANGES_ALLOWED parameter before applying any approval signatures.

What are the benefits of using digital signatures on PDFs with IronPDF?

Digital signatures ensure the authenticity and integrity of a document by creating a cryptographic identity tied to a private key. They are ideal for contracts, invoices, and legal documents, where tamper evidence and verification are crucial.

What next steps are recommended after setting up digital signatures with IronPDF?

After setting up digital signatures, consider exploring related IronPDF functionalities, such as creating and filling PDF forms, adding annotations, and merging PDFs to enhance your Java PDF workflow.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Gotowy, aby rozpocząć?

Wersja:2026.6właśnie wydany

Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta
Biblioteka Java Maven dla PDF
Zainstaluj za pomocą Maven

Wersja: 2026.6

<dependency>
   <groupId>com.ironsoftware</groupId>
   <artifactId>ironpdf</artifactId>
   <version>2026.6.1</version>
</dependency>
https://central.sonatype.com/artifact/com.ironsoftware/ironpdf/2026.6.1
lub
Plik JAR PDF Java
Pobierz JAR

Wersja: 2026.6

Ręcznie zainstaluj w swoim projekcie

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

OR
bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta
Biblioteka Java Maven dla PDF
Zainstaluj za pomocą Maven

Wersja: 2026.6

<dependency>
   <groupId>com.ironsoftware</groupId>
   <artifactId>ironpdf</artifactId>
   <version>2026.6.1</version>
</dependency>
https://central.sonatype.com/artifact/com.ironsoftware/ironpdf/2026.6.1
lub
Plik JAR PDF Java
Pobierz JAR

Wersja: 2026.6

Ręcznie zainstaluj w swoim projekcie