تعليقات التمييز بالألوان باستخدام C#

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

يمكن تعديل خصائص تعليقات توضيح تنسيق النص في مستند PDF باستخدام نافذة الخصائص المتوفرة في عنصر تحكم عارض PDF. يمكن تعديل لون، شفافية، مؤلف، وموضوع تعليق توضيح النص.

من الممكن الحصول على أو تعيين إعدادات تعليقات التمييز باستخدام خاصية highlightSettings. تستخدم خاصية highlightSettings لتعيين اللون، الشفافية، المؤلف، الموضوع، تاريخ التعديل وخصائص isLocked لتعليقات التمييز.

من الممكن أيضًا الحصول على أو تعيين إعدادات تعليقات الخط المشطوب باستخدام خاصية strikethroughSettings. تستخدم خاصية strikethroughSettings لتعيين اللون، الشفافية، المؤلف، الموضوع، تاريخ التعديل، وخصائص isLocked لتعليقات الخط المشطوب.

الميزة التالية هي القدرة على الحصول على أو تعيين إعدادات تعليقات الخط السفلي باستخدام خاصية underlineSettings. الميزة التالية هي القدرة على الحصول على إعدادات أو تعيين إعدادات التسطير باستخدام خاصية underlineSettings.

يعمل مقتطف الكود التالي أيضًا مع مكتبة Aspose.PDF.Drawing.

إضافة توضيح نصي للعلامات

لإضافة توضيح نصي للعلامات إلى مستند PDF، نحتاج إلى أداء الإجراءات التالية:

  1. تحميل ملف PDF - كائن Document جديد.
  2. إنشاء التعليقات التوضيحية:
  • تحت خط وقم بتعيين الخصائص (العنوان، اللون).
  1. بعد ذلك يجب إضافة جميع التعليقات التوضيحية إلى الصفحة.
using Aspose.Pdf.Annotations;
using Aspose.Pdf.Text;
using System;
using System.Linq;

namespace Aspose.Pdf.Examples.Advanced
{
    class ExampleTextMarkupAnnotation
    {
        // المسار إلى مجلد الوثائق.
        private const string _dataDir = "..\\..\\..\\..\\Samples";

        public static void AddTextMarkupAnnotation()
        {
            try
            {
                // تحميل ملف PDF
                Document document = new Document(System.IO.Path.Combine(_dataDir, "sample.pdf"));
                var tfa = new Aspose.Pdf.Text.TextFragmentAbsorber("PDF");
                tfa.Visit(document.Pages[1]);

                // إنشاء التعليقات التوضيحية
                HighlightAnnotation highlightAnnotation = new HighlightAnnotation(document.Pages[1],
                   tfa.TextFragments[1].Rectangle )
                {
                    Title = "مستخدم Aspose",
                    Color = Color.LightGreen
                };

                StrikeOutAnnotation strikeOutAnnotation = new StrikeOutAnnotation(
                   document.Pages[1],
                   tfa.TextFragments[2].Rectangle)
                {
                    Title = "مستخدم Aspose",
                    Color = Color.Blue
                };
                SquigglyAnnotation squigglyAnnotation = new SquigglyAnnotation(document.Pages[1],
                    tfa.TextFragments[3].Rectangle)
                {
                    Title = "مستخدم Aspose",
                    Color = Color.Red
                };
                UnderlineAnnotation underlineAnnotation = new UnderlineAnnotation(document.Pages[1],
                    tfa.TextFragments[4].Rectangle)
                {
                    Title = "مستخدم Aspose",
                    Color = Color.Violet
                };
                // إضافة التعليق التوضيحي إلى الصفحة
                document.Pages[1].Annotations.Add(highlightAnnotation);
                document.Pages[1].Annotations.Add(squigglyAnnotation);
                document.Pages[1].Annotations.Add(strikeOutAnnotation);
                document.Pages[1].Annotations.Add(underlineAnnotation);
                document.Save(System.IO.Path.Combine(_dataDir, "sample_mod.pdf"));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

إذا كنت ترغب في تسليط الضوء على جزء متعدد الأسطر يجب عليك استخدام المثال المتقدم:

        /// <summary>
        /// مثال متقدم إذا كنت ترغب في تسليط الضوء على جزء متعدد الأسطر
        /// </summary>
        public static void AddHighlightAnnotationAdvanced()
        {
            var document = new Document(System.IO.Path.Combine(_dataDir, "sample_mod.pdf"));
            var page = document.Pages[1];
            var tfa = new TextFragmentAbsorber(@"Adobe\W+Acrobat\W+Reader", new TextSearchOptions(true));
            tfa.Visit(page);
            foreach (var textFragment in tfa.TextFragments)
            {
                var highlightAnnotation = HighLightTextFragment(page, textFragment, Color.Yellow);
                page.Annotations.Add(highlightAnnotation);
            }
            document.Save(System.IO.Path.Combine(_dataDir, "sample_mod.pdf"));
        }
        private static HighlightAnnotation HighLightTextFragment(Aspose.Pdf.Page page,
            TextFragment textFragment, Color color)
        {
            if (textFragment.Segments.Count == 1)
                return new HighlightAnnotation(page, textFragment.Segments[1].Rectangle)
                {
                    Title = "مستخدم Aspose",
                    Color = color,
                    Modified = DateTime.Now,
                    QuadPoints = new Point[]
                    {
                        new Point(textFragment.Segments[1].Rectangle.LLX, textFragment.Segments[1].Rectangle.URY),
                        new Point(textFragment.Segments[1].Rectangle.URX, textFragment.Segments[1].Rectangle.URY),
                        new Point(textFragment.Segments[1].Rectangle.LLX, textFragment.Segments[1].Rectangle.LLY),
                        new Point(textFragment.Segments[1].Rectangle.URX, textFragment.Segments[1].Rectangle.LLY)
                    }
                };

            var offset = 0;
            var quadPoints = new Point[textFragment.Segments.Count * 4];
            foreach (var segment in textFragment.Segments)
            {
                quadPoints[offset + 0] = new Point(segment.Rectangle.LLX, segment.Rectangle.URY);
                quadPoints[offset + 1] = new Point(segment.Rectangle.URX, segment.Rectangle.URY);
                quadPoints[offset + 2] = new Point(segment.Rectangle.LLX, segment.Rectangle.LLY);
                quadPoints[offset + 3] = new Point(segment.Rectangle.URX, segment.Rectangle.LLY);
                offset += 4;
            }

            var llx = quadPoints.Min(pt => pt.X);
            var lly = quadPoints.Min(pt => pt.Y);
            var urx = quadPoints.Max(pt => pt.X);
            var ury = quadPoints.Max(pt => pt.Y);
            return new HighlightAnnotation(page, new Rectangle(llx, lly, urx, ury))
            {
                Title = "مستخدم Aspose",
                Color = color,
                Modified = DateTime.Now,
                QuadPoints = quadPoints
            };
        }

        /// <summary>
        /// كيفية الحصول على نص مميز
        /// </summary>
        public static void GetHighlightedText()
        {
            // تحميل ملف PDF
            Document document = new Document(System.IO.Path.Combine(_dataDir, "sample_mod.pdf"));
            var highlightAnnotations = document.Pages[1].Annotations
                .Where(a => a.AnnotationType == AnnotationType.Highlight)
                .Cast<HighlightAnnotation>();
            foreach (var ta in highlightAnnotations)
            {
                Console.WriteLine($"[{ta.GetMarkedText()}]");
            }
        }

الحصول على تعليق توضيحي لترميز النص

يرجى محاولة استخدام قطعة الكود التالية للحصول على تعليق توضيحي لترميز النص من مستند PDF.

    public static void GetTextMarkupAnnotation()
    {
        // تحميل ملف PDF
        Document document = new Document(System.IO.Path.Combine(_dataDir, "sample_mod.pdf"));
        var textMarkupAnnotations = document.Pages[1].Annotations
            .Where(a => a.AnnotationType == AnnotationType.Highlight
            || a.AnnotationType == AnnotationType.Squiggly)
            .Cast<TextMarkupAnnotation>();
            foreach (var ta in textMarkupAnnotations)
            {
                Console.WriteLine($"[{ta.AnnotationType} {ta.Rect}]");
            }
    }

حذف تعليق توضيحي لترميز النص

يوضح قطعة الكود التالية كيفية حذف تعليق توضيحي لترميز النص من ملف PDF.

    public static void DeleteTextMarkupAnnotation()
    {
        // تحميل ملف PDF
        Document document = new Document(System.IO.Path.Combine(_dataDir, "sample_mod.pdf"));
        var textMarkupAnnotations = document.Pages[1].Annotations
            .Where(a => a.AnnotationType == AnnotationType.Highlight
            ||a.AnnotationType == AnnotationType.Squiggly)
            .Cast<TextMarkupAnnotation>();
            foreach (var ta in textMarkupAnnotations)
            {
            document.Pages[1].Annotations.Delete(ta);
            }
            document.Save(System.IO.Path.Combine(_dataDir, "sample_del.pdf"));
    }