مرجع HotPDF
توفر HPDFContentStream نموذج صياغة بلا فقدان ومحدودًا لتعديلات مستهدفة على streams محتوى PDF المفكوكة الترميز
التحليل والفحص
تُنشئ HPDFParseContentStreamAST كائن THPDFContentStreamAST بحدود افتراضية تبلغ 4,194,304 وحدة معجمية و256 حاوية متداخلة؛ يمكن للمستدعين الذين يحتاجون حدودًا أضيق استدعاء THPDFContentStreamAST.Create مباشرة
تميّز THPDFContentLexemeKind بين الفراغات، والتعليقات، والأرقام، والأسماء، والسلاسل النصية الحرفية والسداسية العشرية، والقيم المنطقية، والقيم الفارغة، والكلمات، وفواصل الحاويات، وبيانات الصور المضمَّنة، والبايتات المشوَّهة؛ ينتمي كل بايت إدخال إلى THPDFContentLexeme واحد بالضبط
تميّز THPDFContentSyntaxNodeKind بين الجذر، والعمليات، والمعاملات، والمصفوفات، والقواميس، والإجراءات، والصور المضمَّنة، والمناطق المشوَّهة؛ يستخدم كل THPDFContentSyntaxNode فهارس الأصل، والابن الأول، والابن الأخير، والشقيق التالي، بحيث لا يُخصَّص التجوال مصفوفات أبناء
استخدم GetLexeme وGetLexemeBytes وGetLexemeText وGetNode مع LexemeCount وNodeCount؛ تُعيد GetOriginalBytes نسخة مصدر مستقلة
تُبلغ Valid وErrorOffset وErrorMessage عن الإدخال المشوَّه مع الحفاظ على تسلسل دقيق بايتيًا، وتملأ GetStatistics كائن THPDFContentASTStatistics بحجم المصدر، والعدادات، والعمق الأقصى، وعدد الصور المضمَّنة، وعدد العقد المشوَّهة
تراكبات التحرير (Edit overlays)
تستخدم ReplaceRange إزاحات بايتات نصف مفتوحة، بينما تشتق ReplaceLexeme وReplaceNode وDeleteNode وInsertBeforeNode وInsertAfterNode النطاقات من سجلات الصياغة
يُنسَخ كل THPDFContentEdit إلى طبقة تراكب مرتبة؛ تُرفض التعديلات المتعارضة، وتبقى النطاقات المتجاورة صالحة، وتُبلغ EditCount عن التعديلات المقبولة، وتستعيد ClearEdits إخراجًا بلا عملية
تراكبات التحرير (Edit overlays)
تُضيف HPDFVisitContentStreamOperators طبقة من زوار معدودي المراجع واستدعاءات أحداث Delphi فوق شجرة AST هذه، وتوفر عرضًا للقراءة فقط للمعاملات، وتفرض ميزانيات المصدر والمشغل والوحدة المعجمية والعمق والاستبدال، وتعيد تحليل الإخراج المُحوَّل قبل النجاح
تراكبات التحرير (Edit overlays)
تُنشئ Serialize مصفوفة بايتات إخراج واحدة بعد حساب حجم محمي من الفيضان، بينما تكتب WriteToStream امتدادات المصدر غير المُعدَّلة وامتدادات الاستبدال مباشرة إلى TStream مملوك للمستدعي
دون أي تعديلات، ينتج كلا المسارين المصدر بايتًا بايتًا دون تغيير كتابة الأرقام، أو تهريب السلاسل النصية، أو التعليقات، أو نهايات الأسطر، أو الفواصل، أو حمولات الصور المضمَّنة
var
AST: THPDFContentStreamAST;
Output: TBytes;
begin
AST:= HPDFParseContentStreamAST(ContentBytes);
try
if AST.Valid and AST.ReplaceRange(StartOfs, EndOfs, ReplacementBytes) then
AST.Serialize(Output);
finally
AST.Free;
end;
end;