PDFium Delphi Component Docs

FlattenPageRotation طريقة

المكوِّن: TPdf  ·  الوحدة: PDFium
تدمج قيمة /Rotate الحالية لكل صفحة في تيار المحتوى وصناديق الصفحة ومستطيلات التعليقات التوضيحية، ثم تعيد ضبط /Rotate على 0 بحيث يُحفظ التخطيط المرئي دون الاعتماد على تلميح العرض بالدوران

الصياغة

function FlattenPageRotation(
  const Options : TPdfFlattenRotationOptions;
  out Report : TPdfFlattenRotationReport): Boolean; overload;

function FlattenPageRotation(
  const PageNumbers : array of Integer;
  const Options : TPdfFlattenRotationOptions;
  out Report : TPdfFlattenRotationReport): Boolean; overload;

الوصف

كثير من الأدوات اللاحقة (خطوط طباعة أقدم، مُستخرِجات صور، مُعالِجات OCR تمهيدية، محولات نقطية) تتجاهل مدخل الصفحة /Rotate وتعرض الصفحات المدورة باتجاه خاطئ. يطبق FlattenPageRotation عكس الدوران الحالي على محتوى الصفحة ومستطيلات التعليقات التوضيحية وصناديق الصفحة، ثم يضبط /Rotate على 0. بعد الاستدعاء تصبح الصفحة المرئية مطابقة للأصل المدور، لكنها لم تعد تعتمد على تطبيق العارض تلميح الدوران

تعالج الصيغة أحادية الوسيطة كل صفحة؛ وتقبل صيغة PageNumbers مصفوفة يبدأ ترقيمها من الصفر ليتمكن المستدعون من دمج مجموعة فرعية. وتُحصى الصفحات التي هي عند /Rotate=0 أصلًا في Report.SkippedPageCount ويُترك دون مساس

داخليًا تمر كل صفحة مدورة عبر FPDFPage_CountObjects و FPDFPage_GetObject و FPDFPageObj_TransformF للمحتوى، ثم FPDFPage_GetAnnot و FPDFAnnot_GetRect / FPDFAnnot_SetRect للتعليقات التوضيحية، ثم FPDFPage_SetMediaBox / FPDFPage_SetCropBox لصناديق الصفحة، وأخيرًا FPDFPage_SetRotation بالقيمة 0. وتُشتق المصفوفة من MediaBox غير المدور الذي يعيده FPDFPage_GetMediaBox

المعاملات

ملاحظات

مثال

var
  Options: TPdfFlattenRotationOptions;
  Report: TPdfFlattenRotationReport;
begin
  Pdf1.FileName := 'C:\Scanned.pdf';
  Pdf1.Active := True;
  Options := TPdfFlattenRotationOptions.Default;
  Pdf1.FlattenPageRotation(Options, Report);
  Pdf1.SaveAs('C:\Scanned_flat.pdf');
end;

انظر أيضًا

PageRotation, TransformPageObject, SetPageBox