تناسب بومی با RAD Studio
به جای بستهبندی یک موتور PDF مجزا، از پروژهها، پکیجها، استریمها، فرمها و الگوهای ترسیم آشنای Delphi و C++Builder استفاده کنید
HotPDF 2.200.2 برای Delphi و C++Builder
HotPDF به برنامههای VCL اجازه میدهد تا اسناد PDF را مستقیماً از کد Delphi یا C++Builder بدون نیاز به استقرار زمان اجرای PDF خارجی ایجاد، اصلاح، ایمنسازی، امضا، بهینهسازی، وارد، فشردهسازی و ذخیره کنند
HotPDF یک کتابخانه کامپوننت PDF در سطح سورس برای Delphi و C++Builder است؛ این کتابخانه برای نرمافزارهای دسکتاپ ساخته شده است که به خروجی PDF قطعی، ترسیم مستقیم صفحه، یکپارچهسازی قوی با RAD Studio و استقرار فشرده نیاز دارند
این کامپوننت تولید روزمره PDF، مونتاژ پیشرفته سند، ویرایش PDF، خروجیهای تصویرمحور سنگین، فرمها، یادداشتها، رمزگذاری، گردشهای کاری امضا، بهینهسازی فونت و گردشهای کاری مبتنی بر استریم را از یک رابط بومی واحد API پوشش میدهد
انتشارهای اخیر کتابخانه، HotPDF را از یک نویسنده کلاسیک PDF به یک جعبه ابزار بومی و گستردهتر PDF توسعه دادهاند که دروازه ویژگیهای اختصاصی نسخه PDF 1.3 / 1.4 / 1.5 / 1.6 / 1.7، رمزگذاریهای منتخب PDF 2.0، انطباق با استانداردهای PDF/A-1 / -2 / -3 + PDF/X-1a / -3 / -4 + PDF/UA-1، امضاهای دیجیتال PAdES baseline / extended / long-term-validation، خط لوله امضای PFX / PKCS#12 درونفرآیندی مستقل از OpenSSL یا فایلهای باینری بومی خارجی، ذخیره بهروزرسانیهای افزایشی، زیرمجموعهسازی فونت CFF / OpenType / CID-keyed CFF و آداپتورهای خروجی PDF برای FastReport، QuickReport، ReportBuilder و DevExpress ExpressPrinting را شامل میشود که گزارشهای موجود خود را از طریق HotPDF به عنوان یک بکاند واحد PDF هدایت میکنند؛ یک Direct File API فایلهای PDF چند گیگابایتی با میلیونها شیء را به صورت فایلبهفایل پردازش میکند - تعداد صفحات، کپیها، بازنویسی اطلاعات سند و رمزگذاری یا رمزگشایی AES-256 - در چند ثانیه، و بارگذار اکنون اسناد بستهبندی شده در کانتینرهای انتقال با آفستهای قدیمی و فایلهای بهروزرسانی شده تدریجی با اشیاء یتیم یا جایگزینشده را نیز بازیابی میکند
چرخه v2.119.32-51 شکلدهی عربی / فارسی / اردو در سمت تولیدکننده (اتصال اجباری LAM-ALEF، نویسههای ۹گانه Arabic Presentation Forms-A)، موتور جایگزینی کامل OpenType GSUB برای هر LookupType 1-8 با انتخاب Script / LangSys و بستار زیرمجموعهساز TTF برای گلیفهای جایگزین، پشتیبانی از کانتینر XFA (XML Forms Architecture) با (AddXFAPacket / ClearXFAPackets / XFAPacketCount)، خانواده تریگرهای فیلد فرم AcroForm شامل /AA /K + /F + /V + /C، ثبت فونت multi-Unicode /DR از طریق RegisterAcroFormFont، تنظیمکنندههای ویژگی دسترسی ساختار-عنصر (/Lang / /E / /T) با یک نمونه شمارشی نوع ساختار استاندارد Table 333 و اورلود نوعدار AddStructureElement، و ویژگیهای توالی محتوای نشاندار در BeginTaggedContent را اضافه کرد
چرخه v2.119.52-68 خط لوله شکلدهی خودکار Phase 8 را تکمیل کرد و پوشش خطوط را گسترش داد: Arabic Extended-A (شامل U+0750-077F Arabic Supplement و U+08A0-08FF Arabic Extended-A) و Persian / Urdu Form-B به جدول کلاس اتصال کامل U+0672-06D5 به همراه ۲۶ نگاشت جدید Forms-A، با تاخوردگی پسگذر برای LAM-ALEF، زوجهای YEH-HAMZA + واکه (۸ اتصال در U+FBEA-FBFB)، اتصال مستقل لفظ جلاله Allah (U+FDF2) و عبارت ۲۲ کدپوینتی Bismillah (U+FDFD) گسترش یافتند؛ ویژگی جدید انتخابی ShapingFeatures + نمونه شمارشی THPDFShapingFeature شامل (sfArabicGSUB / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping) باعث میشود تا تولیدکننده جایگزینهای rlig / liga / clig / rclt مبتنی بر GSUB و مختص فونت را به طور خودکار صادر کند، به طوری که اتصالات استاندارد لاتین Latin Standard Ligatures (ff / fi / fl / ffi / ffl / ſt / st از طریق U+FB00-FB06) و تغییر ترتیب هجاهای هندی Devanagari شامل (Repha + pre-base I-matra) به همان خط لوله میپیوندند؛ متدهای جدید قابلیت شکلدهی برای سریانی (GetSyriacJoiningClass / GetSyriacPosition)، مغولی (GetMongolianJoiningClass / GetMongolianPosition) و دوانگاری (GetDevanagariCategory / ApplyDevanagariReorder) به فراخوانها اجازه میدهند تا متون پیچیده غیرعربی را از طریق همان موتور GSUB هدایت کنند؛ متد GetCodepointAdvance کسر em کششده برای /W را برای محاسبات پیچش متن افشا میکند، و AssignSyntheticCodepointForGID / GetSyntheticCodepointForGID به تولیدکننده امکان میدهند هر GID جایگزین GSUB (اشکال کلاستر Devanagari، جایگزینهای سبکی، توالیهای تنوع CJK) را از طریق کدپوینتهای Private-Use-Area با یکپارچگی کامل /CIDToGIDMap + /ToUnicode + /W صادر کند؛ نقشه انباشته ToUnicode CMap اکنون حاوی ۳۵ ورودی نگاشت معکوس اتصالات (۸ LAM-ALEF + ۱۸ از خانواده YEH-HAMZA + ۱ Allah + ۱ Bismillah + ۷ لاتین) است تا عملیات کپی/پیست خواننده-مصرفکننده کدپوینتهای سورس را تولید کند؛ اسکلت مستندات ChangeLog اکنون به ۱۱ زبان (EN / CN / AR / DE / ES / FR / IT / JA / KO / PT / RU) با یک رابط کاربری انتخابگر زبان ارائه میشود؛ حد نگهداری بخشهای نسخه ChangeLog نیز از ۲۵۰ به ۵۰۰ افزایش یافته است
چرخه v2.152-v2.190 یک موتور موقعیتدهی کامل OpenType GPOS را پیادهسازی کرد و پوشش خطوط پیچیده را گسترش داد؛ گزینههای انتخابی شکلدهی اکنون کرنینگ اختصاصی فونت (جفتی، سیاقی و راستبهچپ)، قرارگیری علامتهای ترکیبی (علامت به پایه، علامت به علامت و علامت به اتصال برای هر کامپوننت)، نقاط اتصال متصل و کرنینگ عمودی برای متن عمودی را اعمال میکنند که همگی به عنوان عملگرهای متنی استاندارد PDF نوشته شدهاند تا هر خوانندهای نتیجه یکسانی را رندر کند؛ شکلدهی سمت تولیدکننده اکنون زبان عربی (شامل بلوکهای Supplement، Extended-A و Extended-B)، سریانی، مغولی، N'Ko، آدلام، هانیفی روهینگیا، انباشت صامتهای تبتی، دوانگاری و سایر خطوط هندی را از طریق زنجیره ویژگیهای هندی فونت، جاوهای، ترتیب علامتهای تایلندی و لائو، ترتیب نقاط واکه عبری، خمر، میانمار، تای ویت و میتی مایک پوشش میدهد؛ مجموعهای از ویژگیهای اختیاری تایپوگرافی OpenType - اتصالات استاندارد، اختیاری و تاریخی، حروف کوچک کوچک، اعداد قدیمی / خطی / متناسب / جدولی، بالانویسها، زیرنویسها، اعداد ترتیبی، کسرها، زیرنویسهای علمی، صورتها، مخرجها، جایگزینهای سبکی و سیاقی، اشکال بومیسازی شده، اشکال حساس به حروف کوچک و بزرگ، صفر خطخورده و جایگزینهای عمودی - میتواند به طور خودکار در طول خروجی متن اعمال شود؛ کپی، پیست و جستجوی متن، کاراکترهای اصلی را در تمام خروجیهای شکلدهی شده بازیابی میکنند، از جمله اتصالات و جایگزینهای ویژگیهای زنجیرهای؛ خروجی فونت نیز کوچکتر شده است: برنامههای فونت تعبیهشده همیشه فشردهشده با Flate هستند، فونت استفاده شده در چندین صفحه یک بار در هر سند تعبیه میشود، تگهای زیرمجموعه به صورت قطعی برای خروجی قابل تکرار مشتق میشوند و یک حالت فشرده اختیاری متن plain-ASCII را با فونتهای استاندارد به عنوان متن WinAnsi غیرتعبیهشده مینویسد
HotPDF شامل پشتیبانی اختصاصی نسخه از ویژگیهای کاربردی ایجاد PDF 1.3، PDF 1.4، PDF 1.5، PDF 1.6 و PDF 1.7 مورد استفاده در برنامههای تجاری، تصویربرداری، انتشار و اتوماسیون اسناد است؛ رابطهای عمومی API با نسخه انتخاب شده PDF بررسی میشوند تا فایلهای تولید شده در زمان نیاز به سازگاری دقیق، از ورودیهای جدیدتر اجتناب کنند
ماتریس فعلی فیلترها و پیشبینها، استریمهای XRef، زنجیرههای بهروزرسانی افزایشی، رمزگذاری AES، امنیت کلید عمومی، رنگهای DeviceCMYK و ICCBased، الگوهای کاشیکاری، سایهزنیهای محوری/شعاعی/چندایستگاهی، تصاویر درونبرنامهای، لایهها، گروههای شفافیت، انتقال صفحات، یادداشتها، ویجتهای AcroForm، هوکهای امضای خارجی، متادیتای XMP، درختهای ساختار یافته نشاندار PDF، مقادیر OutputIntents، باکسهای صفحه تولید، تنظیمات ViewerPreferences، ویژگی UserUnit، ترتیب تبها و تعبیهسازی/زیرمجموعهسازی فونت را برای فونتهای TrueType، Type 3، CFF، OpenType-CFF و CID-keyed CFF پوشش میدهد
این یک پوشش گسترده و آگاه از استانداردهای ایجاد سند پشتیبانی شده در HotPDF است، نه یک ادعای همهجانبه مبنی بر اینکه تکتک موارد خاص در ISO 32000-1 پیادهسازی شدهاند
به جای بستهبندی یک موتور PDF مجزا، از پروژهها، پکیجها، استریمها، فرمها و الگوهای ترسیم آشنای Delphi و C++Builder استفاده کنید
سندهای PDF را همراه با فرمها، یادداشتها، لایهها، شفافیت، انتقال صفحات، ساختار نشاندار، رمزگذاری، نگهدارندههای جایگاه امضا و بهروزرسانیهای افزایشی بسازید
کاهش حجم PDF با فشردهسازی zlib-ng، تصویربرداری libjpeg-turbo، زیرمجموعهسازی TrueType، زیرمجموعهسازی OpenType-CFF و پشتیبانی از CID-keyed CFF برای فونتهای بزرگ CJK
قابلیتهای زیر تمایزهای فنی و جدی HotPDF نسبت به کامپوننتهای معمولی PDF در Delphi هستند؛ اکثر کامپوننتهای تجاری رقیب یا فاقد این ویژگیها به طور کامل هستند یا در تولید به طور ملموسی ضعیفتر عمل میکنند؛ هر ردیف به یک پیادهسازی قابل تایید و یک سطح عمومی API در داخل کتابخانه نگاشت میشود
یک موتور جایگزینی کامل GSUB که هر LookupType 1-8 را پوشش میدهد (تکی، چندگانه، جایگزین، اتصال، سیاقی، سیاقی زنجیرهای، توسعه، سیاقی زنجیرهای معکوس)، همراه با یک موتور موقعیتدهی GPOS که تمام ۹ نوع LookupTypes را پوشش میدهد (کرنینگ جفتی / تکی / سیاقی، علامت به پایه، علامت به علامت، علامت به اتصال برای هر کامپوننت اتصال، پیوست متصل، فاصله، vkrn/vpal عمودی)؛ تمام موقعیتدهیها با عملگرهای متنی استاندارد PDF صادر میشوند، بنابراین هر خوانندهای خروجی یکسانی را رندر میکند
شکلدهی بیش از ۲۰ نوع خط در سمت تولیدکننده، هدایت شده توسط زنجیره ویژگیهای GSUB خود فونت: عربی (شامل Supplement / Extended-A / Extended-B)، سریانی، مغولی، N'Ko، آدلام، هانیفی روهینگیا، انباشت تبتی، دوانگاری و خانواده هندی، جاوهای، ترتیب علامتهای تایلندی / لائو، ترتیب واکههای عبری، خمر، میانمار، تای ویت، میتی مایک؛ خروجی حامل نگاشت معکوس کامل /ToUnicode است تا عملیات کپی/پیست کدپوینتهای اصلی را بازیابی کند
قالبزدایی ASN.1، RSA، AES، PKCS#12 و CMS SignedData (RFC 5652) همگی در داخل HotPDF پیادهسازی شدهاند؛ متد SignPDFWithPFX یک PDF جایدار را در یک فراخوانی بدون نیاز به زمان اجرای OpenSSL و بدون ارائهدهنده رمزنگاری پلتفرم امضا میکند - کل زنجیره امضا در فرآیند شما قرار دارد، قابل تکرار و حسابرسی است و نیاز به استقرار هیچ فایل باینری بومی وجود ندارد
گردشهای کاری PAdES B-B، B-T، B-LT و B-LTA به طور کامل پوشش داده شدهاند: مهرهای زمانی RFC 3161 timestamps، دیکشنریهای اعتبارسنجی طولانیمدت DSS / VRI، امضاهای مهر زمانی سند، محدودیتهای Seed Value و XAdES-in-PDF؛ این یک نیاز جدی برای امضاهای الکترونیکی منطبق با استاندارد eIDAS اتحادیه اروپا است، در حالی که اکثر کامپوننتهای رقیب در سطح امضای پایه CMS متوقف میشوند
فیلتر پروفایل مستقل برای استانداردهای PDF/A-1/-2/-3، PDF/X-1a/-3/-4 و PDF/UA-1 به صورت همزمان - فراخوانیهای غیرمنطبق به جای نوشتن بیسروصدا سندهای غیرسازگار، استثناهای تشخیصی ایجاد میکنند؛ متد CreatePreflightReport گزارشهای متنی / JSON / HTML / CSV را همراه با پروفایلهای INI، پیشفرضهای داخلی، تجمیع دستهای و تعبیهسازی شواهد XMP صادر میکند که به صورت سرتاسری در برابر veraPDF تایید شدهاند
کار روی فایل PDF بر روی دیسک بدون نیاز به ساخت گراف اشیاء در حافظه؛ روی یک سند ۲ گیگابایتی با ۱.۶۷ میلیون شیء: رمزگذاری AES-256 حدود ۱۴ ثانیه، رمزگشایی حدود ۱۶ ثانیه، بازنویسی کامل حدود ۶ ثانیه؛ خواندن تعداد صفحات یک سند ۱.۲۵ گیگابایتی تنها چند میلیثانیه زمان میبرد؛ جدولهای کلاسیک xref، استریمهای XRef، فایلهای مرجع ترکیبی و اسناد بهروزرسانی شده تدریجی همگی در مسیر مستقیم باقی میمانند
فونتهای TrueType، OpenType-CFF و CID-keyed CFF همگی در حین حفظ شناسه گلیفها برای متن Type0 / Identity-H قابل زیرمجموعهسازی هستند؛ اسناد CJK که قبلاً برنامههای ۱۴ مگابایتی CID-keyed CFF را تعبیه میکردند، اکنون بدون از دست رفتن هیچ گلیف رندر شدهای، با حجم ۵۰۰ کیلوبایت تا ۲ مگابایت عرضه میشوند؛ برنامههای فونت تعبیهشده همیشه با Flate فشرده میشوند، فونتهای چندصفحهای یک بار در هر سند تعبیه میشوند و تگهای زیرمجموعه برای خروجی قابل تکرار، به صورت قطعی تعیین میشوند
ویژگی THPDFLogger و بخش سراسری HPDFLog یک نمای تشخیصی قابل تنظیم در زمان اجرا ارائه میدهند: فیلتر کردن سطح اهمیت Error / Warning / Info / Debug، مقصدهای همزمان فایل + OutputDebugString + کنسول، ایمن در برابر ترد، پشتیبانگیری خودکار تکفایله ۱۰ مگابایتی، مسیر سریع غیرفعال بدون سربار؛ متد LoadFromFile، گزارشهای preflight و مسیر جایگزین استریم اشیاء از قبل به تشخیصهای ساختاریافته مجهز شدهاند که بدون نیاز به بازسازی برنامه در زمان اجرا قابل تغییر هستند - قابلیت عملیاتی که اکثر کامپوننتهای رقیب کاملاً فاقد آن هستند
بکاندهای آماده PDF برای FastReport با (TfrxHotPDFExport)، QuickReport با (TQRHotPDFExportFilter)، ReportBuilder با (TppHotPDFDevice) و DevExpress ExpressPrinting شامل (cxGrid / cxRichEdit / cxScheduler / cxPivotGrid)؛ طرحهای گزارش موجود به کار خود ادامه میدهند - تنها صادرکننده PDF تعویض میشود
اینها قابلیتهای ارائه شده هستند، نه وعدههای نقشه راه؛ تمام موارد فوق در کتابخانه فعلی پیادهسازی شدهاند، بدون مشکل کامپایل میشوند و تستهای DUnitX به همراه تاییدیه سرتاسری veraPDF را پاس میکنند؛ هنگام ارزیابی کامپوننتهای رقیب، اثبات پوشش کامل GSUB/GPOS LookupType، زنجیره درونفرآیندی PAdES B-LTA و نرخ انتقال اندازهگیری شده رمزگذاری چند گیگابایتی را درخواست کنید
StrictVersionLock اعمال کنندخانواده متدهای DAOpenFileReadOnly / DACopyFile / DASetDocumentInfo / DASaveAsFile و فراخوانیهای فایلبهفایل EncryptFile / DecryptFile به جای ساخت گراف اشیاء در حافظه، مستقیماً روی فایل PDF کار میکنند؛ در یک سند معیار ۲ گیگابایتی با ۱.۶ثانیه میلیون شیء، رمزگذاری AES-256 حدود ۱۴ ثانیه، رمزگشایی حدود ۱۶ ثانیه و بازنویسی کامل حدود ۶ ثانیه زمان میبرد؛ باز کردن یک سند ۱.۲۵ گیگابایتی برای دریافت تعداد صفحات آن تنها چند میلیثانیه طول میکشد؛ جدولهای کلاسیک، استریمهای ارجاع متقاطع، فایلهای مرجع ترکیبی و اسناد بهروزرسانی شده تدریجی همگی در مسیر مستقیم باقی میمانند
متدهای CreatePreflightReport و CreatePreflightReportWithProfile یک PDF را در برابر بررسیهای پشتیبانی شده PDF/A، PDF/X و PDF/UA ممیزی میکنند و گزارشهای متنی، JSON، HTML یا CSV را همراه با پروفایلهای سبک INI برای نادیده گرفتن یافتههای پذیرفتهشده صادر مینمایند - آماده برای دروازههای CI و ورود دستهای اسناد؛ دمو PreflightCLI قابلیت اجرای پوشههای بازگشتی و داشبوردهای تجمیعی را اضافه میکند
متدهای HasFormFields و FormFieldExists قبل از هرگونه تغییر، به سوالات مربوط به فرمهای یک PDF بارگذاری شده پاسخ میدهند، مقادیر فیلدها را میتوان بر اساس ایندکس یا نام خواند و نوشت، و FlattenFormFields فیلدهای تعاملی AcroForm را در محتوای صفحه ادغام کرده و تعداد فیلدهای مسطح شده را گزارش میدهد - در کنار مسطحسازی XFA-به-AcroForm که فرمهای XFA را در هر خوانندهای قابل استفاده نگه میدارد
فراخوانی THotPDF.SignPDFWithPFX(InputPDF, OutputPDF, PFXFile, Password) یک PDF جایدار موجود را در یک فراخوانی امضا میکند؛ پشته کامل ASN.1، RSA، AES، PKCS#12 و CMS SignedData (RFC 5652) در داخل HotPDF پیادهسازی شده است، بنابراین نیازی به زمان اجرای OpenSSL یا ارائهدهنده رمزنگاری پلتفرم وجود ندارد
گردشهای کاری PAdES B-B، B-T، B-LT و B-LTA به صورت سرتاسری پوشش داده شدهاند: ایجاد امضا با مهرهای زمانی RFC 3161، دیکشنریهای اعتبارسنجی طولانیمدت DSS / VRI، امضاهای مهر زمانی سند و محدودیتهای Seed Value؛ پیادهسازی استاندارد XAdES-in-PDF و اعمال مقدار Seed Value امضا بخشی از همین سطح هستند
HotPDF متدهای ویژگیها را در برابر پروفایلهای PDF/A-1 / -2 / -3، PDF/X-1a / -3 / -4 و PDF/UA-1 فیلتر میکند؛ فراخوانیهایی که پروفایل انتخاب شده را نقض میکنند (شفافیت در PDF/A-1، جاوااسکریپت در PDF/A، یادداشتهای خارجی در PDF/X، ساختار بدون تگ در PDF/UA) به جای تولید بیسروصدای فایلهای غیرمنطبق، استثناهای تشخیصی ایجاد میکنند
بکاندهای آماده PDF برای چهار موتور رایج گزارشگیری Delphi شامل TfrxHotPDFExport (نسخههای FastReport 4 / FastReport VCL)، TQRHotPDFExportFilter (مربوط به QuickReport)، TppHotPDFDevice (مربوط به ReportBuilder) و dxHotPDFExportReportLinkToFile/Stream (مربوط به سیستم DevExpress ExpressPrinting System که cxGrid / cxRichEdit / cxScheduler / cxPivotGrid را پوشش میدهد)؛ گزارشهای موجود به کار خود ادامه میدهند - تنها صادرکننده PDF تعویض میشود
موقعیتدهی انتخابی متن هدایتشده توسط دادههای GPOS خود فونت: کرنینگ جفتی و سیاقی برای متون چپبهراست و راستبهچپ، قرارگیری علامت به پایه، علامت به علامت و قرارگیری علامت برای هر جزء اتصال، تراز ورودی/خروجی شکسته، موقعیتدهی فاصله و کرنینگ عمودی برای فونتهای عمودی؛ موقعیتدهی با عملگرهای متنی استاندارد PDF صادر میشود تا هر خواننده PDF نتیجه یکسانی را رندر کند
شکلدهی سمت تولیدکننده متون متصل و مرتبشده را برای عربی (شامل بلوکهای Supplement، Extended-A و Extended-B)، سریانی، مغولی، N'Ko، آدلام، هانیفی روهینگیا، تبتی، دوانگاری و سایر خطوط هندی، جاوهای، تایلندی، لائو، عبری، خمر، میانمار، تای ویت و میتی مایک رندر میکند بدون اینکه به شکلدهنده سمت نمایشگر وابسته باشد؛ هر خط یک سوئیچ انتخابی است، بنابراین خروجیهای موجود تا زمان فعالسازی به صورت بایتبهبایت یکسان باقی میمانند و عملیات کپی/پیست کاراکترهای اصلی را بازیابی میکند
سوئیچهای انتخابی شکلدهی، اتصالات استاندارد، اختیاری و تاریخی فونت، حروف کوچک کوچک، اعداد قدیمی / خطی / متناسب / جدولی، بالانویسها، زیرنویسها، اعداد ترتیبی، کسرها، زیرنویسهای علمی، صورتها، مخرجها، جایگزینهای سبکی و سیاقی، اشکال بومیسازی شده، اشکال حساس به حروف کوچک و بزرگ، صفر خطخورده و جایگزینهای عمودی را به طور خودکار در حین خروجی متن اعمال میکنند، به طوری که استخراج متن به کاراکترهای اصلی نگاشت میشود
برنامههای فونت تعبیهشده همیشه با Flate فشرده میشوند، فونتی که در چندین صفحه استفاده میشود یک بار برای کل سند تعبیه میگردد و تگهای زیرمجموعه به صورت قطعی از گلیفهای واقعی استفادهشده مشتق میشوند تا اجراهای مکرر خروجی یکسانی تولید کنند؛ یک حالت اختیاری متن plain-ASCII را با فونتهای استاندارد به عنوان متن فشرده غیرتعبیهشده WinAnsi مینویسد که حجم یک صفحه از متن ساده را از چندصد کیلوبایت به چند کیلوبایت کاهش میدهد
شکلدهی سمت تولیدکننده، ورودیهای Unicode را قبل از صدور متن PDF به اشکال نمایشی Presentation Forms خود تا میکند؛ خط عربی جدول کامل کلاس اتصال U+0672-06D5 به همراه بیش از ۴۰ نگاشت Forms-A را با پسگذر اتصالات خودکار برای LAM-ALEF، زوجهای YEH-HAMZA + واکهها (U+FBEA-FBFB)، لفظ جلاله Allah (U+FDF2) و عبارت Bismillah (U+FDFD) پوشش میدهد؛ رابطهای قابلیت برای سریانی (GetSyriacJoiningClass)، مغولی (GetMongolianJoiningClass) و دوانگاری (GetDevanagariCategory / ApplyDevanagariReorder) به فراخوانها اجازه میدهند تا خطوط پیچیده غیرعربی را از طریق همان موتور GSUB هدایت کنند
ویژگی انتخابی ShapingFeatures + نمونه شمارشی THPDFShapingFeature شامل (sfArabicGSUB / sfCursiveAttachment / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping) موتورهای OpenType GSUB و GPOS را به یک خط لوله خودکار در سمت تولیدکننده ارتقا میدهد؛ تبدیلهای بومی عربی init / medi / fina / isol، عملگرهای rlig، calt، rclt، اتصال پیوسته GPOS، کدهای لاتین liga / clig و تغییر ترتیب هجاهای هندی Devanagari همزمان با صدور متن رخ میدهند، همراه با نگاشت معکوس کامل /ToUnicode برای صحت کپی/پیست
اتصالات استاندارد لاتین (ff / fi / fl / ffi / ffl / ſt / st از طریق U+FB00-FB06) هنگام فعال بودن sfStandardLigatures به طور خودکار از طریق ApplyLatinLigatureRefinement صادر میشوند؛ برای GIDهای جایگزین GSUB بدون کدپوینت طبیعی Unicode - اشکال کلاستر Devanagari، جایگزینهای سبکی، توالیهای تنوع ایدئوگرافیک CJK - متد AssignSyntheticCodepointForGID یک کدپوینت در ناحیه استفاده خصوصی Private-Use-Area (U+E000-F8FF) را با یکپارچگی آینهای /CIDToGIDMap + /W + /ToUnicode اختصاص میدهد
هر نوع OpenType GSUB LookupType 1-8 (تکی، چندگانه، جایگزین، اتصال، سیاقی، سیاقی زنجیرهای، توسعه، سیاقی زنجیرهای معکوس) به عنوان یک سطح جستجوی فقط قابلیت پیادهسازی شده است (شامل متدهای GetSingleSubstituteGlyph، ApplyLigatureSubstitution، ApplyContextualSubst، ApplyReverseChainedContextualSubst و بخشهای کمکی Multiple / Alternate / Script / LangSys / Feature)؛ متد MarkUnicodeGlyphUsed هر گلیف جایگزین را به زیرمجموعهساز TTF میکشد تا زیرمجموعه فونتهای تعبیهشده خودکفا باقی بمانند
/DRبستههای کانتینر XFA مطابق استاندارد PDF 1.7 §12.7.6 / §12.7.8 در کنار (یا به جای) مقادیر استاتیک /Fields از طریق AddXFAPacket منتقل میشوند؛ خانواده کامل تریگرهای فیلد فرم AcroForm شامل (/AA /K برای فشرده شدن کلید، /F برای فرمت، /V برای اعتبارسنجی، /C برای محاسبات) به عنوان متدهای بستهبندی ارائه شدهاند، و RegisterAcroFormFont چندین فونت Unicode را به یک دیکشنری منابع AcroForm /DR برای ویجتهای فرم چندزبانه متصل میکند
متد THotPDF.EnableFontSubsetting فونتهای TrueType، OpenType-CFF و CID-keyed CFF را با حفظ شناسه گلیفها برای متن Type0 / Identity-H زیرمجموعهسازی میکند؛ اسناد CJK PDF که قبلاً برنامههای ۱۴ مگابایتی CID-keyed CFF را تعبیه میکردند، اکنون بدون از دست رفتن هیچ گلیف رندر شدهای، با حجم ۵۰۰ کیلوبایت تا ۲ مگابایت عرضه میشوند
متدهای BeginIncrementalUpdate، SaveIncrementalUpdate، MarkDirty و رابطهای برنامهنویسی نگهدارنده جایگاه امضا از بهروزرسانیهای فقط الحاقی PDF و گردشهای کاری چندامضایی بدون نیاز به بازنویسی بایتهای امضاشده قبلی پشتیبانی میکنند
GetSyriacJoiningClass / GetSyriacPosition)، مغولی (GetMongolianJoiningClass / GetMongolianPosition)، دوانگاری (GetDevanagariCategory / ApplyDevanagariReorder) - هدایت همان موتور GSUB برای متون پیچیده غیرعربیShapingFeatures: مقدار sfArabicGSUB بخشهای بومی عربی init / medi / fina / isol به همراه rlig / calt / rclt را برای صدور شناسههای گلیف سیاقی و مختص فونت اعمال میکند، sfCursiveAttachment نقاط لنگر متصل GPOS را اعمال میکند، sfStandardLigatures / sfContextualLigatures اتصالات لاتین liga / clig شامل (FB00-FB06: ff / fi / fl / ffi / ffl / ſt / st) را صادر میکنند، و sfIndicShaping ترتیب کلاسترهای Devanagari شامل (Repha + pre-base I-matra) را قبل از صدور تغییر میدهدMarkUnicodeGlyphUsed), پوشش Cmap format 12 SMP، تجزیه GDEF، صدور خودکار ToUnicode CMap با ۳۵ ورودی نگاشت معکوس اتصال، و جستجوی GetUnicodeGlyphForCodepoint برای فراخوانهایی که صدور گلیفبهگلیف را هدایت میکنندAssignSyntheticCodepointForGID / GetSyntheticCodepointForGID) به تولیدکنندگان اجازه میدهد هر GID جایگزین GSUB (اشکال کلاستر Devanagari، جایگزینهای سبکی، توالیهای تنوع ایدئوگرافیک CJK) را از طریق ناحیه استفاده خصوصی U+E000-F8FF با یکپارچگی آینهای /CIDToGIDMap + /W صادر کنند؛ متد GetCodepointAdvance کسر em کششده برای /W را برای محاسبات پیچش متن افشا میکندvkrn / vpal اعمال شده در خروجی متن عمودیliga / clig / dlig / hlig، حروف کوچک کوچک smcp / c2sc، استایلهای عدد onum / lnum / pnum / tnum، موارد sups / subs / ordn / frac / sinf / numr / dnom، جایگزینهای سبکی salt، جایگزینهای سیاقی calt / rclt، اشکال بومیسازی شده locl، اشکال case، صفر خطخورده zero و جایگزینهای عمودی vert / vrt2، همراه با جایگزینیهای زنجیرهای برطرفشده به متن اصلی در ToUnicode CMap/AA /K Keystroke، /F Format، /V Validate، /C Calculate) با یک متد بستهبندی به ازای هر تریگر؛ ثبت فونت multi-Unicode /DR از طریق RegisterAcroFormFont؛ پشتیبانی از کانتینر XFA (XML Forms Architecture) مطابق PDF 1.7 §12.7.6 / §12.7.8 با AddXFAPacket / ClearXFAPackets / XFAPacketCount و دروازههای انطباق PDF/A + PDF/X، به همراه مسطحسازی XFA-به-AcroForm شامل (ApplyXFAAsAcroForm برای بایتهای خام XDP و FlattenLoadedXFA برای فرم تعبیهشده یک PDF بارگذاری شده) که XFA استاتیک را به فیلدهای بومی AcroForm، استایلدهی و گرافیک صفحه تبدیل میکند تا فرم در خوانندههای بدون موتور XFA نیز قابل مشاهده و پر کردن باقی بماندBeginTaggedContent شامل (/Lang / /Alt / /ActualText / /E)، تنظیمکنندههای ویژگی ساختار-عنصر (/Lang / /E / /T)، نمونه شمارشی استاندارد نوع ساختار Table 333 شامل (THPDFStandardStructureType) به همراه اورلود نوعدار AddStructureElementنسخههای فعلی HotPDF از zlib-ng در حالت سازگار با zlib برای بکاند تعبیهشده Flate استفاده میکنند؛ استریمهای صفحه، استریمهای فونت تعبیهشده، نقشههای ToUnicode CMap، استریمهای تصویر Flate، خروجیهای مرتبط با TIFF و بخشهای کمکی FlateDecode از طریق لایه zlib در HotPDF هدایت میشوند
نسخههای Win64x و نسخههای تشخیصی MSVC Win64 zlib-ng شامل تخصیص پویای CPU در زمان اجرا برای مسیرهای SSE2، SSSE3، SSE4.1، SSE4.2، PCLMULQDQ و AVX2 همراه با حفظ مسیرهای جایگزین عمومی هستند؛ نسخه Win32 روی مجموعه اشیاء عمومی zlib-ng OMF از طریق bcc32c باقی میماند، در حالی که اشیاء Win32 JPEG و TIFF همچنان از مسیر کلاسیک bcc32 OMF استفاده میکنند
جریانهای کاری استاندارد JPEG از مجموعه اشیاء تعبیهشده libjpeg-turbo 3.1.90 از طریق رابط برنامهنویسی سازگار با libjpeg ارائه شده توسط HPDFJpeg.pas استفاده میکنند؛ نسخههای بومی Win32، Win64 و Win64x اکنون شامل مجموعههای شیء مربوطه NASM SIMD هستند و همان بکاند بومی JPEG برای مدیریت TIFF فشردهشده با JPEG در دسترس لایه یکپارچهساز TIFF قرار دارد
پل زمان اجرای C در HPDFCLibs.pas اکنون توابع malloc، free، realloc، calloc، memcpy، memmove و memset را از طریق یک لایه متصل به Pascal حل میکند، همراه با تخصیص تراز ۳۲ بایتی برای بافرهای بومی سازگار با SIMD
مخزن شامل اسکریپتهای ساخت شیء قابل بازتولید است: Lib\thirdparty\build-bcc32.bat، Lib\thirdparty\build-bcc64x.bat و Lib\thirdparty\build-vc64.bat برای مجموعه کامل کتابخانه بومی C، به همراه اسکریپتهای اختصاصی zlib-ng برای بازسازی متمرکز فشردهسازی
program HelloHotPDF;
uses
System.SysUtils,
HPDFDoc;
var
PDF: THotPDF;
begin
PDF := THotPDF.Create(nil);
try
PDF.AutoLaunch := False;
PDF.FileName := 'HelloHotPDF.pdf';
PDF.Compression := cmFlateDecode;
PDF.EnableFontSubsetting := True;
PDF.BeginDoc;
PDF.CurrentPage.SetFont('Arial', [], 18);
PDF.CurrentPage.TextOut(50, 50, 0, 'Hello HotPDF');
PDF.EndDoc;
finally
PDF.Free;
end;
end.
Lib: واحدهای سورس HotPDF، پروژههای پکیج، فایلهای شیء استاتیک و یکپارچهسازی کتابخانه شخص ثالث تعبیهشدهDemo\Delphi: نمونههای Delphi برای تولید سند، ترسیم، تصاویر، تنظیمات صفحه، رمزگذاری، گردشهای کاری ادغام/ویرایش و موارد دیگرDemo\C++Builder: نمونههای C++Builder همسو با گردشهای کاری اصلی دمو DelphiHtmlHelp: راهنمای محصول و محتوای مرجع توسعهدهنده