واحد: FPdfContentNormalize
نرمالسازی حافظ نحوِ یک توالی محتوای منطقی صفحهٔ PDF و تشخیص مقاوم مرز تصویر درونخطی
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 جریانهای محتوای دادهشده را به ترتیب آرایه به هم میچسباند و نتیجه را بهعنوان یک توالی محتوای منطقی صفحه توکنگذاری میکند
در حالی که جداسازی توکنها را کانونیک میکند، رشتههای لفظی، رشتههای hex، نامها، آرایهها، دیکشنریها، بارهای تصویر درونخطی و عملگرهای ناشناخته را حفظ میکند؛ کامنتها را میتوان حذف کرد و تعادل ساختاری را میتوان الزامی کرد
CollectPdfContentResourceUses نامهای منابع مصرفشده توسط عملگرهای متن، XObject، حالت گرافیکی، فضای رنگ، الگو، shading، ویژگی marked-content و تصویر درونخطی را زیر بودجهٔ مرکزی توکن ثبت میکند
FindInlineImageBlock یک بلوک کامل BI، ID و EI را پیدا میکند، بدون اینکه دنبالهٔ بایتی EI درون دادهٔ بار تصویر را پایاندهنده بگیرد
Constants
| Constant | Description |
PdfContentNormalizeDefaultInputLimit | کران ورودی منطقی پیشفرض هر صفحه برابر ۲۵۶ MiB |
PdfContentNormalizeDefaultOutputLimit | کران خروجی نرمالشدهٔ پیشفرض هر صفحه برابر ۲۵۶ MiB |
PdfContentNormalizeDefaultTokenLimit | کران پیشفرض هر صفحه برابر ۱۰۰۰۰۰۰۰ توکن |
Functions
| Function | Description |
TPdfContentNormalizeOptions.Default | حذف کامنت، اعتبارسنجی تعادل، فشردهسازی سودمند Flate و پرش از صفحات ناامن را فعال میکند؛ بازنویسی امضاشده را مجاز نمیداند و سه کران پیشفرض را اعمال میکند |
NormalizePdfContentSequence | بایتهای نرمالشده و گزارشی تفصیلی را برمیگرداند، یا False را با وضعیت شکست و متن تشخیصی |
CollectPdfContentResourceUses | برای هر عملگر مصرفکنندهٔ منبع، نوع منبع و نام PDF رمزگشاییشده را برمیگرداند، یا False را با متن تشخیصی برای ورودی بدساخت یا فراتر از بودجه |
FindInlineImageBlock | آفستهای بلوک کامل تصویر درونخطی بعدی را در StartPos یا پس از آن برمیگرداند |
Types
| Type | Description |
TPdfContentNormalizeStatus | پیامد یا دستهٔ شکست برای نرمالسازی توالی و سند |
TPdfContentNormalizeOptions | سیاست نرمالسازی و کرانهای بایت و توکن هر صفحه |
TPdfContentNormalizeReport | وضعیت، جمع بایت و صفحه، سنجههای جریان و توکن، مشاهدههای نحوی و متن تشخیصی |
TPdfContentResourceKind | مقادیر منبع pcrkFont، pcrkXObject، pcrkExtGState، pcrkColorSpace، pcrkPattern، pcrkShading و pcrkProperties |
TPdfContentResourceUse | یک Name منبع رمزگشاییشده به همراه Kind آن |
TPdfContentResourceUses | آرایهٔ پویای مصرفهای منبع جمعآوریشده به ترتیب محتوا |
Status values
| Value | Meaning |
pcnsNotStarted | گزارش مقداردهی اولیه شده اما نرمالسازی کامل نشده است |
pcnsCompleted | نرمالسازی با موفقیت کامل شد |
pcnsInputLimitExceeded | ورودی منطقی از MaxInputBytesPerPage فراتر رفت یا یکی از کرانهای پیکربندیشده مثبت نبود |
pcnsOutputLimitExceeded | بایتهای نرمالشده از MaxOutputBytesPerPage فراتر میرفتند |
pcnsTokenLimitExceeded | توالی محتوا از MaxTokensPerPage فراتر رفت |
pcnsMalformedToken | یک توکن محتوای PDF را نمیشد بهطور کامل خواند |
pcnsUnresolvedInlineImage | مرز کامل یک بار تصویر درونخطی پیدا نشد |
pcnsUnbalancedState | تعادل الزامی قلمروهای گرافیک، متن، marked-content، سازگاری، آرایه یا دیکشنری برآورده نشد |
pcnsUnsupportedFilter | نرمالسازی در سطح سند با فیلتری در جریان محتوا روبهرو شد که نمیتواند رمزگشایی کند |
pcnsEncryptedDocument | نرمالسازی در سطح سند از ورودی رمزنگاریشده سر باز زد |
pcnsSignedDocument | نرمالسازی در سطح سند بدون مجوز از ورودی امضاشده سر باز زد |
pcnsDocumentRewriteFailed | بازنویسی یا راستیآزمایی گراف اشیاء PDF دربرگیرنده شکست خورد |
pcnsResourceBudgetExceeded | مهلت TPdfParserResourceBudget در سطح فرایند پیش از کاملشدن نرمالسازی پایان یافت |
Options
| Field | Description |
RemoveComments | کامنتهای PDF را در عین حفظ مرزهای توکن لازم حذف میکند |
RequireBalancedState | تعادل قلمروهای q/Q، BT/ET، marked-content، سازگاری، آرایه و دیکشنری را الزامی میکند |
CompressOutput | به پوشش در سطح سند اجازه میدهد یک جریان صفحهٔ نرمالشده را وقتی فشردهسازی اندازهاش را کم کند با Flate فشرده کند |
SkipUnsafePages | به نرمالسازی در سطح سند اجازه میدهد پس از یک نتیجهٔ ناامن یا پشتیبانینشده، صفحهای را بدون تغییر حفظ کند بهجای آنکه بازنویسی سند را رها کند |
AllowSignedDocument | بازنویسی کامل ورودی امضاشده را صریحاً مجاز میکند، که بازههای بایتی امضای موجود را بیاعتبار میسازد |
MaxInputBytesPerPage | بیشینهٔ جمع بایتها روی جریانهای محتوای دادهشده برای یک صفحه |
MaxOutputBytesPerPage | بیشینهٔ بایت مجاز در توالی محتوای نرمالشده |
MaxTokensPerPage | بیشینهٔ شمار توکنهای بازرسیشده برای یک صفحه |
Report fields
| Field | Description |
Status | TPdfContentNormalizeStatus فعلی |
SourceByteCount | جمع بایتهای محتوای منبع |
OutputByteCount | جمع بایتهای خروجی نرمالشده یا بازنویسیشده |
PageCount | صفحاتی که نرمالسازی در سطح سند بازرسی کرده است |
NormalizedPageCount | صفحاتی که با موفقیت با محتوای نرمالشده جایگزین شدهاند |
SkippedPageCount | صفحات ناامنی که زیر سیاست پرش بدون تغییر حفظ شدهاند |
InputStreamCount | جریانهای محتوای منبع که به توالیهای صفحهٔ منطقی چسبیدهاند |
OutputStreamCount | جریانهای محتوای نرمالشدهٔ تولیدشده |
CoalescedArrayCount | آرایههای چندجریانی /Contents که با یک جریان نرمالشدهٔ واحد جایگزین شدهاند |
TokenCount | توکنهای پردازششده |
CommentCount | کامنتهای مشاهدهشده، چه حفظشده و چه حذفشده |
InlineImageCount | بلوکهای کامل تصویر درونخطیِ حفظشده |
UnknownOperatorCount | عملگرهای ناشناختهای که عیناً حفظ شدهاند |
ErrorMessage | متن تشخیصی برای نخستین شکست |
Inline-image offsets
BiPos آفست بایتی کلیدواژهٔ BI است
IdPos آفست بایتی کلیدواژهٔ ID است
DataStart نخستین بایت بار، پس از تنها فاصلهٔ الزامیِ پس از ID است
EndImageStart آفست بایتی کلیدواژهٔ پایاندهندهٔ EI و در نتیجه یک بایت پس از پایان بار است
- وقتی هیچ بلوک کاملی در
StartPos یا پس از آن پیدا نشود، تابع False برمیگرداند
See Also