التواقيع الرقمية هي نوع من التوقيع الإلكتروني الذي يمكن استخدامه لتوقيع مستندات الأعمال والصور.يتم استخدامها عادة للعقود والمستندات القانونية والمعلومات الحساسة الأخرى.يتم استخدام التوقيعات الرقمية في المقام الأول مع الملفات الرقمية وتعتبر أكثر أمانًا وتوحيدًا من التواقيع التقليدية (المعروفة أيضًا باسم التوقيعات الرطبة).يشار إلى عملية دمج التوقيعات الرقمية إلكترونياً في الملفات الشخصية أو الرسمية الخاصة بك باسم التوقيع الإلكتروني.
علاوة على ذلك ، يمكن أيضًا اعتبار التوقيع الإلكتروني مخططًا رياضيًا لإظهار ليس فقط الأصالة ولكن أيضًا على سلامة الملفات المصنعة رقميًا.تعد واجهات برمجة التطبيقات الأصلية لـ GroupDocs.Signature لـ .NET و Java أمرًا ضروريًا لمطوري البرامج الذين يرغبون في إنشاء تطبيقات توقيع مرنة تمامًا لتنسيقات الملفات الشائعة مثل DDF و Microsoft Office و OpenOffice ، والصور.تتيح لك واجهات برمجة التطبيقات إضافة أو تحديث أو حذف أنواع متعددة من التوقيعات إلى المستندات والصور الخاصة بك.
قبل بدء توقيع مستنداتك الإلكترونية ، يرجى التأكد من مراجعة .NET و Java التثبيت أدلة GroupDocs.Signature APIs كشرط مسبق.
سنقوم الآن بالتحقق من بعض حالات الاستخدام الشهيرة للوثيقة الإلكترونية عبر منصات .NET و JAVA.
تعد إضافة توقيع إلكتروني ، أو التوقيع الإلكتروني إلى مستند طريقة رائعة للتأكد من أن المستند صالح ويمكن استخدامه لأغراض قانونية أو أخرى محددة.استبدلت الإشارات الإلكترونية في الغالب الممارسة السابقة المتمثلة في توقيع العقود أو المستندات القانونية بقلم وورقة مادية.يمكن أن يكون التوقيع الإلكتروني بسيطًا مثل كتابة اسمك في مستند أو معقد مثل استخدام توقيع رقمي.GroupDocs.Signature APIs دعم إضافة مجموعة من أنواع التوقيع المختلفة التي تتيح للمطورين إنشاء مستندات Office MS ، والصور ، وتطبيقات Signer 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 أو Image Files ، قد تحتاج إلى تحديث المجلدات الإلكترونية التي يتم إضافتها إليها.قد يكون الأمر صعبًا إذا كنت تتعارض مع كميات كبيرة من بيانات الملفات ولكنها مهمة في نفس الوقت للحفاظ على سلامة المستند سليمة.واحدة من أفضل الطرق للتعامل مع هذا هو أتمتة عملية التعديل عن طريق تطوير وحدة برامج تقوم بتحديث التوقيعات الإلكترونية التي تم حقنها بشكل منهجي في ملفاتك.هذا هو المكان الذي تكون فيه واجهات برمجة تطبيقات GroupDocshature مفيدة للغاية.حزم واجهات برمجة التطبيقات عالية الأداء هذه ميزة قوية لتحديث التوقيع الإلكتروني الخاص بك بسهولة.في هذا القسم ، سوف نتعامل مع تحديث توقيع النص وتوقيعات الصور.
// 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!");
}
}
} يتيح لك البحث عن esigns المضافة إلى مستند التحقق من صحة المستند.إذا كنت تعمل في فريق موزعة ، وتعاملت بانتظام مع أنواع مختلفة من الملفات ، فإن أفضل طريقة هي استخدام أداة لا تربحك فقط بإضافة أو إجراء توقيعات ولكن أيضًا التلاعب بها والبحث عنها عند الحاجة.استنادًا إلى نتائج البحث ، يمكن بعد ذلك إعادة تقييم أي ملفات ذات الإشارات الإلكترونية المفقودة ومعالجتها وفقًا لذلك.GroupDocs.Signature APIs الأصليين لـ .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 لـ .NET و Java APIs لديها حلول لك.سيغطي هذا القسم كيف يمكنك إزالة الإشارات الإلكترونية من المستندات.
// 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());
}