Display Lists and Print Production
HotPDF جریانهای صفحهٔ بارگذاریشده را به نمونههای THPDFPageDisplayList قابل استفادهٔ مجدد با متریکهای THPDFDisplayListInfo و کادر محصورکنندهٔ اشیاء محتوا کامپایل میکند
رندر سند فهرستهای کامپایلشده را ذخیره میکند، در حالی که فراخوانندهها میتوانند برای اجرای مکرر یا پرسوجوی منطقهای شیء، فهرست مستقل درخواست کنند
مفسر تولید مشترک
بیتمپ غیرتدریجی، DC مستقیم، Form و بازپخش display-list همه محتوای پیشتوکنشده را از HPDFInterpretContentTokensDevice عبور میدهند که پیمایش عملگر و مرزهای لغو را در اختیار دارد
THPDFPageRenderer IHPDFContentOperatorDevice پیادهکنندهٔ است، پس پیمایش مشترک ماشین وضعیت کامل گرافیک، متن، منبع، برش، الگو، شفافیت، محتوای علامتگذاریشده و تصویر آن را فراخوانی میکند بدون آنکه رندر تولیدی به سطح کوچکتر فراخوانی معنایی کاهش یابد
فهرستهای نمایش اندیس توکن عملگرها را هنگام کامپایل جریانها ذخیره میکنند و فقط همان اندیسها را بازپخش میکنند تا پویش تکراری عملوند حذف شود؛ THPDFPageDisplayList.OperatorCount و THPDFDisplayListInfo.OperatorCount شمار فرمان ذخیرهشده را در معرض دید میگذارند
دستگاههای معنایی که فقط IHPDFContentDevice را پیاده میکنند فراخوانیهای فیلترشده بر اساس قابلیت را نگه میدارند، در حالی که دستگاههای کامل عملگر هر بار یک عملگر اعتبارسنجیشده با یک نقطهٔ بررسی لغو میگیرند
رندر محدودشده و همزمان
THPDFRenderTileEvent هر بار یک کاشی یا نوار افقی به اندازهٔ درخواست فراخواننده میگیرد تا اوج حافظهٔ رستر مستقل از اندازهٔ کامل صفحه بماند
RenderLoadedPagesParallel THPDFBitmapArray کامپایل display-list را با بازپخش همپوشان میکند، نخستین صفحهٔ آماده را بدون انتظار برای سدّ کامپایل کامل شروع میکند، هر دو مرحله را بین کارگرهای محدودشده متوازن میکند و را به ترتیب ورودی برمیگرداند
کامپایل بیرون قفل حافظهٔ نهان display-list اجرا میشود، در حالی that پذیرش با بررسی دوباره و شمارندههای استفادهٔ محافظتشده اجازه میدهند صفحات بیربط همزمان کامپایل شوند بدون تکرار مدخلهای منتشرشده یا تخلیهٔ فهرست در حین بازپخش
THPDFParallelRenderPipelineInfo برخوردهای حافظهٔ نهان، کامپایلها، تکمیلها، همزمانی اوج کامپایل و رندر، صفحاتی که در نخستین نتیجه کامپایل شدند، تأخیر نخستین نتیجه و کل زمان سپریشده را در معرض دید میگذارد
RenderLoadedPagesParallelOrdered فراخوانیهای برگشتی را به ترتیب ورودی روی نخ فراخواننده تحویل میدهد و هر بیتمپ قرضی را پس از برگشتن callback آزاد میکند؛ عمق خروجی انتخابیِ فراخواننده به تولیدکننده backpressure اعمال میکند و یک خانه برای صفحهٔ بعدیِ مورد نیاز رزرو میکند تا صفحهٔ آهستهٔ اولیه نتواند پشت نتایج بعدی بنبست بسازد
پخش مرتب حداکثر یک display list و یک رندر فعال بهازای هر کارگر بهعلاوهٔ صف محدودشدهٔ بیتمپهای کاملشده نگه میدارد، بهجای نگهداشتن خروجی کامل کار در حافظه
بکاندهای رندر قابل تعویض همان فهرستهای کامپایلشده را از طریق نمای منبعِ غیرمالکِ سند مصرف میکنند، در حالی که قابلیتهای بکاند تعیین میکند فراخوانیها همپوشان باشند یا سری
زمانبند اوجحافظهٔ سراسری فرآیند اکنون هر دو API موازی را محدود میکند: بزرگترین تخمین صفحه شمار کارگر اولیه را کم میکند، هر صفحهٔ ادعاشده مجموعهٔ کاری تخمینی کاملش را رزرو میکند و خروجی مرتب آن رزرو را تا تحویل callback نگه میدارد
لغو زمانبند، منتظران بودجه را در لغو فراخوانی برگشتی یا شکست کارگر بیدار میکند، در حالی که تلهمتری کارگرهای درخواستی در برابر مؤثر، وزن رزرو اوج، صفحات تأخیری و زمان انتقال تجمعی را در معرض دید میگذارد
RenderLoadedPageTilesParallel و RenderLoadedPageBandsParallel کاشیهای سطری قرضی یا نوارهای بالابهپایین را بین کارگرهای جدا تحویل میدهند، هر کارگر حداکثر یک کاشی دارد و سقف حافظهٔ کاریِ فراخواننده پیش از نخستین ادعا همزمانی را کم میکند
زمینههای رندر موازی توالیهای توکن گلیف Type 3 تغییرناپذیر و صفحههای آستانهٔ هافتون را از یک حافظهٔ نهان LRU محدودشده کپی میکنند و مالکیت محلیِ رندرکننده را برای وضعیت گرافیک تغییرپذیر و منابع GDI حفظ میکنند
SaveLoadedPageToPng SaveLoadedPageToPngStream، SaveLoadedPagesToTiffBanded، SaveLoadedPagesToTiffStreamBanded و THPDFBandImageExportInfo همان رندرکنندهٔ نواری را از طریق کدگذارهای جریانی PNG یا TIFF مصرف میکنند تا صفحات بسیار بزرگ خروجی فشرده را ردیفبهردیف صادر کنند بدون نگهداشتن فریمبافر کامل؛ نوارهای رندرشده، ردیفهای کدگذاریشده، کارگرها، بایتهای رزرو اوج، بایتهای خروجی، زمان سپریشده و لغو را گزارش میکند
کدگشایی مشترک تصویر جداگانه هماهنگ میشود تا کار برداری صفحه موازی بماند و مدخلهای حافظهٔ نهان تصویر کدگشاییشده خراب نشوند
PrefetchLoadedPages با یک توکن لغو اختصاصی مدخلهای رستر را گرم میکند، در حالی که کامپایل و رندر بیرون قفل حافظهٔ نهان اجرا میشوند و رندر پیشزمینهٔ صفحه پیش از شروع کار حساس به تأخیر، کارگر را پیشدستی میکند
THPDFLoadedPagePrefetchInfo کارهای زمانبندیشده، آغازشده، کاملشده، ذخیرهشده، رندرشده، ناموفق، لغوشده و پیشدستیشدهٔ پیشزمینه را همراه آخرین و اوج تأخیر لغو گزارش میکند
شفافیت و کنترلهای چاپ
تختکردن شفافیت اول شمار شفافیت display-list و سقف پیکسلیِ تعریفشده توسط فراخواننده را بررسی میکند، سپس نقاشی صفحه را با تصویری بیافتِ Flateفشرده از RGB کالیبرهشده جایگزین میکند
صفحات دارای رنگدهندهٔ Separation یا DeviceN بهصورت محتوای برداری میمانند و رنگدهندههای شناساییشده و وضعیت حفظ به فراخواننده گزارش میشود
رندرکننده توابع انتقال و دیکشنریهای هافتون Type 1، 5، 6، 10 یا 16 را از ExtGState اجرا میکند و در حالی که صفحههای RGB مستقل و بازنویسیهای انتقالشان حفظ میشود، آنها را از طریق q و Q عبور میدهد
THPDFInkCoverageInfo میانگین پوشش CMYK، بیشینهٔ TAC و شمار پیکسلهای بالای آستانهٔ انتخابی را گزارش میکند
خروجی صفحههای فرآیند و اسپات از رنگدهندههای DeviceCMYK، Separation و DeviceN پشتیبانی میکند
بازنویسی رنگ صفحهٔ بارگذاریشده از همان رندرکنندهٔ کامل برای تبدیل صفحات پیچیده به Gray، RGB یا CMYK استفاده میکند، محتوای سادهٔ رنگ دستگاه را برداری نگه میدارد و سیاست صریح صفحهٔ اسپات را اعمال میکند
THPDFTrappingInfo اعلانهای trapping سند، فرادادهٔ صفحه و تشخیصهای ساختاری TrapNet را ترکیب میکند
جریان کاری ICC
تبدیل رندر میتواند پروفایل مبدأ PDF، فضای رنگ blend، پروفایل proof، پروفایل خروجی و مقصد رستر sRGB را ترکیب کند
هر چهار هدف رندر ICC و جبرانسازی واقعی نقطهٔ سیاه بهطور یکنواخت روی رنگهای برداری و نمونههای تصویر در کل خط لوله اعمال میشوند
تبدیلهای کامل بین مسیرهای برداری، تصویر، صفحه و رندر موازی از طریق یک حافظهٔ نهان LRU امن برای نخِ 64 MiBِ کلیدخورده بر محتوای پروفایل مبدأ، proof و خروجی، هدف رندر مؤثر و جبرانسازی نقطهٔ سیاه به اشتراک گذاشته میشوند
تختکردن شفافیت از همان خط لولهٔ تبدیل استفاده میکند و سپس زیر لودجههای پیکسلیِ کل و هر-کاشیِ کنترلشده توسط فراخواننده، کاشیهای CalRGB با D65 بدون درز صادر میکند
APIهای اصلی
- بکاندهای رندر قابل تعویض
IHPDFContentOperatorDeviceHPDFInterpretContentTokensDeviceTHotPDF.CompileLoadedPageDisplayListTHPDFPageDisplayList.GetTokenTHPDFPageDisplayList.GetObjectTHPDFPageDisplayList.QueryObjectIndexesTHPDFPageDisplayList.PageObjectTHPDFPageDisplayList.ResourcesTHPDFPageDisplayList.MediaBoxTHotPDF.RenderLoadedPageTilesوRenderLoadedPageBandsTHotPDF.RenderLoadedPageTilesParallelوRenderLoadedPageBandsParallelTHPDFParallelTileRenderInfoTHotPDF.SaveLoadedPageToPngTHotPDF.SaveLoadedPageToPngStreamTHotPDF.SaveLoadedPagesToTiffBandedTHotPDF.SaveLoadedPagesToTiffStreamBandedTHPDFBandImageExportInfoTHotPDF.RendererSharedCacheMaxBytesTHotPDF.RenderLoadedPagesParallelTHotPDF.RenderLoadedPagesParallelOrderedTHPDFParallelRenderPipelineInfoTHotPDF.PrefetchLoadedPagesTHotPDF.GetLoadedPagePrefetchInfoTHPDFLoadedPagePrefetchInfoTHotPDF.FlattenLoadedPageTransparencyTHotPDF.FlattenLoadedPageComplexGraphicsTHotPDF.RenderLoadedPageSeparationPlateTHotPDF.GetLoadedPageSpotColorantsTHotPDF.RewriteLoadedPageColorsTHotPDF.AnalyzeLoadedPageInkCoverageTHotPDF.InspectLoadedPageTrappingTHotPDF.ConfigureRenderICCWorkflow