Цифровые подписи - это тип электронной подписи, которую можно использовать для подписи бизнес -документов и изображений.Они обычно используются для контрактов, юридических документов и другой конфиденциальной информации.Цифровые подписи используются в первую очередь с цифровыми файлами и считаются более безопасными и стандартизированными, чем традиционные подписи (также известные как влажные подписи).Процесс электронного включения цифровых подписей в ваши личные или официальные файлы называют электронными знаками.
Кроме того, электронная подпись также может рассматриваться как математическая схема для демонстрации не только подлинности, но и целостности обработанных цифровых файлов.Нативные API GroupDocs.Signature для .NET и Java являются обязательными для разработчиков программного обеспечения, которые хотят создать полностью гибкие приложения подписи для популярных форматов файлов, таких как PDF, Microsoft Office, и OpenOffice Documents, а также изображения.API позволяют добавлять, поиск, обновление или удаление нескольких типов подписей в ваши документы и изображения.
Прежде чем начать подписывать электронные документы, пожалуйста, не забудьте просмотреть .NET and Установка Java Руководства GroupDocs.Signature API в качестве предпосылки.
Теперь мы проверим некоторые из популярных вариантов использования электронного документа на платформах .NET и Java.
Добавление электронной подписи или электронную подпись в документ-отличный способ убедиться, что документ действителен и может использоваться для законных или других конкретных целей.Электронные знаки в основном заменили более раннюю практику подписания контрактов или юридических документов физической ручкой и бумагой.Электронная подпись может быть такой же простой, как ввести ваше имя в документ или такую же сложную, как использование цифровой подписи.GroupDocs.Signature API поддерживает добавление множества различных типов подписей, позволяющих разработчикам создавать офисные документы MS, изображения и приложения PDF -подписи в .NET и Java.Этот раздел покажет вам, как добавить эти подписи в ваши файлы данных.
using (Signature signature = new Signature("sample.pdf"))
{
TextSignOptions options = new TextSignOptions("John Smith")
{
// set signature position
Left = 100,
Top = 100,
// set signature rectangle
Width = 100,
Height = 30,
// set Text color and Font
ForeColor = Color.Red,
Font = new SignatureFont { Size = 12, FamilyName = "Comic Sans MS" }
};
// sign document to file
signature.Sign("sample_signed.pdf", options);
}
Signature signature = new Signature("sample.pdf");
TextSignOptions options = new TextSignOptions("John Smith");
// set signature position
options.setLeft(100);
options.setTop(100);
// set signature rectangle
options.setWidth(100);
options.setHeight(30);
// set text color and Font
options.setForeColor(Color.RED);
SignatureFont signatureFont = new SignatureFont();
signatureFont.setSize(12);
signatureFont.setFamilyName("Comic Sans MS");
options.setFont(signatureFont);
// sign document to file
signature.sign("sample_signed.pdf", options);
using (Signature signature = new Signature("sample.pdf"))
{
// initialize digital option with certificate file path
DigitalSignOptions options = new DigitalSignOptions("certificate.pfx")
{
// optional image setup (file path)
ImageFilePath = "sample.jpg",
// set signature position
Left = 100,
Top = 100,
// set
Password = "1234567890"
};
signature.Sign("sampleSigned.pdf", options);
}
Signature signature = new Signature("sample.pdf");
DigitalSignOptions options = new DigitalSignOptions("certificate.pfx");
// optional image setup (file path)
options.setImageFilePath("sample.jpg");
options.setLeft(100);
options.setTop(100);
options.setPassword("1234567890");
// sign document to file
signature.sign("sampleSigned.pdf", options); Работая с PDF, Microsoft Office, OpenOffice или файлами изображений, вам может потребоваться обновить добавленные к ним электронные подписи.Было бы сложно, если вы сталкиваетесь с большими объемами данных файла, но в то же время важно, чтобы целостность документа не повреждена.Одним из лучших методов обработки является автоматизация процесса модификации путем разработки программного модуля, который систематически обновляет электронные подписи, введенные в ваши файлы.Именно здесь API GroupDoc.Signature чрезвычайно полезны.Эти высокопроизводительные API-интерфейсы упаковывают мощный набор функций, чтобы легко обновить ваши электронные знаки.В этом разделе мы будем иметь дело с обновлением текстовой подписи и подписей изображений.
// Passing the document to class constructor in which the signature will be updated
using (Signature signature = new Signature("sampleSigned.pdf"))
{
TextSearchOptions options = new TextSearchOptions();
// search for text signatures in document
List signatures = signature.Search(options);
if(signatures.Count > 0)
{
TextSignature textSignature = signatures[0];
// change Text property
textSignature.Text = "John Walkman";
// change position
textSignature.Left = textSignature.Left + 10;
textSignature.Top = textSignature.Top + 10;
// change size. Please note not all documents support changing signature size
textSignature.Width = 200;
textSignature.Height = 100;
bool result = signature.Update(textSignature);
if(result)
{
Console.WriteLine($"Signature with Text '{textSignature.Text}' was updated in the document ['{fileName}'].");
}
else
{
Console.WriteLine($"Signature was not updated in the document! Signature with Text '{textSignature.Text}' was not found!");
}
}
}
// Pass the document to class constructor in which the signature will be updated
using (Signature signature = new Signature("sampleSigned.pdf"))
{
ImageSearchOptions options = new ImageSearchOptions();
// search for image signatures in document
List signatures = signature.Search(options);
if(signatures.Count > 0)
{
ImageSignature imageSignature = signatures[0];
// change Image properties
signatureToUpdate.Top = 200;
signatureToUpdate.Left = 200;
signatureToUpdate.Width = 300;
signatureToUpdate.Height = 150;
bool result = signature.Update(imageSignature);
if(result)
{
Console.WriteLine($"Signature with Top '{imageSignature.Top}' was updated in the document ['{fileName}'].");
}
else
{
Console.WriteLine($"Signature was not updated in the document! Signature with Top '{imageSignature.Top}' was not found!");
}
}
}
Signature signature = new Signature("sampleSigned.pdf");
try {
TextSearchOptions options = new TextSearchOptions();
// search for text signatures in document
List signatures = signature.search(TextSignature.class, options);
if (signatures.size() > 0) {
TextSignature textSignature = signatures.get(0);
// change Text property
textSignature.setText("John Walkman");
// change position
textSignature.setLeft(textSignature.getLeft() + 50);
textSignature.setTop(textSignature.getTop() + 50);
// change size. Please note not all documents support changing signature size
textSignature.setWidth(200);
textSignature.setHeight(100);
boolean result = signature.update("sampleSigned.pdf",textSignature);
if (result) {
System.out.print("Signature with Text '" + textSignature.getText() + "' was updated in the document ['sampleSigned.pdf'].");
} else {
System.out.print("Signature was not updated in the document! Signature with Text '" + textSignature.getText() + "' was not found!");
}
}
} catch (Exception e) {
throw new GroupDocsSignatureException(e.getMessage());
}
using (Signature signature = new Signature("sampleSigned.pdf"))
{
ImageSearchOptions options = new ImageSearchOptions();
// search for image signatures in document
List signatures = signature.Search(options);
if(signatures.Count > 0)
{
ImageSignature imageSignature = signatures[0];
// change Image properties
signatureToUpdate.Top = 200;
signatureToUpdate.Left = 200;
signatureToUpdate.Width = 300;
signatureToUpdate.Height = 150;
bool result = signature.Update(imageSignature);
if(result)
{
Console.WriteLine($"Signature with Top '{imageSignature.Top}' was updated in the document ['{fileName}'].");
}
else
{
Console.WriteLine($"Signature was not updated in the document! Signature with Top '{imageSignature.Top}' was not found!");
}
}
} Поиск эзинсов, добавленных в документ, позволяет проверить подлинность документа.Если вы работаете в распределенной команде и регулярно имеете дело с различными видами файлов, лучшим способом будет использование инструмента, который не только дает вам добавление или создание подписей, но и манипулирование и поиск их при необходимости.На основании результатов поиска любые файлы с отсутствующими электронными знаками могут быть переоценены и обработаны соответствующим образом.GroupDocs.Signature Native API для .NET и Java включают функции поиска подписи для PDF и других документов, электронных таблиц, презентаций и многих других форматов данных.В этом разделе мы будем проверять, как вы сможете искать несколько различных типов E -подписей в .net и Java.
using (Signature signature = new Signature("sample.pdf"))
{
// search document
List signatures = signature.Search(SignatureType.Image);
Console.WriteLine($"\nSource document ['{fileName}'] contains following image signature(s).");
// output signatures
foreach (ImageSignature imageSignature in signatures)
{
Console.WriteLine($"Image signature found at page {imageSignature.PageNumber} with size {imageSignature.Size}. Created {imageSignature.CreatedOn}, modified {imageSignature.ModifiedOn}");
}
}
Signature signature = new Signature(sample.pdf);
// setup search options
TextSearchOptions options = new TextSearchOptions();
// specify as true to search all pages of a document
options.setAllPages(true);
// search only page with specified number
options.setPageNumber(1);
// specify text math type
options.setMatchType(TextMatchType.Contains);
// specify text to search
options.setText("John Smith");
// search for text signatures in document
List signatures = signature.search(TextSignature.class,options);
// output signatures
for (TextSignature textSignature : signatures)
{
if (textSignature != null)
{
System.out.print("Found Text signature at page "+sign.getPageNumber()+" with type ["+sign.getSignatureImplementation()+"] and text '"+sign.getText()+"'.");
System.out.print("Location at "+sign.getLeft()+"-"+sign.getTop()+". Size is "+sign.getWidth()+"x"+sign.getHeight()+".");
}
} Когда вы удаляете свою электронную подпись из документа, важно понять, почему вы это делаете, и лучший способ сделать это.Удаление электронных подписей из документов может потребоваться по разным причинам.Например, документ больше не может понадобиться, или у подписавшего больше нет веской причины сохранить свою подпись в документе.В качестве альтернативы, документ, возможно, был изменен или обновлен, считая подпись недействительной.Независимо от причин, GroupDocs.Signature для API .NET и Java имеют решения для вас.В этом разделе будет рассмотрено, как вы можете удалить электронные знаки из документов.
// initialize Signature instance
using (Signature signature = new Signature("signed.pdf"))
{
TextSearchOptions options = new TextSearchOptions();
List signatures = signature.Search(options);
List signaturesToDelete = new List();
// collect signatures to delete
foreach (TextSignature temp in signatures)
{
if (temp.Text.Contains("John"))
{
signaturesToDelete.Add(temp);
}
}
// delete signatures
DeleteResult deleteResult = signature.Delete(signaturesToDelete);
if (deleteResult.Succeeded.Count == signaturesToDelete.Count)
{
Console.WriteLine("All signatures were successfully deleted!");
}
else
{
Console.WriteLine($"Successfully deleted signatures : {deleteResult.Succeeded.Count}");
Console.WriteLine($"Not deleted signatures : {deleteResult.Failed.Count}");
}
Console.WriteLine("List of deleted signatures:");
foreach (BaseSignature temp in deleteResult.Succeeded)
{
Console.WriteLine($"Signature# Id:{temp.SignatureId}, Location: {temp.Left}x{temp.Top}. Size: {temp.Width}x{temp.Height}");
}
}
// initialize Signature instance
Signature signature = new Signature("signed.docx");
ImageSearchOptions options = new ImageSearchOptions();
List signatures = signature.search(ImageSignature.class, options);
List signaturesToDelete = new ArrayList();
// collect signatures to delete
for (ImageSignature temp : signatures)
{
if (temp.getSize() > 10000)
{
signaturesToDelete.add(temp);
}
}
// delete signatures
DeleteResult deleteResult = signature.delete("signed.docx",signaturesToDelete);
if (deleteResult.getSucceeded().size() == signaturesToDelete.size())
{
System.out.print("All signatures were successfully deleted!");
}
else
{
System.out.print("Successfully deleted signatures : "+deleteResult.getSucceeded().size());
System.out.print("Not deleted signatures : "+deleteResult.getFailed().size());
}
System.out.print("List of deleted signatures:");
for(BaseSignature temp : deleteResult.getSucceeded())
{
System.out.print("Signature# Id:"+temp.getSignatureId()+", Location: "+temp.getLeft()+"x"+temp.getTop()+". Size: "+temp.getWidth()+"x"+temp.getHeight());
}