PDFium Delphi Component Docs

หน่วย FPdfContentNormalize

Unit: FPdfContentNormalize
การทำให้ลำดับเนื้อหาหน้าของ PDF หนึ่งลำดับเชิงตรรกะเป็นมาตรฐานโดยคง syntax เดิม และการหาขอบเขตภาพ inline อย่างทนทาน

Syntax

const
  PdfContentNormalizeDefaultInputLimit = Int64(256) * 1024 * 1024;
  PdfContentNormalizeDefaultOutputLimit = Int64(256) * 1024 * 1024;
  PdfContentNormalizeDefaultTokenLimit = 10000000;

function NormalizePdfContentSequence(const Streams: array of TBytes;
  const Options: TPdfContentNormalizeOptions; out Output: TBytes;
  out Report: TPdfContentNormalizeReport): Boolean;

function CollectPdfContentResourceUses(const Data: TBytes;
  out Uses: TPdfContentResourceUses;
  out ErrorText: string): Boolean;

function FindInlineImageBlock(const Data: TBytes; StartPos: Integer;
  out BiPos, IdPos, DataStart, EndImageStart: Integer): Boolean;

Description

NormalizePdfContentSequence ประกอบ content stream ที่ให้มาเรียงตามลำดับอาร์เรย์ แล้ว tokenize ผลลัพธ์เป็นลำดับเนื้อหาหน้าหนึ่งลำดับเชิงตรรกะ

ฟังก์ชันนี้คง literal string, hex string, name, อาร์เรย์, dictionary, เพย์โหลดของภาพ inline และ operator ที่ไม่รู้จักไว้ พร้อมทำให้การคั่น token เป็นมาตรฐาน; ลบคอมเมนต์ออกได้ และบังคับให้โครงสร้างต้องสมดุลได้เช่นกัน

CollectPdfContentResourceUses บันทึกชื่อ resource ที่ถูกใช้โดย operator กลุ่มข้อความ, XObject, graphics-state, colour-space, pattern, shading, marked-content property และภาพ inline ภายใต้งบ token กลาง

FindInlineImageBlock ค้นหาบล็อก BI, ID และ EI ที่สมบูรณ์ โดยไม่นำลำดับไบต์ EI ที่อยู่ในเพย์โหลดของภาพมาเป็นตัวจบบล็อก

Constants

ConstantDescription
PdfContentNormalizeDefaultInputLimitขีดจำกัดอินพุตเชิงตรรกะเริ่มต้นต่อหน้าที่ 256 MiB
PdfContentNormalizeDefaultOutputLimitขีดจำกัดเอาต์พุตที่ทำให้เป็นมาตรฐานแล้วเริ่มต้นต่อหน้าที่ 256 MiB
PdfContentNormalizeDefaultTokenLimitขีดจำกัดเริ่มต้นต่อหน้าที่ 10000000 token

Functions

FunctionDescription
TPdfContentNormalizeOptions.Defaultเปิดการลบคอมเมนต์ การตรวจสอบความสมดุล การบีบอัดแบบ Flate เมื่อมีประโยชน์ และการข้ามหน้าที่ไม่ปลอดภัย; ไม่อนุญาตการเขียนใหม่ของเอกสารที่ลงนามแล้ว และใช้ขีดจำกัดเริ่มต้นทั้งสามค่า
NormalizePdfContentSequenceคืนไบต์ที่ทำให้เป็นมาตรฐานแล้วพร้อมรายงานละเอียด หรือ False พร้อมสถานะความล้มเหลวและข้อความวินิจฉัย
CollectPdfContentResourceUsesคืนชนิด resource และ PDF name ที่ถอดรหัสแล้วของ operator ที่ใช้ resource ทุกตัว หรือ False พร้อมข้อความวินิจฉัยสำหรับอินพุตที่ผิดรูปแบบหรือเกินงบ
FindInlineImageBlockคืน offset ของบล็อกภาพ inline ที่สมบูรณ์ถัดไปตั้งแต่ StartPos เป็นต้นไป

Types

TypeDescription
TPdfContentNormalizeStatusผลลัพธ์หรือหมวดความล้มเหลวของการทำให้เป็นมาตรฐานทั้งระดับลำดับและระดับเอกสาร
TPdfContentNormalizeOptionsนโยบายการทำให้เป็นมาตรฐาน พร้อมขีดจำกัดไบต์และ token ต่อหน้า
TPdfContentNormalizeReportสถานะ ผลรวมไบต์และหน้า ตัวชี้วัดของ stream และ token ข้อสังเกตเชิง syntax และข้อความวินิจฉัย
TPdfContentResourceKindค่า resource pcrkFont, pcrkXObject, pcrkExtGState, pcrkColorSpace, pcrkPattern, pcrkShading และ pcrkProperties
TPdfContentResourceUseresource Name ที่ถอดรหัสแล้วหนึ่งค่า คู่กับ Kind ของมัน
TPdfContentResourceUsesอาร์เรย์แบบ dynamic ของการใช้ resource ที่เก็บไว้ เรียงตามลำดับในเนื้อหา

Status values

ValueMeaning
pcnsNotStartedรายงานถูกเริ่มต้นแล้วแต่การทำให้เป็นมาตรฐานยังไม่เสร็จ
pcnsCompletedการทำให้เป็นมาตรฐานเสร็จสำเร็จ
pcnsInputLimitExceededอินพุตเชิงตรรกะเกิน MaxInputBytesPerPage หรือขีดจำกัดที่ตั้งไว้ไม่ใช่ค่าบวก
pcnsOutputLimitExceededไบต์ที่ทำให้เป็นมาตรฐานแล้วจะเกิน MaxOutputBytesPerPage
pcnsTokenLimitExceededลำดับเนื้อหาเกิน MaxTokensPerPage
pcnsMalformedTokenมี token เนื้อหาของ PDF ที่อ่านไม่ครบถ้วน
pcnsUnresolvedInlineImageหาขอบเขตเพย์โหลดของภาพ inline ที่สมบูรณ์ไม่ได้
pcnsUnbalancedStateความสมดุลที่บังคับของขอบเขต graphics, text, marked-content, compatibility, อาร์เรย์ หรือ dictionary ไม่ผ่าน
pcnsUnsupportedFilterการทำให้เป็นมาตรฐานระดับเอกสารเจอ filter ของ content stream ที่ถอดรหัสไม่ได้
pcnsEncryptedDocumentการทำให้เป็นมาตรฐานระดับเอกสารปฏิเสธอินพุตที่เข้ารหัส
pcnsSignedDocumentการทำให้เป็นมาตรฐานระดับเอกสารปฏิเสธอินพุตที่ลงนามแล้วโดยไม่มีการอนุญาต
pcnsDocumentRewriteFailedการเขียนใหม่หรือตรวจยืนยัน object graph ระดับเอกสารที่ครอบอยู่ล้มเหลว
pcnsResourceBudgetExceededdeadline ของ TPdfParserResourceBudget ระดับโปรเซสหมดก่อนการทำให้เป็นมาตรฐานจะเสร็จ

Options

FieldDescription
RemoveCommentsตัดคอมเมนต์ของ PDF ออก พร้อมคงขอบเขต token ที่จำเป็นไว้
RequireBalancedStateบังคับให้ขอบเขต q/Q, BT/ET, marked-content, compatibility, อาร์เรย์ และ dictionary ต้องสมดุล
CompressOutputอนุญาตให้ wrapper ระดับเอกสารบีบอัด page stream ที่ทำให้เป็นมาตรฐานแล้วด้วย Flate เมื่อการบีบอัดช่วยลดขนาดลง
SkipUnsafePagesอนุญาตให้การทำให้เป็นมาตรฐานระดับเอกสารคงหน้าที่ได้ผลแบบไม่ปลอดภัยหรือไม่รองรับไว้เหมือนเดิม แทนที่จะยกเลิกการเขียนใหม่ทั้งเอกสาร
AllowSignedDocumentอนุญาตการเขียนใหม่แบบเต็มของอินพุตที่ลงนามแล้วอย่างชัดเจน ซึ่งจะทำให้ signature byte range เดิมใช้ไม่ได้
MaxInputBytesPerPageจำนวนไบต์รวมสูงสุดของ content stream ที่ให้มาสำหรับหนึ่งหน้า
MaxOutputBytesPerPageจำนวนไบต์สูงสุดที่อนุญาตในลำดับเนื้อหาที่ทำให้เป็นมาตรฐานแล้ว
MaxTokensPerPageจำนวน token สูงสุดที่ตรวจสำหรับหนึ่งหน้า

Report fields

FieldDescription
Statusสถานะ TPdfContentNormalizeStatus ปัจจุบัน
SourceByteCountจำนวนไบต์เนื้อหาต้นทางรวม
OutputByteCountจำนวนไบต์เอาต์พุตที่ทำให้เป็นมาตรฐานหรือเขียนใหม่รวม
PageCountจำนวนหน้าที่การทำให้เป็นมาตรฐานระดับเอกสารตรวจ
NormalizedPageCountจำนวนหน้าที่ถูกแทนที่ด้วยเนื้อหาที่ทำให้เป็นมาตรฐานแล้วสำเร็จ
SkippedPageCountจำนวนหน้าที่ไม่ปลอดภัยซึ่งคงไว้เหมือนเดิมภายใต้นโยบาย skip
InputStreamCountจำนวน content stream ต้นทางที่ถูกประกอบเป็นลำดับหน้าเชิงตรรกะ
OutputStreamCountจำนวน content stream ที่ทำให้เป็นมาตรฐานแล้วซึ่งถูกผลิต
CoalescedArrayCountจำนวนอาร์เรย์ /Contents แบบหลาย stream ที่ถูกแทนด้วย stream เดียวที่ทำให้เป็นมาตรฐานแล้ว
TokenCountจำนวน token ที่ประมวลผล
CommentCountจำนวนคอมเมนต์ที่เจอ ไม่ว่าจะถูกคงไว้หรือถูกลบ
InlineImageCountจำนวนบล็อกภาพ inline ที่สมบูรณ์ซึ่งถูกคงไว้
UnknownOperatorCountจำนวน operator ที่ไม่รู้จักซึ่งถูกคงไว้ตามต้นฉบับ
ErrorMessageข้อความวินิจฉัยของความล้มเหลวแรก

Inline-image offsets

See Also

FPdfCompress, TPdf.SaveAsNormalizedContent