רשימות תצוגה וייצור הדפסה

HotPDF מרכיב זרמי עמודים שנטענו למבני THPDFPageDisplayList לשימוש חוזר, עם מדדי THPDFDisplayListInfo ותיבות תוחמות של אובייקטי תוכן

רינדור מסמך שומר במטמון רשימות שהורכבו, בעוד מתקשר יכול לבקש רשימה בבעלות עצמאית לצורך ביצוע חוזר או סקירות אובייקט אזוריות

מתורגמן ייצור משותף

bitmap לא-פרוגרסיבי, direct-DC, ‏Form ונגינת display-list חוזרת מעבירים הכול תוכן pre-tokenised דרך HPDFInterpretContentTokensDevice, שמחזיק בבעלות על מעבר ה-operators ועל גבולות הביטול

THPDFPageRenderer מממש את IHPDFContentOperatorDevice, כך שהמעבר המשותף מפעיל את מכונת המצב המלאה שלו לגרפיקה, טקסט, משאבים, חיתוך, תבניות, שקיפות, marked-content ותמונות בלי לצמצם רינדור ייצור למשטח ה-callback הסמנטי הקטן יותר

רשימות תצוגה מטמינות אינדקסי token של operators בזמן שהזרמים מהודרים ומנגנות רק את האינדקסים האלה, וכך נמנעות סריקות operand חוזרות; ‏THPDFPageDisplayList.OperatorCount ו-THPDFPageDisplayList.TokenCount חושפים את הגיאומטריה של הרשימה

מכשירים סמנטיים שמממשים רק את IHPDFContentDevice שומרים על callbacks מסונני-יכולת, בעוד מכשירי ייצור יכולים לממש את IHPDFContentOperatorDevice כדי לקבל את רצף ה-operator המלא

רינדור מוגבל ומקביל

THPDFRenderTileEvent מקבל שבץ אחד או פס אופקי אחד בגודל שקבע המתקשר בכל פעם, מה ששומר על זיכרון סריקת השיא בלתי תלוי בגודל העמוד המלא

RenderLoadedPagesParallel חופף את הרכבת רשימת התצוגה עם השמעה, מתחיל את העמוד הראשון המוכן בלי לחכות לחיץ הרכבה מלא, מאזן דינמית את שני השלבים על פני עובדים מוגבלים, ומחזיר THPDFBitmapArray בסדר הקלט

ההרכבה פועלת מחוץ למנעול מטמון רשימת התצוגה, בעוד קבלה שנבדקה פעמיים וספירות שימוש מוגנות מאפשרים לעמודים שאינם קשורים להרכיב במקביל בלי לשכפל רשומות שפורסמו או לפנות רשימה במהלך השמעה

THPDFParallelRenderPipelineInfo חושף פגיעות מטמון, הרכבות, השלמות, שיאי מקביליות של הרכבה ורינדור, עמודים שהורכבו בתוצאה הראשונה, השהיית תוצאה ראשונה וזמן כולל שחלף

RenderLoadedPagesParallelOrdered מספק קריאות חוזרות בסדר הקלט על חוט הקריאה ומשחרר כל סיביות מושאלת אחרי שהקריאה החוזרת חוזרת, בעוד עומק פלט שנבחר על ידי המתקשר מפעיל לחץ-חוזר על היצרן ושומר משבץ אחד לעמוד הבא הנדרש, כך שעמוד איטי מוקדם אינו יכול ליצור מבוי סתום מאחורי תוצאות מאוחרות

הזרמה מסודרת שומרת לכל היותר רשימת תצוגה אחת ורינדור פעיל אחד לכל עובד, יחד עם תור משלים של סיביות, במקום לשמור את כל פלט המשימה במגורים

מנועי רינדור ניתנים לחיבור צורכים את אותן רשימות שהורכבו דרך תצוגת משאב מסמך שאינה בבעלות, כך שנתיבים תורילתיים ומקבילים נמנעים מפרסור מחדש של תוכן עמוד בעוד יכולות המנוע קובעות אם קריאות יכולות לחפוף או דורשות שליחה תורילתית

תזמן שיא הזיכרון המרכזי לתהליך מגביל כעת את שני ממשקי ה-API המקבילים: הערכת העמוד הגדולה ביותר מפחיתה את מספר העובדים הראשוני, כל עמוד שנתבע שומר את מכלול שטח העבודה המשוער שלו, ופלט מסודר שומר על אותה שמירה עד מסירת הקריאה החוזרת

ביטול התזמנות מעורר ממתינים לתקציב בביטול קריאה חוזרת או כשל עובד, בעוד טלמטריה חושפת עובדים מבוקשים לעומת אפקטיביים, משקל שמירת שיא, עמודים מתעכבים וזמן המתנה מצרפי

RenderLoadedPageTilesParallel ו-RenderLoadedPageBandsParallel מחלקים אריחים שאולו בסדר שורות או רצועות מלמעלה-למטה על פני עובדים מבודדים, כאשר כל עובד מחזיק באריח אחד לכל היותר ותוצאות ביניים נשמרות בזיכרון עד לסיום

הקשרי רינדור מקביליים מעתיקים רצפי token של גליפי Type 3 בלתי ניתנים לשינוי ומסכי threshold של halftone ממטמון LRU תחום אחד, תוך שמירה על בעלות מקומית-ל-renderer עבור מצב גרפיקה ניתן לשינוי ומשאבי GDI

SaveLoadedPageToPng, SaveLoadedPageToPngStream, SaveLoadedPagesToTiffBanded ו-SaveLoadedPagesToTiffStreamBanded צורכים את אותו מרנדר רצועות דרך מקודדי PNG או TIFF סטרימינגיים, כך שעמודים עצומים פולטים פלט דחוס שורה-אחר-שורה בלי להחזיק framebuffer שלם, בזמן ש-THPDFBandImageExportInfo מדווח גיאומטריית רצועות ובייטים

פיענוח תמונה משותף מתואם בנפרד, כך שעבודת עמוד וקטורי נותרת מקבילה בלי לשחית רשומות מטמון תמונה מפוענחת

PrefetchLoadedPages מחמם רשומות סריקה עם אסימון ביטול ייעודי בזמן הרכבה ורינדור מחוץ למנעול המטמון, ורינדור עמוד בחזית מקדים את העובד לפני תחילת עבודה רגישה להשהיה

THPDFLoadedPagePrefetchInfo מדווח עבודה שתוזמנה, שהתחילה, שהושלמה, שנשמרה במטמון, שרונדרה, שנכשלה, שבוטלה ושקדמה לחזית, יחד עם השהיית ביטול אחרונה ושיא

בקרות שקיפות והדפסה

השטחת שקיפות בודקת תחילה את ספירת השקיפות של רשימת התצוגה ואת תקרת פיקסלים שהגדיר המתקשר, ואז מחליפה את צביעת העמוד בתמונת RGB מאומתת וקאליבריטיבית דחוסה ב-Flate ללא אובדן

עמודים עם צבעונים Separation או DeviceN נשארים כתוכן וקטורי, כשהצבעונים שזוהו ומצב השימור נחשפים למתקשר

המרנדר מבצע פונקציות העברה ומילוני דפוס-חצי מסוג 1, 5, 6, 10 או 16 מתוך ExtGState תוך שימור מסכי RGB עצמאיים ובטלות העברה שלהם דרך q ו-Q

THPDFInkCoverageInfo מדווח את כיסוי ה-CMYK הממוצע, את סך שטח הכיסוי המרבי ואת מספר הפיקסלים שמעל לסף שנבחר

פלט לוחות תהליך ו-spot תומך בצבעונים DeviceCMYK, Separation ו-DeviceN

שכתוב צבע של עמוד שנטען משתמש באותו מרנדר מלא כדי להמיר עמודים מורכבים ל-Gray, RGB או CMYK תוך שמירת תוכן עמוד בצבע מכשיר פשוט כווקטורים והחלת מדיניות לוח spot מפורשת

THPDFTrappingInfo משלב הצהרות trapping של המסמך, מטא-נתונים של עמוד ואבחונים מבניים של TrapNet

זרימת עבודה של ICC

הטרנספורמציה של הרינדור יכולה לשלב פרופיל מקור PDF, מרחב צבע ערבוב, פרופיל הוכחה, פרופיל פלט ויעד סריקה sRGB

כל ארבעת כווני הרינדור של ICC ופיצוי נקודה שחורה אמיתי מיושמים באופן עקבי על צבעים וקטוריים ודגימות תמונה על פני הצינור

טרנספורמציות מלאות משותפות בין נתיבי רינדור וקטוריים, תמונה, עמוד ומקבילים דרך מטמון LRU בטוח לחוטים בגודל 64 MiB, שמפתח על ידי תוכן פרופיל מקור, הוכחה ופלט, כוונת רינדור אפקטיבית ופיצוי נקודה שחורה

השטחת שקיפות עושה שימוש חוזר באותו צינור טרנספורמציה, ואז פולטת שבבי CalRGB D65 ללא תפרים תחת תקציבי פיקסלים כוללים ולכל שבץ בשליטת המתקשר

APIs עיקריים