DrawSignatureAppearance(PdfGraphics,RectangleF) Метод (PdfPageDigitalSignatureHelper)
Рисует представление подписи.
Вот пример, который показывает, как подписать PDF документ с помощью видимой цифровой подписи с настраиваемым внешним видом:
Imports System.Drawing
Imports System.Security.Cryptography.X509Certificates
Imports Vintasoft.Imaging.Pdf
Imports Vintasoft.Imaging.Pdf.Drawing
Imports Vintasoft.Imaging.Pdf.Tree.Fonts
''' <summary>
''' Adds visible digital signature with custom appearance to a PDF page.
''' </summary>
Public Class PdfPageDigitalSignatureHelper_CustomAppearance
Public Shared Sub Run()
' get the X509 certificate from .pfx-file
Using certificate As New X509Certificate2("TestCertificate.pfx", "test")
' create a helper that alows to add digital signature to a PDF document
Dim digitalSignatureHelper As New MyDigitalSignatureHelper(certificate, New RectangleF(20, 20, 250, 100))
' set the background color for signature
digitalSignatureHelper.SignatureBackgoundColor = Color.Green
' set the reason for signing
digitalSignatureHelper.SigningReason = "Approve document"
' set text for signature appearance
digitalSignatureHelper.SignatureText = String.Format("Digitally signed by" & vbLf & "{0}", digitalSignatureHelper.SignerName)
' add digital signature to the first PDF page, sign PDF document and save PDF document to the output file
digitalSignatureHelper.SignDocument("TestDocumentToSign.pdf", "TestDocumentToSign-signed.pdf", 0)
End Using
End Sub
Public Class MyDigitalSignatureHelper
Inherits PdfPageDigitalSignatureHelper
Public Sub New(certificate As X509Certificate2, signatureRect As RectangleF)
MyBase.New(certificate, signatureRect)
End Sub
''' <summary>
''' Draws the text on signature appearance.
''' </summary>
''' <param name="graphics">The PDF graphics.</param>
''' <param name="rect">The rectangle.</param>
''' <param name="font">The text font.</param>
''' <param name="text">The text do draw.</param>
Protected Overrides Sub DrawSignatureAppearanceText(graphics As PdfGraphics, rect As RectangleF, font As PdfFont, text As String)
' create border pen
Dim borderPen As New PdfPen(Color.Orange, 10)
' draw border
graphics.DrawRectangle(borderPen, rect)
' padding
rect.Inflate(-borderPen.Width * 2, -borderPen.Width * 2)
' measure font size
Dim fontSize As Single = graphics.MeasureFontSize(text, font, rect.Width, rect.Height)
' draw the signature text
graphics.DrawString(text, font, fontSize, New PdfBrush(SignatureTextColor), rect, SignatureTextAlignment, _
False)
End Sub
End Class
End Class
using System.Drawing;
using System.Security.Cryptography.X509Certificates;
using Vintasoft.Imaging.Pdf;
using Vintasoft.Imaging.Pdf.Drawing;
using Vintasoft.Imaging.Pdf.Tree.Fonts;
/// <summary>
/// Adds visible digital signature with custom appearance to a PDF page.
/// </summary>
public class PdfPageDigitalSignatureHelper_CustomAppearance
{
public static void Run()
{
// get the X509 certificate from .pfx-file
using (X509Certificate2 certificate = new X509Certificate2("TestCertificate.pfx", "test"))
{
// create a helper that alows to add digital signature to a PDF document
MyDigitalSignatureHelper digitalSignatureHelper =
new MyDigitalSignatureHelper(certificate, new RectangleF(20, 20, 250, 100));
// set the background color for signature
digitalSignatureHelper.SignatureBackgoundColor = Color.Green;
// set the reason for signing
digitalSignatureHelper.SigningReason = "Approve document";
// set text for signature appearance
digitalSignatureHelper.SignatureText =
string.Format("Digitally signed by\n{0}", digitalSignatureHelper.SignerName);
// add digital signature to the first PDF page, sign PDF document and save PDF document to the output file
digitalSignatureHelper.SignDocument("TestDocumentToSign.pdf", "TestDocumentToSign-signed.pdf", 0);
}
}
public class MyDigitalSignatureHelper : PdfPageDigitalSignatureHelper
{
public MyDigitalSignatureHelper(X509Certificate2 certificate, RectangleF signatureRect)
: base(certificate, signatureRect)
{
}
/// <summary>
/// Draws the text on signature appearance.
/// </summary>
/// <param name="graphics">The PDF graphics.</param>
/// <param name="rect">The rectangle.</param>
/// <param name="font">The text font.</param>
/// <param name="text">The text do draw.</param>
protected override void DrawSignatureAppearanceText(PdfGraphics graphics, RectangleF rect, PdfFont font, string text)
{
// create border pen
PdfPen borderPen = new PdfPen(Color.Orange, 10);
// draw border
graphics.DrawRectangle(borderPen, rect);
// padding
rect.Inflate(-borderPen.Width * 2, -borderPen.Width * 2);
// measure font size
float fontSize = graphics.MeasureFontSize(text, font, rect.Width, rect.Height);
// draw the signature text
graphics.DrawString(text, font, fontSize, new PdfBrush(SignatureTextColor), rect, SignatureTextAlignment, false);
}
}
}
Целевые платформы: .NET 11; .NET 10; .NET 9; .NET 8; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5