Przejdź do treści stopki
PORóWNANIA PRODUKTóW

Przejdź z Aspose PDF na IronPDF

"Podpisywanie" oznacza trzy różne rzeczy w IronPDF, i nie są one wymienne: niezmienne dowody podpisu cyfrowego popartego certyfikatem, wizualny stempel z odręcznym obrazem oraz interaktywne pole do późniejszego podpisania przez użytkownika. Ich wlasciwosci bezpieczenstwa roznia sie, wiec przypadki uzycia sa rozdzielone zgodnie z tym podzialem. Kryptograficznym rdzeniem jest klasa PdfSignature z X509Certificate2 zaladowanym z pliku .pfx lub .p12, stosowana za pomoca pdf.Sign(...). To wiąże tożsamość z treścią, więc każde późniejsze edytowanie łamie podpis.

Umowy i kontrakty z oznakami ingerencji

Jedna z pierwszych, po którą zespoły sięgają. Podpis certyfikatu dowodzi, że dokument jest autentyczny i niezmieniony, i pozwala na osadzenie ścieżki audytu (powód, lokalizacja, kontakt, data) i zaufanego znacznika czasu:

using IronPdf;
using IronPdf.Signing;
using System;

var pdf = PdfDocument.FromFile("contract.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningReason = "Contractual Agreement",
    SigningLocation = "Chicago, USA",
    SignatureDate = DateTime.Now,
    TimeStampUrl = new Uri("http://timestamp.digicert.com"),
    TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256
};
pdf.Sign(signature);
pdf.SaveAs("contract-signed.pdf");
using IronPdf;
using IronPdf.Signing;
using System;

var pdf = PdfDocument.FromFile("contract.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningReason = "Contractual Agreement",
    SigningLocation = "Chicago, USA",
    SignatureDate = DateTime.Now,
    TimeStampUrl = new Uri("http://timestamp.digicert.com"),
    TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256
};
pdf.Sign(signature);
pdf.SaveAs("contract-signed.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System

Dim pdf = PdfDocument.FromFile("contract.pdf")
Dim signature = New PdfSignature("certificate.pfx", "password") With {
    .SigningReason = "Contractual Agreement",
    .SigningLocation = "Chicago, USA",
    .SignatureDate = DateTime.Now,
    .TimeStampUrl = New Uri("http://timestamp.digicert.com"),
    .TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256
}
pdf.Sign(signature)
pdf.SaveAs("contract-signed.pdf")
$vbLabelText   $csharpLabel

Znacznik czasu z zaufanej instytucji zapewnia kryptograficzny dowód kiedy dokument został podpisany, niezależnie od lokalnego zegara - co ma znaczenie dla składania dokumentów i regulowanych zgłoszeń.

Zamknięcie dokumentów po podpisaniu

Ustawienie SignaturePermissions kontroluje, co jest dozwolone po tym: NoChangesAllowed blokuje dokument, FormFillingAllowed zezwala tylko na wprowadzanie danych w polach, a AnnotationsAndFormFillingAllowed zezwala rowniez na dodawanie notatek. Każde niedozwolone działanie unieważnia podpis, co pasuje do wydawanych certyfikatów, zatwierdzonych zasad i finalnych oświadczeń.

Przepływy pracy zatwierdzeń wielostronnych

Ponieważ PDFy wspierają zapisywanie inkrementalne, podpis dotyczy konkretnej rewizji. Każdy zatwierdzający podpisuje swoje własne, a historia zapisuje, kto podpisał co, kiedy i co się zmieniło. To obejmuje współpodpisywanie i sekwencyjne zatwierdzanie.

Weryfikacja i bramki audytowe

Pipeline może odrzucić każdy dokument, który się nie weryfikuje, a następnie cofnąć lub usunąć podpisy:

var pdf = PdfDocument.FromFile("signed-report.pdf");
bool valid = pdf.VerifySignatures();

if (!valid)
{
    pdf.RemoveSignatures();
    pdf.SaveAs("report-unsigned.pdf");
}
var pdf = PdfDocument.FromFile("signed-report.pdf");
bool valid = pdf.VerifySignatures();

if (!valid)
{
    pdf.RemoveSignatures();
    pdf.SaveAs("report-unsigned.pdf");
}
Dim pdf = PdfDocument.FromFile("signed-report.pdf")
Dim valid As Boolean = pdf.VerifySignatures()

If Not valid Then
    pdf.RemoveSignatures()
    pdf.SaveAs("report-unsigned.pdf")
End If
$vbLabelText   $csharpLabel

Widoczna aprobata bez kryptografii

Gdy potrzebujesz tylko wyglądu podpisu, nie prawnego wyłączenia odpowiedzialności, odciśnij zeskanowany odręczny obraz za pomocą funkcji stempa lub znaku wodnego. Dobrze do zatwierdzeń wewnętrznych, o ile jesteś jasny, czym jest.

Stempel lub certyfikat i dwa punkty zaskoczenia

Nigdy nie pozwalaj, by obraz stempla zastąpił certyfikat podpisu. Stempel to piksele na stronie: da się go skopiować, niezweryfikowany, brak gwarancji, że dokument jest niezmieniony. Certyfikat podpisu jest odporny na manipulacje i kryptograficznie wiąże tożsamość z treścią. Użyj stempla dla wyglądu, certyfikatu do dowodu.

Dwie rzeczy zaskoczą ludzi. Zaladowanie certyfikatu za pomoca X509KeyStorageFlags.Exportable jest konieczne, inaczej klucz prywatny nie moze byc uzyty i podpisanie sie nie powiedzie. A jesli przegladarka pokazuje ostrzezenie zamiast zielonego znacznika, certyfikat nie znajduje sie w zaufanym magazynie tej przegladarki; podpis jest nadal wazny, ale zaufanie musi byc ustalone osobno.

Często Zadawane Pytania

Jakie są trzy rodzaje podpisywania PDF w IronPDF?

IronPDF wspiera: (1) kryptograficzne podpisy cyfrowe wspierane certyfikatem X.509, które wiążą tożsamość z treścią i unieważniają się po manipulacji; (2) wizualne pieczątki obrazkowe, które umieszczają obraz podpisu odręcznego na stronie bez dowodu kryptograficznego; oraz (3) interaktywne pola podpisu, gdzie użytkownik podpisuje później w przeglądarce PDF.

Jak dodać podpis cyfrowy z dowodem manipulacji do PDF w C#?

Załaduj certyfikat X.509 z pliku .pfx lub .p12 do obiektu PdfSignature, ustaw powód podpisu, lokalizację, datę i opcjonalnie zaufany URL znacznika czasowego, a następnie wywołaj pdf.Sign(signature) i zapisz.

Jaka jest różnica między cyfrowym podpisem PDF a wizualną pieczątką?

Podpis cyfrowy kryptograficznie wiąże tożsamość certyfikatu z treścią dokumentu — każda późniejsza edycja go łamie. Wizualna pieczątka to tylko obraz na stronie: można ją kopiować, nie jest weryfikowalna i nie daje gwarancji, że dokument nie został zmieniony. Używaj pieczątek dla wyglądu; certyfikatów dla dowodu prawnego.

Dlaczego IronPDF nie może podpisać z komunikatem 'klucz prywatny niedostępny'?

Załaduj certyfikat X.509 z flagą X509KeyStorageFlags.Exportable. Bez niej klucz prywatny nie może być dostępny do podpisania.

Jak zweryfikować i usunąć podpisy z PDF w IronPDF?

Wywołaj pdf.VerifySignatures(), aby sprawdzić, czy wszystkie podpisy są ważne. Jeśli wynik jest fałszywy, wywołaj pdf.RemoveSignatures(), aby je usunąć przed ponownym przetwarzaniem lub ponownym podpisaniem.

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ę...

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie