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

PDFsharp Podpisz dokumenty PDF Cyfrowo vs IronPDF (Przykład kodu)

Podpis cyfrowy to technika matematyczna służąca do weryfikacji autentyczności i integralności dokumentu elektronicznego. Służy jako podpis elektroniczny do cyfrowego podpisywania dokumentów w wielu jurysdykcjach, zapewniając wysokie bezpieczeństwo i ważność prawną.

Podpisy cyfrowe są tworzone przy użyciu klucza prywatnego, który jest znany wyłącznie podpisującemu. Ten klucz prywatny tworzy unikalny podpis cyfrowy powiązany z dokumentem w momencie jego podpisania. Podpis zawiera imię i nazwisko osoby podpisującej, adres e-mail oraz inne dane osobowe. Aby potwierdzić autentyczność dokumentu podpisanego cyfrowo, odbiorca musi mieć dostęp do klucza publicznego podpisującego. Prawdziwość podpisu jest weryfikowana poprzez jego odszyfrowanie przy użyciu klucza publicznego.

W tym samouczku porównujemy sposoby dodawania podpisów cyfrowych do dokumentów PDF przy użyciu PDFSharp i IronPDF. Podpisy cyfrowe są niezbędne do weryfikacji autentyczności dokumentów, a pliki PDF są popularnym formatem do takich operacji.

PDFsharp to znana biblioteka open source do tworzenia i edycji plików PDF, natomiast IronPDF to solidna biblioteka .NET do obsługi plików PDF, oferująca podobne funkcje oraz dodatkowe zaawansowane możliwości.

Niniejszy przewodnik obejmuje podpisywanie dokumentu PDF za pomocą klucza prywatnego oraz weryfikację podpisu, a także przykładowy kod źródłowy dla obu bibliotek.

Dlaczego podpisy cyfrowe są ważne?

Podpisy cyfrowe zapewniają integralność dokumentów i oferują solidne zabezpieczenia. Są one powszechnie stosowane w umowach, porozumieniach i innych dokumentach prawnych.

Główne zalety:

  • Bardziej bezpieczne i odporne na manipulacje niż tradycyjne podpisy.
  • Weryfikowane elektronicznie, co ogranicza nakłady związane z ręczną weryfikacją.
  • Włącz globalne zdalne podpisywanie dokumentów.
  • Zapewnia większe bezpieczeństwo niż tradycyjne podpisy.

Przegląd PDFsharp

PDFSharp to biblioteka open source napisana w języku C#, przeznaczona przede wszystkim do tworzenia i edycji dokumentów PDF. Jest szeroko stosowany do podstawowych zadań związanych z plikami PDF, takich jak generowanie prostych plików PDF, edycja istniejących dokumentów i renderowanie grafiki. Jednak natywna obsługa zaawansowanych funkcji, takich jak podpisy cyfrowe, jest ograniczona, a programiści często muszą polegać na bibliotekach innych firm, takich jak BouncyCastle, aby zintegrować takie funkcje. PDFsharp jest oprogramowaniem typu open source, objętym licencją MIT, co czyni go dobrym wyborem dla projektów, w których priorytetem są koszty i elastyczność.

Najważniejsze cechy

  • Oprogramowanie typu open source i bezpłatne na licencji MIT.
  • Podstawowe tworzenie i edycja plików PDF.
  • Możliwość rozszerzenia o biblioteki zewnętrzne, takie jak BouncyCastle do obsługi podpisów cyfrowych.
  • Brak wbudowanej obsługi zaawansowanych funkcji PDF, takich jak konwersja HTML do PDF i obsługa złożonych formularzy.

Przegląd IronPDF

PDFsharp – cyfrowe podpisywanie dokumentów PDF a IronPDF (przykład kodu): Rysunek 1 – image.png

IronPDF to solidna biblioteka .NET do obsługi plików PDF, która zapewnia proste i wydajne API do generowania, edycji i manipulowania plikami PDF. Jedną z jego wyróżniających się cech jest łatwość, z jaką programiści mogą wdrażać podpisy cyfrowe, które są niezbędne do weryfikacji autentyczności dokumentów. Oprócz podpisów cyfrowych IronPDF obsługuje zaawansowane funkcje, takie jak konwersja HTML do PDF, znak wodny i obsługa formularzy. Jest to szczególnie cenne dla programistów pracujących nad projektami komercyjnymi, w których priorytetem jest szybkie wdrożenie i solidne funkcje.

Najważniejsze cechy

  • Dostępna jest licencja komercyjna z płatnym wsparciem technicznym oraz bezpłatna wersja próbna.
  • Łatwe w użyciu API z nowoczesnymi funkcjami do podpisywania cyfrowego i edycji dokumentów.
  • Obejmuje wbudowaną obsługę konwersji formatu HTML do PDF, obsługi formularzy oraz adnotacji w plikach PDF (takich jak adnotacje w załącznikach).
  • Płynna integracja z zaawansowanymi funkcjami, takimi jak oznaczanie czasem, wizualne obrazy podpisów i szyfrowanie.

Programowe dodawanie podpisu cyfrowego za pomocą PDFsharp

PDFsharp to biblioteka open source przeznaczona do tworzenia i edycji plików PDF w języku C#. Jednakże, mimo że oferuje ono obsługę dodawania podpisu, konieczne będzie zintegrowanie narzędzia zewnętrznego, takiego jak BouncyCastle, aby zapewnić bezpieczne i dokładne podpisywanie cyfrowe dokumentów PDF.

Kroki dodawania podpisu cyfrowego za pomocą PDFsharp

  1. Zainstaluj PDFsharp i BouncyCastle za pośrednictwem NuGet.
  2. Utwórz certyfikat cyfrowy przy użyciu klasy X509Certificate2.
  3. Podpisz plik PDF za pomocą BouncyCastle.

Przykładowy kod

using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using BouncyCastleSigner; // Hypothetical namespace for illustration
// Ensure that you have the appropriate namespaces added

class Program
{
    static void Main(string[] args)
    {
        // Create a font for the appearance of the signature
        var font = new XFont("Verdana", 10.0, XFontStyle.Regular);

        // Create a new PDF document
        var document = new PdfDocument();
        var pdfPage = document.AddPage();

        // Prepare graphics for drawing on the PDF page
        var xGraphics = XGraphics.FromPdfPage(pdfPage);
        var layoutRectangle = new XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point);

        // Add some text to the page
        xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter);

        // Define digital signature appearance options
        var options = new DigitalSignatureOptions
        {
            ContactInfo = "John Doe",
            Location = "Seattle",
            Reason = "License Agreement",
            Rectangle = new XRect(36.0, 700.0, 400.0, 50.0),
            AppearanceHandler = new SignatureAppearanceHandler()
        };

        // Sign the document using BouncyCastle signer
        var pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document,
            new PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options);

        // Save the signed document
        document.Save("PdfSharpSignature.pdf");
    }

    static (X509Certificate2, X509Certificate2Collection) GetCertificate()
    {
        // Locate the certificate file and read its data
        var certFolder = "C:\\Users\\kyess\\AppData\\Roaming\\Adobe\\Acrobat\\DC\\Security";
        var pfxFile = Path.Combine(certFolder, "IronSoftware.pfx");
        var rawData = File.ReadAllBytes(pfxFile);

        // Load the certificate using its password (example password)
        var certificatePassword = "Passw0rd";
        var certificate = new X509Certificate2(rawData, certificatePassword,
            X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);

        // Create and return the certificate collection
        var collection = new X509Certificate2Collection();
        collection.Import(rawData, certificatePassword,
            X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
        return (certificate, collection);
    }
}
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using BouncyCastleSigner; // Hypothetical namespace for illustration
// Ensure that you have the appropriate namespaces added

class Program
{
    static void Main(string[] args)
    {
        // Create a font for the appearance of the signature
        var font = new XFont("Verdana", 10.0, XFontStyle.Regular);

        // Create a new PDF document
        var document = new PdfDocument();
        var pdfPage = document.AddPage();

        // Prepare graphics for drawing on the PDF page
        var xGraphics = XGraphics.FromPdfPage(pdfPage);
        var layoutRectangle = new XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point);

        // Add some text to the page
        xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter);

        // Define digital signature appearance options
        var options = new DigitalSignatureOptions
        {
            ContactInfo = "John Doe",
            Location = "Seattle",
            Reason = "License Agreement",
            Rectangle = new XRect(36.0, 700.0, 400.0, 50.0),
            AppearanceHandler = new SignatureAppearanceHandler()
        };

        // Sign the document using BouncyCastle signer
        var pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document,
            new PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options);

        // Save the signed document
        document.Save("PdfSharpSignature.pdf");
    }

    static (X509Certificate2, X509Certificate2Collection) GetCertificate()
    {
        // Locate the certificate file and read its data
        var certFolder = "C:\\Users\\kyess\\AppData\\Roaming\\Adobe\\Acrobat\\DC\\Security";
        var pfxFile = Path.Combine(certFolder, "IronSoftware.pfx");
        var rawData = File.ReadAllBytes(pfxFile);

        // Load the certificate using its password (example password)
        var certificatePassword = "Passw0rd";
        var certificate = new X509Certificate2(rawData, certificatePassword,
            X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);

        // Create and return the certificate collection
        var collection = new X509Certificate2Collection();
        collection.Import(rawData, certificatePassword,
            X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
        return (certificate, collection);
    }
}
Imports System
Imports System.IO
Imports System.Security.Cryptography.X509Certificates
Imports PdfSharp.Drawing
Imports PdfSharp.Pdf
Imports BouncyCastleSigner ' Hypothetical namespace for illustration
' Ensure that you have the appropriate namespaces added

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Create a font for the appearance of the signature
		Dim font = New XFont("Verdana", 10.0, XFontStyle.Regular)

		' Create a new PDF document
		Dim document = New PdfDocument()
		Dim pdfPage = document.AddPage()

		' Prepare graphics for drawing on the PDF page
		Dim xGraphics = XGraphics.FromPdfPage(pdfPage)
		Dim layoutRectangle = New XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point)

		' Add some text to the page
		xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter)

		' Define digital signature appearance options
		Dim options = New DigitalSignatureOptions With {
			.ContactInfo = "John Doe",
			.Location = "Seattle",
			.Reason = "License Agreement",
			.Rectangle = New XRect(36.0, 700.0, 400.0, 50.0),
			.AppearanceHandler = New SignatureAppearanceHandler()
		}

		' Sign the document using BouncyCastle signer
		Dim pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document, New PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options)

		' Save the signed document
		document.Save("PdfSharpSignature.pdf")
	End Sub

	Private Shared Function GetCertificate() As (X509Certificate2, X509Certificate2Collection)
		' Locate the certificate file and read its data
		Dim certFolder = "C:\Users\kyess\AppData\Roaming\Adobe\Acrobat\DC\Security"
		Dim pfxFile = Path.Combine(certFolder, "IronSoftware.pfx")
		Dim rawData = File.ReadAllBytes(pfxFile)

		' Load the certificate using its password (example password)
		Dim certificatePassword = "Passw0rd"
		Dim certificate = New X509Certificate2(rawData, certificatePassword, X509KeyStorageFlags.MachineKeySet Or X509KeyStorageFlags.PersistKeySet Or X509KeyStorageFlags.Exportable)

		' Create and return the certificate collection
		Dim collection = New X509Certificate2Collection()
		collection.Import(rawData, certificatePassword, X509KeyStorageFlags.MachineKeySet Or X509KeyStorageFlags.PersistKeySet Or X509KeyStorageFlags.Exportable)
		Return (certificate, collection)
	End Function
End Class
$vbLabelText   $csharpLabel

Wynik

PDFsharp – cyfrowe podpisywanie dokumentów PDF w porównaniu z IronPDF (przykład kodu): Rysunek 2

Jak widać, choć udało się utworzyć pole podpisu cyfrowego i zastosować certyfikat w naszym nowym dokumencie, proces ten jest rozbudowany, wymaga ręcznej obsługi i nie jest zbyt wydajny w porównaniu z bibliotekami takimi jak IronPDF.

Dodawanie podpisu cyfrowego za pomocą IronPDF

IronPDF zapewnia programistom zwięzłą metodę cyfrowego podpisywania dokumentów PDF.

using IronPdf;
using System.Security.Cryptography.X509Certificates;

public class Program
{
    static void Main(string[] args)
    {
        // Load the certificate with its password
        var sig = new PdfSignature("IronSoftware.pfx", "your-password");

        // Configure additional signature details
        sig.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
        sig.TimestampUrl = "http://timestamp.digicert.com";
        sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 200, 200));

        // Sign and save the PDF document
        sig.SignPdfFile("output.pdf");
    }
}
using IronPdf;
using System.Security.Cryptography.X509Certificates;

public class Program
{
    static void Main(string[] args)
    {
        // Load the certificate with its password
        var sig = new PdfSignature("IronSoftware.pfx", "your-password");

        // Configure additional signature details
        sig.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
        sig.TimestampUrl = "http://timestamp.digicert.com";
        sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 200, 200));

        // Sign and save the PDF document
        sig.SignPdfFile("output.pdf");
    }
}
Imports IronPdf
Imports System.Security.Cryptography.X509Certificates

Public Class Program
	Shared Sub Main(ByVal args() As String)
		' Load the certificate with its password
		Dim sig = New PdfSignature("IronSoftware.pfx", "your-password")

		' Configure additional signature details
		sig.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256
		sig.TimestampUrl = "http://timestamp.digicert.com"
		sig.SignatureImage = New PdfSignatureImage("IronPdf.png", 0, New Rectangle(150, 100, 200, 200))

		' Sign and save the PDF document
		sig.SignPdfFile("output.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Wynik

PDFsharp – cyfrowe podpisywanie dokumentów PDF a IronPDF (przykład kodu): Rysunek 3

Ten kod pokazuje, jak podpisać dokument PDF przy użyciu klasy PdfSignature biblioteki IronPDF. Program najpierw tworzy obiekt PdfSignature, określając lokalizację pliku certyfikatu .pfx oraz jego hasło. Następnie ustawia dodatkowe właściwości podpisu, takie jak algorytm skrótu (SHA256), adres URL znacznika czasu oraz niestandardowy obraz dla podpisu (IronPdf.png).

Na koniec wywoływana jest metoda SignPdfFile w celu nałożenia podpisu cyfrowego na dokument PDF i zapisania go jako output.pdf. Proces ten zapewnia integralność i autentyczność pliku PDF poprzez osadzenie podpisu cyfrowego wraz z sygnaturą czasową i obrazem.

PDFSharp:

  • Oprogramowanie open source na licencji MIT.
  • Wymaga bibliotek zewnętrznych (np. BouncyCastle) do korzystania z zaawansowanych funkcji, takich jak podpis cyfrowy.

IronPDF:

Wniosek: IronPDF a PDFsharp w zakresie podpisów cyfrowych w języku C

Porównując biblioteki IronPDF i PDFsharp pod kątem dodawania podpisów cyfrowych do plików PDF w języku C#, należy zauważyć, że obie oferują wyraźne zalety w zależności od potrzeb danego projektu.

  • IronPDF jest idealnym rozwiązaniem dla programistów, niezależnie od tego, czy są to niezależni freelancerzy, czy programiści zatrudnieni w firmach, poszukujący prostego, łatwego w użyciu interfejsu API do umieszczania podpisów cyfrowych w plikach PDF, wyposażonego w nowoczesne funkcje. Płynna integracja z aplikacją do podpisów cyfrowych, konwersją HTML na PDF i innymi funkcjami PDF sprawia, że jest to doskonały wybór dla projektów komercyjnych, w których priorytetem jest łatwość użytkowania i szybkie wdrożenie. Dzięki płatnemu wsparciu technicznemu i przejrzystej strukturze licencji komercyjnych IronPDF doskonale nadaje się dla firm, które potrzebują prostego i niezawodnego rozwiązania.

  • PDFsharp wyróżnia się w zakresie podstawowego tworzenia i edycji plików PDF, ale brakuje mu zaawansowanych funkcji i bezpośredniej obsługi podpisów cyfrowych, które oferuje IronPDF. Chociaż PDFsharp jest oprogramowaniem typu open source i można z niego korzystać bezpłatnie, jego API jest mniej intuicyjne w pracy z podpisami cyfrowymi w porównaniu z IronPDF, a programiści mogą być zmuszeni do stosowania dodatkowych rozwiązań lub bibliotek innych firm w celu obsługi tych funkcji.

Podsumowując, IronPDF to najlepszy wybór dla programistów poszukujących prostego i szybkiego rozwiązania do obsługi podpisów cyfrowych i powiązanych zadań związanych z plikami PDF, zwłaszcza w środowiskach komercyjnych. PDFsharp lepiej nadaje się do podstawowych zadań związanych z plikami PDF, ale nie jest tak łatwy w użyciu i nie oferuje takiego samego zestawu funkcji do obsługi podpisów cyfrowych, co sprawia, że lepiej nadaje się do prostszych projektów lub tych, które wymagają dodatkowego dostosowania.

Zwróć uwagęPDFsharp i BouncyCastle są zastrzeżonymi znakami towarowymi ich właścicieli. Ta strona nie jest powiązana z PDFsharp ani BouncyCastle, nie jest przez nie promowana ani sponsorowana. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.

Często Zadawane Pytania

W jaki sposób podpisy cyfrowe zapewniają autentyczność i integralność dokumentów PDF?

Podpisy cyfrowe wykorzystują techniki kryptograficzne do weryfikacji, czy dokument PDF nie został zmieniony po podpisaniu. Potwierdzają one tożsamość podpisującego i gwarantują, że treść dokumentu pozostaje niezmieniona, zapewniając bezpieczeństwo i ważność prawną.

Jakie wyzwania mogą napotkać programiści podczas korzystania z PDFsharp do dodawania podpisów cyfrowych?

Korzystając z PDFsharp do dodawania podpisów cyfrowych, programiści zazwyczaj muszą zintegrować biblioteki innych firm, takie jak BouncyCastle. Wymóg ten może skomplikówać proces wdrażania, ponieważ programiści muszą zarządzać dodatkowymi zależnościami, aby tworzyć certyfikaty cyfrowe i podpisywać pliki PDF.

Dlaczego programista miałby wybrać komercyjną bibliotekę PDF zamiast biblioteki open source do podpisywania cyfrowego?

Komercjalna biblioteka PDF oferuje zaawansowane funkcje, wbudowaną obsługę podpisów cyfrowych oraz przyjazny dla użytkownika interfejs API. Cechy te sprawiają, że jest ona bardziej odpowiednia dla programistów poszukujących szybkiego, niezawodnego rozwiązania z dedykowanym wsparciem, zwłaszcza w projektach komercyjnych, gdzie czas i wydajność mają kluczowe znaczenie.

Jak przekonwertować HTML na PDF w aplikacji .NET?

HTML można przekonwertować na PDF w aplikacji .NET za pomocą biblioteki takiej jak IronPDF, która udostępnia metody takie jak RenderHtmlAsPdf do bezpośredniej transformacji ciągów znaków lub plików HTML na dokumenty PDF, obsługując różne opcje stylizacji i skryptów.

Jakie są zalety korzystania z IronPDF do obsługi plików PDF w projektach komercyjnych?

IronPDF oferuje kompleksową Suite funkcji do obsługi plików PDF, w tym podpisy cyfrowe, konwersję HTML do PDF oraz przetwarzanie formularzy. Solidne wsparcie techniczne i przyjazny dla użytkownika interfejs API sprawiają, że jest to idealne rozwiązanie dla projektów komercyjnych, w których priorytetem są zaawansowane funkcje i szybkie wdrożenie.

Czy można dodać znacznik czasu do cyfrowego podpisu w pliku PDF za pomocą biblioteki .NET?

Tak, dzięki bibliotece takiej jak IronPDF można dodać sygnaturę czasową do podpisu cyfrowego w formacie PDF, podając adres URL serwera sygnatur czasowych w konfiguracji podpisu. Ta funkcja zwiększa wiarygodność i zgodność z przepisami prawnymi podpisanego dokumentu.

Co należy wziąć pod uwagę przy wyborze biblioteki PDF do wdrożenia podpisu cyfrowego?

Wybierając bibliotekę PDF do obsługi podpisów cyfrowych, należy wziąć pod uwagę takie czynniki, jak łatwość obsługi, obsługa zaawansowanych funkcji, możliwości integracji z narzędziami innych firm oraz dostępność dedykowanej obsługi klienta, które często są bardziej kompleksowe w bibliotekach komercyjnych, takich jak IronPDF.

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

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie