PDF: Как добавить цифровую подпись к PDF-документу
В этом разделе
PDF-документ можно подписать с помощью цифрового сертификата, который можно получить в доверенном центре сертификации (CA), таком как DigiCert или GlobalSign. Также можно
создать самоподписанный цифровой сертификат
для внутренних целей или в целях тестирования.
VintaSoft Imaging .NET SDK может подписывать PDF-документы с помощью цифрового сертификата. SDK использует технологию "байтового диапазона" для подписи PDF-документов, т.е. SDK вычисляет контрольную сумму для двоичных данных всего документа. Рассчитанная контрольная сумма и цифровая подпись сохраняются в поле подписи интерактивной формы PDF-документа.
Если PDF-документ должен быть подписан с использованием цифровой подписи, необходимо выполнить следующие действия:
- Создайте поле для подписи, в котором будет храниться подпись.
- Определите информацию о цифровом сертификате.
- Добавьте цифровой сертификат в поле подпись.
- Определите внешний вид поля подписи. Этот шаг следует выполнить, если цифровая подпись должна иметь визуальный вид, например, выглядеть как обычный росчерк пера.
- Добавьте поле для подписи в интерактивную форму PDF-документа.
- Добавьте аннотацию, которая представляет поле подписи, в список аннотаций страницы PDF, где должна располагаться подпись.
- Сохраните изменения в PDF-документе - PDF-документ будет подписан во время сохранения документа.
Если PDF-документ должен содержать поле для подписи для дальнейшего подписания документа другим лицом, необходимо выполнить следующие действия:
- Создайте поле для подписи, в котором будет храниться подпись.
- Определите внешний вид поля подписи. Этот шаг следует выполнить, если цифровая подпись должна иметь визуальный вид, например, выглядеть как обычный росчерк пера.
- Добавьте поле для подписи в интерактивную форму PDF-документа.
- Добавьте аннотацию, которая представляет поле подписи, в список аннотаций страницы PDF, где должна располагаться подпись.
- Сохраните изменения в PDF-документе.
Вот код на C#/VB.NET, который демонстрирует, как подписать PDF-документ и поставить временную метку:
/// <summary>
/// Signs a PDF or PDF/A document using X509 Certificate.
/// </summary>
/// <param name="inputFilename">The filename of input PDF document.</param>
/// <param name="outputFilename">The filename of output PDF document.</param>
/// <param name="certificate">The X509 certificate.</param>
/// <param name="conformance">PDF/A conformance.</param>
public static void SignDocument(
string inputFilename,
string outputFilename,
X509Certificate2 certificate,
PdfDocumentConformance conformance)
{
// create digital signature helper
PdfPageDigitalSignatureHelper digitalSignatureHelper = new PdfPageDigitalSignatureHelper(certificate, new RectangleF(10, 10, 250, 75));
// set signing reason
digitalSignatureHelper.SigningReason = "Test signing";
// set text
digitalSignatureHelper.SignatureText = string.Format("Digitally signed by\n{0}", digitalSignatureHelper.SignerName);
PdfAConverter pdfAConverter = null;
// if specified PDF/A conformance
if (conformance != PdfDocumentConformance.Undefined)
{
// create PDF/A converter
pdfAConverter = (PdfAConverter)PdfDocumentConverter.Create(conformance);
//pdfAConverter.DefaultCmykIccProfileFilename = "DefaultCMYK.icc";
//pdfAConverter.DefaultRgbIccProfileFilename = "DefaultRGB.icc";
}
// sign PDF document and save PDF document to the output file
digitalSignatureHelper.SignDocument(inputFilename, outputFilename, 0, pdfAConverter);
}
''' <summary>
''' Signs a PDF or PDF/A document using X509 Certificate.
''' </summary>
''' <param name="inputFilename">The filename of input PDF document.</param>
''' <param name="outputFilename">The filename of output PDF document.</param>
''' <param name="certificate">The X509 certificate.</param>
''' <param name="conformance">PDF/A conformance.</param>
Public Shared Sub SignDocument(inputFilename As String, outputFilename As String, certificate As X509Certificate2, conformance As PdfDocumentConformance)
' create digital signature helper
Dim digitalSignatureHelper As New PdfPageDigitalSignatureHelper(certificate, New RectangleF(10, 10, 250, 75))
' set signing reason
digitalSignatureHelper.SigningReason = "Test signing"
' set text
digitalSignatureHelper.SignatureText = String.Format("Digitally signed by" & vbLf & "{0}", digitalSignatureHelper.SignerName)
Dim pdfAConverter As PdfAConverter = Nothing
' if specified PDF/A conformance
If conformance <> PdfDocumentConformance.Undefined Then
' create PDF/A converter
'pdfAConverter.DefaultCmykIccProfileFilename = "DefaultCMYK.icc";
'pdfAConverter.DefaultRgbIccProfileFilename = "DefaultRGB.icc";
pdfAConverter = DirectCast(PdfDocumentConverter.Create(conformance), PdfAConverter)
End If
' sign PDF document and save PDF document to the output file
digitalSignatureHelper.SignDocument(inputFilename, outputFilename, 0, pdfAConverter)
End Sub
Пожалуйста, ознакомьтесь с тем, как проверить цифровые подписи в PDF-документе
здесь
.
Пожалуйста, прочтите, как удалить цифровую подпись из PDF-документа
здесь
.