توفر FPdfRedaction فحص مصدر متحفظًا وهندسة تستخدمها TPdf.SaveAsRedacted؛ يوفر الأسلوب الأعلى المعاملة والتعليقات والطبقات المعتمة وإعادة توليد المحتوى والتنظيف وإزالة الموارد
تعدل المساعدات الكائنات الأصلية في نسخة المعاملة المعزولة، وترفع EPdfRedactionGeometry عند هندسة غير مدعومة أو نفاد الميزانية؛ لا تكفي وحدها لتصدير أمني كامل
type
EPdfRedactionGeometry = class(Exception);
TPdfRedactionGeometryOptions = record
MaxFormDepth, MaxObjects, MaxPathSegments, MaxFragments: Integer;
MaxImagePixels, MaxGeometryOperations: Int64;
CurveTolerance: Double;
class function Default: TPdfRedactionGeometryOptions; static;
end;
TPdfRedactionGeometryReport = record
ExpandedFormCount, ScannedChildCount, ClippedPathCount: Integer;
FlattenedCurveCount, GeneratedPointCount, FragmentCount: Integer;
MaskedImageCount: Integer;
ScannedPixelCount, MaskedPixelCount, PixelIntersectionTestCount: Int64;
GeometryOperationCount: Int64;
end;
procedure ValidateDetailedRedactionSource(Source: TStream);
procedure ValidateDetailedRedactionText(PageObject: FPDF_PAGEOBJECT);
procedure ExpandRedactionForms(Page: FPDF_PAGE;
const Options: TPdfRedactionGeometryOptions;
var Report: TPdfRedactionGeometryReport);
procedure ClipRedactionPath(Page: FPDF_PAGE; PageObject: FPDF_PAGEOBJECT;
ObjectIndex: Integer; const Redactions: array of FS_RECTF;
const Options: TPdfRedactionGeometryOptions;
var Report: TPdfRedactionGeometryReport);
procedure MaskRedactionImage(Document: FPDF_DOCUMENT; Page: FPDF_PAGE;
PageObject: FPDF_PAGEOBJECT; ObjectIndex: Integer;
const Redactions: array of FS_RECTF;
const Options: TPdfRedactionGeometryOptions;
var Report: TPdfRedactionGeometryReport);
تستخدم المستطيلات وتسامح المنحنيات نقاط PDF؛ تُحول نقاط المسار إلى فضاء الصفحة قبل القص، و ObjectIndex فهرس الكائن الأصلي الصفري المستخدم لحفظ ترتيب الرسم
ExpandRedactionForms أبناء النص والمسار والصورة تكراريًا، وتجمع تحويلات غير منفردة والقص الأصلي، وتدرجهم في موضع Form الأصلي؛ توسع كل نسخة مشتركة بصورة مستقلة بدل تعديل التدفق المشترك مباشرةClipRedactionPath مسارًا ممتلئًا بلون ثابت بلا stroke، وتسطح المقاطع التكعيبية بعمق تقسيم محدود، وتطرح القطع المستطيلة وتحفظ قاعدة winding أو even-odd للحدود الباقيةCurveTolerance + 0.001 نقطة PDF؛ يحد التسامح تقريب المنحنى وقد يحذف هامشًا صغيرًا إضافيًاMaskRedactionImage تحويلات affine غير منفردة بما فيها الدوران والانعكاس و shear وعينات Gray أو BGR أو BGRx أو BGRA المفكوكة؛ تحفظ الدقة وتنتج صورة بديلة جديدة0.001 نقطة PDF؛ تحفظ البكسلات الباقية عيناتها المفكوكةValidateDetailedRedactionText نصًا ممتلئًا عاديًا للحفظ الجزئي؛ تبقى مطابقة المحارف وإعادة بناء الأجزاء مسؤولية الأسلوب الأعلىتُرفض الشفافية و blend والأنواع غير المدعومة والمصفوفات المنفردة والأنماط والقص المركب أو غير الزائد؛ يجب أن يحتوي القص المستطيل الزائد المدعوم كل حدود الكائن
| الخيار | الافتراضي | المعنى |
|---|---|---|
MaxFormDepth | 32 | عمق توسيع Form المتداخل |
MaxObjects | 1000000 | حدود تعداد الصفحة والأبناء الموسعين تراكميًا |
MaxPathSegments | 262144 | مقاطع الإدخال لكل مسار والنقاط المولدة تراكميًا |
MaxFragments | 1000000 | المناطق المستطيلة المحفوظة وأجزاء الاستبدال التراكمية |
MaxImagePixels | 16777216 | البكسلات المفكوكة المعالجة تراكميًا |
MaxGeometryOperations | 67108864 | العمل الهندسي واختبارات تقاطع البكسلات تراكميًا |
CurveTolerance | 0.01 | تسامح تسطيح التكعيب بنقاط PDF |
ابدأ بـ TPdfRedactionGeometryOptions.Default وصفّر التقرير مرة قبل المعاملة؛ احتفظ به بين الاستدعاءات لتراكم النقاط والبكسلات والأجزاء وميزانيات العمليات
تصف ExpandedFormCount و ScannedChildCount التوسيع، بما فيه الجذور والأبناء؛ تصف ClippedPathCount و FlattenedCurveCount و GeneratedPointCount المسارات ونقاط القص الوسيطة؛ تصف MaskedImageCount و ScannedPixelCount و MaskedPixelCount و PixelIntersectionTestCount الصور
تعد FragmentCount كائنات الاستبدال لا الحدود أو البكسلات، وتجمع GeometryOperationCount عمل المساعدات؛ قد يصف التقرير بعد الاستثناء عملًا جزئيًا على النسخة المهملة
تفحص ValidateDetailedRedactionSource الكائنات النشطة والمحتوى المفكوك قبل التعديل؛ تستدعيها TPdf.SaveAsRedacted لكل الأنماط، حتى حذف الكائن الكامل والنمط الجزئي البسيط
/ActualText و /Alt و XFA ودلالات المحتوى الاختياري بما فيها /OCProperties و /OCG و /OCMDTr المجهول والرسم بنمط أو فضاء خاص عبر scn/SCN/FlateDecode؛ فك الترميز محدود بـ 32 MiB لكل تدفق و 64 MiB إجمالًالا يعيد النمط بناء Tagged PDF أو حفظ شفافية اعتباطية أو دعم كل strokes والقص أو ضمان حفظ الصور المرمزة بلا فقد؛ يتطلب الإخراج الآمن حذف التدفقات الأصلية والموارد غير المستخدمة بعد التوليد كما تفعل TPdf.SaveAsRedacted
يجب توفير نسخة معزولة وفحص القدرات الأصلية والميزانيات المحدودة الموجبة، وإهمالها عند الفشل وإعادة توليد الصفحات والتنظيف وإزالة الموارد قبل التصدير