Jak podpisać cyfrowo PDF w Javie
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
- Zainstaluj IronPDF dla Java poprzez Maven lub Gradle
- Ustaw swoj klucz licencyjny za pomoca
License.setLicenseKey() - Zaladuj PDF za pomoca
PdfDocument.fromFile() - Utworz
PdfSignaturez plikiem certyfikatu PFX i haslem - Zastosuj podpis za pomoca
signDigitalSignature() - Zapisz podpisany PDF za pomoca
saveAs()
:title=Quickstart
//: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"));
}
}
:title=Quickstart
//: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"));
}
}
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="Przegląd" target="_blank">https://ironpdf.com/java/docs/">Przegląd Href="Rozpoczęcie" target="_blank">https://ironpdf.com/java/docs/">Rozpoczęcie pracy.
Jak Podpisać Cyfrowo Dokument PDF w Java
- Zainstaluj bibliotekę IronPDF Java dla podpisów cyfrowych
- Użyj klasy PdfDocument do załadowania pliku PDF
- Utwórz PdfSignature przy użyciu pliku certyfikatu PFX i hasła
- Opcjonalnie ustaw widoczny obraz podpisu za pomocą
setSignatureImage - Zastosuj podpis za pomocą
signDigitalSignature - Certyfikuj PDF przy użyciu
certifyiPdfCertificationLevel - Zapisz podpisany plik PDF za pomocą
saveAs
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 podpisujacejsetSigningLocation(String): fizyczna lub organizacyjna lokalizacja podpisujacegosetSigningReason(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"));
}
}
//: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"));
}
}
Po zakonczeniu signDigitalSignature(), PDF zawiera kryptograficzny hasz zawartosci dokumentu podpisany kluczem prywatnym z pliku PFX. Jakakolwiek modyfikacja pliku po tym punkcie uniewazni podpis.
IronSuite odgrywa kluczową rolę w naszej działalności. Są to narzędzia zwiększające wydajność w całej firmie, w tym tworzenie planów pięter i poprawa zarządzania zapasami.
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"));
}
}
//: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"));
}
}
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"));
}
}
//: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"));
}
}
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.SHA256jest 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"));
}
}
//: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"));
}
}
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:
- Twórz Formularze PDF w Java: buduj wypełnialne pola formularzy, które można uzupełniać po certyfikacji PDF
- Wypełniaj Formularze PDF w Java: programatycznie wypełniaj pola formularzy w istniejących dokumentach PDF
- Dodawaj Adnotacje do PDF w Java: dołączaj komentarze, podkreślenia i oznaczenia do określonych miejsc na stronach
- Łącz PDF-y w Java: łącz wiele dokumentów przed zastosowaniem pojedynczego podpisu certyfikacyjnego
- Przykłady IronPDF dla Java: kopiuj-wklej próbki kodu obejmujące pełne API Java IronPDF
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.


