تحرير ملف PDF عبر الإنترنت

لدينا متطلب لحذف التفاصيل الحساسة من ملفات PDF بسبب سرية البيانات، لذلك نقوم عادةً بحذف (إزالة النص أو الصورة وما إلى ذلك) من منطقة صفحة معينة من مستند PDF. ومع ذلك، عند التعامل مع مجموعة كبيرة من المستندات، نحتاج إلى استخدام واجهات برمجة التطبيقات لإنجاز هذا المتطلب.

في هذه المقالة، سنناقش الخطوات الخاصة بكيفية تحرير PDF عبر الإنترنت باستخدام فئة RedactionAnnotation من Aspose.PDF Cloud SDK for Java.

تثبيت SDK

Aspose.PDF Cloud SDK for Java عبارة عن واجهة برمجة تطبيقات خاصة بمطوري Java وهي مبنية على واجهة برمجة تطبيقات Aspose.PDF Cloud. يمكن استخدام واجهات برمجة التطبيقات السحابية الخاصة بنا من أي منصة دون الحاجة إلى تثبيت أي برنامج معين. ومع ذلك، لاستخدام SDK، تحتاج أولاً إلى تثبيته على النظام.

تتوفر مجموعة SDK السحابية للتنزيل عبر Maven وGitHub. أضف الآن التفاصيل التالية في ملف pom.xml الخاص بك لتنزيل Aspose.Pdf.jar واستخدامه في مشروع بناء Maven الخاص بك.

<repositories>
 <repository>
        <id>aspose-cloud</id>
        <name>artifact.aspose-cloud-releases</name>
        <url>https://artifact.aspose.cloud/repo</url>
    </repository>   
</repositories>
<dependencies>
 <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-pdf-cloud</artifactId>
        <version>21.1.0</version>
        <scope>compile</scope>
    </dependency>
 </dependencies>

بمجرد تثبيت SDK، فإن الخطوة التالية هي الحصول على معرف العميل والسر الشخصي للعميل. يرجى زيارة لوحة معلومات Aspose.Cloud وإذا كان لديك حساب GitHub أو Google، فما عليك سوى التسجيل. بخلاف ذلك، انقر فوق الزر إنشاء حساب جديد وقم بتقديم المعلومات المطلوبة. الآن قم بتسجيل الدخول إلى لوحة المعلومات باستخدام بيانات الاعتماد وقم بتوسيع قسم التطبيقات. مرر لأسفل نحو قسم بيانات اعتماد العميل لرؤية تفاصيل معرف العميل والسر الشخصي للعميل.

إضافة تعليق التحرير باستخدام Java

في القسم الموضح أدناه، شرحنا الخطوات الخاصة بكيفية إضافة مربع مستطيل لحذف محتوى ملفات PDF باستخدام Aspose.PDF Cloud SDK لـ Java.

  • أولاً، نحتاج إلى إنشاء كائن PdfApi أثناء تمرير تفاصيل ClientId وClientSecret التي تم الحصول عليها من لوحة معلومات Aspose.Cloud.
  • ثانيًا، قم بإنشاء كائن من فئة Rectangle لتحديد المنطقة على الصفحة التي سيتم إضافة التعليقات التوضيحية إليها.
  • ثالثًا، حدد القيمة الافتراضية من تعداد AnnotationFlags وأضفها إلى قائمة نوع AnnotationFlags.
  • الآن قم بإنشاء مثيل لفئة RedactionAnnotation وقم بتعيين المنطقة المستطيلة باستخدام طريقة setRect(…).
  • قم بتعيين المحاذاة الأفقية باستخدام طريقة setHorizontalAlignment(…) واختر المركز من تعداد HorizontalAlignment.
  • لملء اللون داخل التعليق التوضيحي، استخدم طريقة setFillColor(…) ومرر كائن اللون.
  • قم بتعيين تاريخ آخر تعديل للتعليق التوضيحي باستخدام طريقة setModified(…).
  • قبل الأخير، قم بإنشاء قائمة من نوع RedactionAnnotation وأضف كائن RedactAnnotation إلى هذه القائمة.
  • أخيرًا، قم باستدعاء طريقة postPageRedactionAnnotations(…) من PdfApi ومرر اسم ملف المصدر ورقم الصفحة التي يجب إضافة التعليقات التوضيحية إليها. كما مرر RedactionAnnotation List كحجة لبدء عملية التحرير.
// احصل على ClientID وClientSecret من https://dashboard.aspose.cloud/
String clientId = "29ac1517-753f-4303-b755-7185e35cf939";
String clientSecret = "c537caf71eafc8a75a5ee7813b703276";
				
// إنشاء مثيل لـPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// إدخال مستند PDF
String sourcePDF = "PdfWithTable.pdf";

// صفحة PDF لوضع التعليقات التوضيحية
int pageNumber = 1;

// إنشاء كائن مستطيل لتحديد منطقة التعليق التوضيحي
// يتم حساب المنطقة من أسفل يسار الصفحة
Rectangle rect = new Rectangle()

// وحدة القياس هي النقطة
  .LLX(100.)
  .LLY(700.)
  .URX(200.)
  .URY(600.);

// إنشاء مجموعة AnnotationFlags
List<AnnotationFlags> flags = new ArrayList<>();

// تعيين AnnotationFlag إلى الوضع الافتراضي
flags.add(AnnotationFlags.DEFAULT);

// إنشاء قائمة ArrayList من النقاط
List<Point> points = new ArrayList<>();
points.add(new Point().X(10.).Y(40.));
points.add(new Point().X(30.).Y(40.));

// إنشاء كائن التعليق التوضيحي
RedactionAnnotation annotation = new RedactionAnnotation();

// تعيين اسم الشرح التوضيحي. 
// إنه مفيد عندما يكون لدينا تعليقات توضيحية متعددة في مستند
annotation.setName("Name");
// تعيين المنطقة المستطيلة لتعليق التحرير
annotation.setRect(rect);
annotation.setFlags(flags);

// تعيين المحاذاة الأفقية كمركز
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);

// ضبط ZIndex إلى 1. 
annotation.setZindex(1);

// تعريف اللون SlateBlue في الكود السداسي عشري
Color color = new Color();
color.setA(0x00);
color.setR(0x6A);
color.setG(0x5A);
color.setB(0xCD);
// حدد لون التعبئة للتعليق التوضيحي
annotation.setFillColor(color);

// التاريخ والوقت الذي تم فيه تعديل التعليق التوضيحي آخر مرة.
annotation.setModified("05/21/2021 12:00:00.000 AM");

// قم بتعيين مجموعة من الأرقام 8xN لتحديد الإحداثيات 
// من منطقة المحتوى المراد إزالتها.
annotation.setQuadPoint(points);
			        
// إنشاء كائن قائمة من نوع RedactAnnotation
List<RedactionAnnotation> annotations = new ArrayList<>();

// إضافة كائن التعليقات التوضيحية الذي تم إنشاؤه سابقًا إلى مجموعة RedactAnnotation
annotations.add(annotation);

// إضافة RedactAnnotation إلى مستند PDF
AsposeResponse response = pdfApi.postPageRedactionAnnotations(sourcePDF, pageNumber, annotations, null, null, true);
assertEquals(200, (int)response.getCode());
وثيقة PDF المحررة

الصورة 1: - تمت إضافة التعليقات التوضيحية إلى ملف PDF.

قم بتنزيل ملفات العينة المستخدمة في المثال أعلاه من

قراءة التعليقات التوضيحية لتحرير الصفحة

توفر مجموعة أدوات تطوير البرامج السحابية Aspose.PDF for Java أيضًا الإمكانيات اللازمة لقراءة المعلومات المتعلقة بتعليقات Redact الموجودة في مستند PDF. توضح الخطوات الموضحة أدناه كيفية قراءة تفاصيل التعليقات باستخدام Java.

// احصل على ClientID وClientSecret من https://dashboard.aspose.cloud/
String clientId = "29ac1517-753f-4303-b755-7185e35cf939";
String clientSecret = "c537caf71eafc8a75a5ee7813b703276";
				
// إنشاء مثيل لـPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// إدخال مستند PDF
String sourcePDF = "PdfWithTable.pdf";

// احصل على تعليقات تحرير المستندات
RedactionAnnotationsResponse responseAnnotations = pdfApi.getPageRedactionAnnotations(sourcePDF,1, null, null);
assertEquals(200, (int)responseAnnotations.getCode());

// طباعة عدد التعليقات التوضيحية المتوفرة في المستند
System.out.println(responseAnnotations.getAnnotations().getList().size());

تحديث التعليقات التوضيحية التحريرية الموجودة

إذا كان مستند PDF يحتوي بالفعل على تعليقات تحريرية، فيمكننا أيضًا تحديثها باستخدام واجهة برمجة التطبيقات. فيما يلي التفاصيل حول كيفية تحديث التعليقات التوضيحية الموجودة في مستند PDF.

  • إنشاء مثيل لـ PdfApi أثناء تمرير تفاصيل معرف العميل والسر الخاص بالعميل كوسائط.
  • قم بإنشاء كائن مستطيل لتحديد منطقة التعليق التوضيحي. يتم حسابه من أسفل يسار المستند والوحدة الافتراضية هي النقطة.
  • قم بإنشاء قائمة AnnotationFlags وأضف قيمة AnnotationFlags.DEFAULT إلى القائمة.
  • الآن نحتاج إلى إنشاء كائن RedactionAnnotation واستدعاء طريقة setRect(…) لتحديد المنطقة المستطيلة من الشرح التوضيحي.
  • استخدم طريقة setModified(…) لتعيين تاريخ آخر تعديل للتعليق التوضيحي.
  • اتصل بطريقة getDocumentRedactionAnnotations(…) من استدعاء PdfApi لقراءة قائمة التعليقات التوضيحية من المستند.
  • احصل على كائن تعليق معين باستخدام responseAnnotations.getAnnotations().getList().get(0).getId().
  • أخيرًا، قم باستدعاء طريقة putRedactionAnnotation(…) من فئة PdfApi لتحديث Redaction Annotation الموجود في ملف PDF.
// احصل على ClientID وClientSecret من https://dashboard.aspose.cloud/
String clientId = "29ac1517-753f-4303-b755-7185e35cf939";
String clientSecret = "c537caf71eafc8a75a5ee7813b703276";
				
// إنشاء مثيل لـPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// إدخال مستند PDF
String sourcePDF = "PdfWithAnnotations.pdf";	        
			        
// إنشاء منطقة مستطيلة للتعليق التوضيحي  
Rectangle rect = new Rectangle()
  .LLX(200.)
  .LLY(120.)
  .URX(150.)
  .URY(100.);

List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);

List<Point> points = new ArrayList<>();
points.add(new Point().X(10.).Y(40.));
points.add(new Point().X(30.).Y(40.));

// إنشاء كائن تعليق التحرير
RedactionAnnotation annotation = new RedactionAnnotation();
// تعيين اسم للتعليق التوضيحي
annotation.setName("Name Updated");

// تعيين المنطقة المستطيلة للتعليق التوضيحي
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.setZindex(1);
annotation.setModified("01/01/2018 12:02:03.000 AM");
annotation.setQuadPoint(points);

// تعريف اللون SlateBlue في الكود السداسي عشري
Color color = new Color();
color.setA(0x00);
color.setR(0x6A);
color.setG(0x5A);
color.setB(0xCD);

// حدد لون التعبئة للتعليق التوضيحي
annotation.setFillColor(color);

// الحصول على التعليقات التوضيحية الموجودة من المستند
RedactionAnnotationsResponse responseAnnotations = pdfApi.getDocumentRedactionAnnotations(sourcePDF, null, null);
assertEquals(200, (int)responseAnnotations.getCode());

// احصل على التعليق التوضيحي في الفهرس 0
String annotationId = responseAnnotations.getAnnotations().getList().get(0).getId();

// تحديث الشرح التوضيحي عند الفهرس 0
AsposeResponse response = pdfApi.putRedactionAnnotation(sourcePDF, annotationId, annotation, null, null, true);
assertEquals(200, (int)response.getCode());
تم تحديث التعليق التوضيحي

الصورة 2: - تم تحديث التعليق التوضيحي.

يمكن تنزيل ملفات الموارد المستخدمة في المثال أعلاه من الروابط التالية

خاتمة

في هذه المقالة، ناقشنا الخطوات الخاصة بكيفية تحرير المعلومات الحساسة من مستندات PDF. وبصرف النظر عن التعليقات التوضيحية التحريرية، تدعم واجهة برمجة التطبيقات عددًا كبيرًا من ميزات التعليقات التوضيحية الأخرى ويمكن العثور على تفاصيلها على العمل مع التعليقات التوضيحية. يمكنك التفكير في زيارة الصفحة الرئيسية للمنتج لمزيد من المعلومات حول قدراته. إذا كان لديك أي استفسار ذي صلة، فلا تتردد في الاتصال عبر منتدى دعم المنتج المجاني.