เอกสาร HotXLS

การเรนเดอร์และการส่งออกขั้นสูง

เส้นทางของ PDF, SVG, บิตแมป, เมตาไฟล์, พรีวิว และการพิมพ์ ใช้โมเดลการแบ่งหน้าตัวเดียวกับเรขาคณิตที่ไม่ผูกกับ backend โดยยังคงตัวเข้ารหัสเฉพาะแต่ละรูปแบบไว้

แบ็กเอนด์กราฟิกแบบกำหนดเอง

TXLSGraphicsTextAlign กำหนดการจัดข้อความแบบซ้าย กลาง และขวาให้ TXLSGraphicsBackend ส่วนคำเรียกวาดแบบมีสไตล์จะรับ enum ร่วมที่เหลือ — สไตล์ฟอนต์ (TXLSGraphicsFontStyles), ปลายเส้น (TXLSGraphicsLineCap), ลายเส้นประ (TXLSGraphicsLineDash) และการจัดแนวตั้งของข้อความ (TXLSGraphicsTextVAlign)

วงจรชีวิตของหน้าBeginPage และ EndPage
PrimitiveFillRect, StrokeRect, DrawLine, DrawStyledLine, DrawEllipse, DrawPath, DrawText, DrawStyledText, DrawCellText และ DrawImage
จุดเข้าของการแบ่งหน้าTXLSPaginationModel.RenderPageToBackend ส่งหน้า logical หนึ่งหน้าให้ backend implementation ใดก็ได้

ตัว implementation จะได้รับพิกัดเป็นหน่วย point, ผลของข้อความและภาพที่ resolve แล้ว, การคลิป และตำแหน่งวาดภายในหน้า โดยไม่ต้องทำซ้ำตรรกะ layout ของ workbook แต่ละรายการวาดบนหน้า logical จะมาในรูปเรกคอร์ด TXLSPageDrawingPlacement ซึ่งฟิลด์ Kind (TXLSPageDrawingKind: xpdkImage, xpdkChart, xpdkTextBox, xpdkShape, xpdkControl) บอก backend ว่ากำลังวาดอะไร ส่วนไทล์พื้นหลังแผ่นงานจะมาเป็น TXLSSheetBackgroundRenderData ที่ decode แล้ว

เรขาคณิตการเรนเดอร์ที่เป็นของ operation

TXLSPaginationModel.RenderBackend เลือก backend identity ที่จะถูกจับไว้โดยคำเรียก Build ครั้งถัดไป และ RenderGeometry เปิดเผยค่าสอบเทียบที่เปลี่ยนไม่ได้, generation ของ workbook, backend และสถานะ metric-cache ที่มีขอบเขตตามผลลัพธ์นั้น ส่วน render session ที่ใช้งานอยู่ส่งต่อเป็น handle TXLSRenderSession และนโยบายสีเป็น TXLSRenderColorMode (xlsrcColor หรือ xlsrcMonochrome)

โมเดล PDF ใช้ xlsrgbPdf, SVG ใช้ xlsrgbSvg, ภาพหน้าใช้ xlsrgbBitmap, โมเดลการพิมพ์และ print preview ใช้ xlsrgbPrintPreview และ TXLSWorkbookViewer ใช้ xlsrgbViewer; property PaginationModel บนคอมโพเนนต์ SVG, ภาพ, พิมพ์ และ viewer จะเปิดเผยโมเดลที่ใช้งานอยู่เพื่อการวินิจฉัยโดยไม่โอนความเป็นเจ้าของ

จุดเข้า HTML ทั้งฝั่ง classic และ XLSX จะจับ xlsrgbHtml; TXLSHTMLExport.RenderGeometry เปิดเผย snapshot ฝั่ง Classic ล่าสุด ส่วน TXLSXHtmlExportSession.RenderGeometry เปิดเผย snapshot ที่คงไว้ตลอดทุกชีตในการส่งออกแบบ incremental

การส่งออกคอลัมน์ HTML แปลงโมเดลความกว้างอักขระของ workbook ผ่านความกว้างตัวเลขสูงสุดของฟอนต์ Normal และ scaling ของจอที่ตั้งค่าไว้ ก่อนเขียนออกเป็นตัวความยาว CSS pixel แบบคงที่ ส่วนการแปลงระหว่าง point กับ pixel ก็ใช้ DPI จากค่าวัดที่จับไว้เดียวกัน

แต่ละ operation คงค่าสอบเทียบที่จับไว้แม้ workbook จะเปลี่ยนในภายหลัง และการเรนเดอร์จะไม่เขียนทับความสูงแถวหรือความกว้างคอลัมน์ของแผ่นงานเลย Pagination สร้างหน้าจากออบเจกต์ TXLSLogicalPage ซึ่งรายการวาด ทิศของหน้า (TXLSPageOrientation: xpoPortrait หรือ xpoLandscape) และการวางคอมเมนต์ (TXLSPrintComments: xpcNone หรือ xpcAtEnd) ล้วนมาจาก page setup ที่ resolve แล้ว

หน้า logical เปิดเผยทุกสิ่งที่ backend หรือ callback ต้องการใช้: identity (DocumentPageNumber, SheetPageNumber, SheetName, ClassicWorksheet หรือ XlsxWorksheet ที่เป็นเจ้าของ), เรขาคณิต (PageWidth, PageHeight, Scale และค่า LeftMargin, RightMargin, TopMargin, BottomMargin, HeaderMargin, FooterMargin), ช่วงข้อมูล (DataFirstRow, DataLastRow, DataFirstCol, DataLastCol) พร้อม print titles (RepeatFirstRow, RepeatLastRow, RepeatFirstCol, RepeatLastCol), ตำแหน่งพื้นหลัง (BackgroundOffsetX, BackgroundOffsetY), การพิมพ์กริดไลน์ (PrintGridlines, GridlineColor), ข้อความแถบ header และ footer หกช่อง (LeftHeader, CenterHeader, RightHeader, LeftFooter, CenterFooter, RightFooter) กับโครงร่างแถวและคอลัมน์ของหน้า (RowCount พร้อม Rows และ RowEdges, ColumnCount พร้อม Columns และ ColumnEdges) รวมถึงรายการวาดของหน้า (DrawingCount และ Drawings) ExpandHeaderFooter resolve รหัสรูปแบบของ header/footer เทียบกับหน้า ส่วน ExpandHeaderFooterStyled รายงานเพิ่มทั้งขนาด point นำหน้าและสี เพื่อให้ตัววาดแบบกำหนดเองเรนเดอร์ header ได้ตรงกับ Excel

การเรนเดอร์พื้นหลังแผ่นงาน

viewer ของ workbook แสดงพื้นหลังแผ่นงานทั้งแบบ Classic และ XLSX ที่ถูกต้องเป็นการวางไทล์ซ้ำใต้เซลล์ที่ไม่มีการเติมสี ในขณะที่ fill ของเซลล์ทั้งแบบกำหนดเองและแบบมีเงื่อนไขจะอยู่เหนือพื้นหลัง

TXLSPaginationModel, TXLSSvgExport, TXLSPageImageExporter, TXLSPrintDocument, TXLSPDFExport, TXLSHTMLExport, TXLSXHtmlExportOptions และ TXLSWorkbookViewer เปิดเผย ExportSheetBackgroundImages; ค่าเริ่มต้นเป็น False สำหรับเอาต์พุตพิมพ์ พรีวิว เมตาไฟล์ PDF SVG บิตแมป และ HTML แผ่นงานเก็บ payload พร้อมระบุฟอร์แมตภาพเป็น TXLSSheetBackgroundFormat และไบต์ที่ decode แล้วจะส่งต่อเป็น TXLSSheetBackgroundResource ที่ใช้ key เป็น generation, DPI และโหมดสี

เมื่อเปิดใช้ เอาต์พุตแบบแบ่งหน้าจะผูกเฟสของไทล์กับพิกัดแผ่นงานข้ามขอบเขตหน้า และคงภาพที่ decode แล้วหนึ่งภาพต่อแผ่นงาน ต่อ resource generation ต่อ backend ต่อ DPI ต่อโหมดสีตลอด render session; BackgroundDecodeCount เปิดเผยยอดรวมการ decode เพื่อการวินิจฉัย ส่วน payload ที่เสียจะถูกข้ามพร้อมบันทึก diagnostic ของ workbook TXLSRenderSession ที่ใช้งานอยู่จัดการ cache ร่วมนี้เอง: AcquireBackground ดึง (หรือ decode ครั้งเดียว) TXLSSheetBackgroundRenderData แบบไทล์ของแผ่นงานหนึ่ง, DrawTiledBackground วาดมันทั่วพื้นที่หน้าที่ถูกคลิป และ DecodeCount รายงานจำนวน payload ที่ decode ไปแล้ว

นโยบายการแสดงออบเจกต์ของ workbook

ObjectDisplayMode เลือก xlsodmShowAll, xlsodmShowPlaceholders หรือ xlsodmHideAll ได้ทั้ง workbook แบบ Classic XLS และ XLSX; viewer ใช้งานครบทั้งสามสถานะ และในโหมด placeholder จะใช้กล่องแสดงชนิด ชื่อ ข้อความ และ alt-text ที่มีต้นทุนต่ำ

ตัวส่งออก PDF, SVG, บิตแมป, การพิมพ์จริง และ XLSX HTML ปฏิบัติต่อโหมด placeholder เท่ากับการส่งออกออบเจกต์เต็มรูปแบบตามค่าเริ่มต้น; ตั้ง ExportObjectPlaceholders บนตัวส่งออกหรือ HTML options ที่เกี่ยวข้องเพื่อขอกล่องโดยไม่มี การ decode ภาพหรือการสร้าง scene ของแผนภูมิ

xlsodmHideAll เป็นประตู global ที่อยู่ก่อนหน้า ป้องกันการจัดเก็บ drawing, การขยายช่วงที่ขับเคลื่อนด้วยออบเจกต์, การ hit testing และการเรนเดอร์สื่อ ส่วนพื้นหลังแผ่นงาน ไอคอน conditional format ภาพ header หรือ footer เซลล์ และตัวกรอง print-object เฉพาะของตัวส่งออกแต่ละตัวยังคงเป็นอิสระจากกัน

แกนวันที่ของแผนภูมิที่รับรู้ปฏิทิน

แผนภูมิ XLSX ที่แกนหมวดหมู่ใช้ xlsxAxisDate จะแมปทุกหมวดหมู่ที่ถูกต้องผ่านระบบวันที่แบบ serial 1900 หรือ 1904 ของ workbook และคงระยะห่างจริงระหว่างวันที่ที่กระจายตัวเบาบาง แทนที่จะจับช่องจุดให้ห่างเท่ากัน

BaseTimeUnit ควบคุมการ normalize เป็นวัน เดือน หรือปี ส่วน MajorUnit, MinorUnit, MajorTimeUnit และ MinorTimeUnit ขยับขีดบอกค่าตามหน่วยปฏิทิน ช่วงเดือนและปีจึงคงการเรียงที่ตรงกันข้ามกับเดือนที่ยาวไม่เท่ากันและปีอธิกสุรทิน

ชุดขีดบอกค่าที่มีขอบเขตเดียวกันนี้ป้อนพิกัด ป้ายกำกับ ขีด และกริดไลน์ที่ขอ ให้กับเอาต์พุต PDF, SVG, บิตแมป, พรีวิว, พิมพ์ และ viewer บนฐาน pagination ส่วน XLSX HTML ใช้เลขคณิตปฏิทินร่วมเดียวกันสำหรับ SVG แผนภูมิแบบ inline ของมัน

PDF writer แบบสแตนด์อโลน

TXLSPDFWriter สร้างเอกสาร PDF ที่ไม่ได้มาจาก workbook เช่น ใบแจ้งหนี้ ตั๋ว ฉลาก และแบบฟอร์ม overlay; BeginDoc ตั้งกรอบหน้าละเอียดระดับ point, NewPage ปิดหน้าปัจจุบัน และ SaveToStream หรือ SaveToFile ทำให้เอกสารสมบูรณ์

เมธอดวาดใช้หน่วย point ของ PDF นับจากมุมล่างซ้าย และสีของไลบรารีในรูป $00BBGGRR หรือ $AABBGGRR; primitive ที่มีให้ครอบคลุม FillRectangle, StrokeRectangle, ClipRectangle, MeasureText, SaveGraphicsState และ RestoreGraphicsState สำหรับสี่เหลี่ยมแบบเติมและแบบเส้น, เส้น, ellipse, ข้อความมีสไตล์ที่วัดความกว้างได้แม่นยำ affine transform การคลิปเป็นสี่เหลี่ยม และการ save หรือ restore สถานะกราฟิกอย่างชัดเจน ส่วน PageWidth และ PageHeight รายงานกรอบหน้าปัจจุบันเป็น point

การส่งออก SVG

TXLSSvgExport ให้โอเวอร์โหลด SaveAsSVG เจ็ดแบบ สำหรับช่วง แผ่นงาน สมุดงาน และหน้า logical ที่เตรียมไว้ ทั้งของ classic และ XLSX พร้อมเอาต์พุตออบเจกต์ที่มีชื่อในกรณีที่รองรับ

UseWorksheetPageSetup, Orientation และ Margin ใช้การตัดสินใจตั้งค่าหน้ากระดาษเดียวกันกับเอาต์พุต PDF และการแสดงตัวอย่าง

TXLSSvgExport.PrintComments (ชนิด TXLSPrintComments) เลือกวิธีส่งออกคอมเมนต์ของเซลล์สำหรับเอาต์พุต SVG แบบแบ่งหน้า; เมื่อตั้งเป็น xpcAtEnd หน้าสุดท้ายของชีตจะต่อท้ายรายการคอมเมนต์ (ที่อยู่เซลล์ ผู้เขียน และข้อความ) ใต้พื้นที่ข้อมูล ส่วน xpcNone จะไม่ใส่คอมเมนต์เลย

ExportPages ส่งเอกสาร SVG สมบูรณ์ทีละไฟล์ผ่าน OnPage รายงานจำนวนหน้าที่ commit แล้วผ่าน ExportedPageCount และหยุดก่อนสร้างหน้าถัดไปเมื่อ callback สั่งยกเลิก; IdPrefix สร้าง namespace ของเอกสารและหน้าแบบ deterministic สำหรับ clip path, filter, pattern และ resource ร่วม

HyperlinkMode (ชนิด TXLSSvgHyperlinkMode) ค่า xshmSafe จะเพิ่มพื้นที่ hit โปร่งใสที่คลิปแล้วต่อจากเนื้อหาที่มองเห็น; scheme ภายนอกที่อนุญาตคือ HTTP, HTTPS, mail, FTP และลิงก์แบบ relative ส่วนเป้าหมายแบบ active, local, UNC และที่มีอักขระควบคุมจะถูกข้าม; LinksInNewWindow เพิ่มการป้องกัน noopener noreferrer และ ScreenTip จะกลายเป็น title ของ SVG

เอาต์พุต PNG, JPEG แบบ incremental และ TIFF หลายหน้า

TXLSPageImageFormat เลือกเอาต์พุต PNG หรือ JPEG และ TXLSPageImageExporter คงเซสชันการแบ่งหน้าไว้หนึ่งเซสชันพร้อมปล่อยบิตแมปที่เสร็จสมบูรณ์แต่ละอันทันที

เซสชันโอเวอร์โหลด BeginExport หกแบบยอมรับช่วง แผ่นงาน และสมุดงาน ทั้งแบบ classic และ XLSX; ExportNext เขียนหนึ่งหน้า และ EndExport ปล่อยเซสชัน
TIFF หลายหน้าExportAllAsTiff เขียนหน้า logical ที่เลือกไปยังสตรีมหรือไฟล์เป็น TIFF แบบ LZW-compressed ไฟล์เดียว โดยคงความคืบหน้า การยกเลิก และ semantics ของปลายทางแบบ atomic ไว้
การตั้งค่าหน้าUseWorksheetPageSetup, Orientation, Margin, DefaultRowHeight, PaperWidthOverride และ PaperHeightOverride
เอาต์พุตแรสเตอร์Scale, ImageFormat และ JpegQuality ส่วน ExportObjectAsPNG เรนเดอร์ออบเจกต์วาดภาพหนึ่งรายการเป็น PNG ที่เป็นเจ้าของ
ช่วงแบบกระชับExportRange เรนเดอร์ช่วง classic หรือ XLSX เป็นแรสเตอร์พอดีหนึ่งภาพ ไม่มีกระดาษ margin header footer print titles หรือตัวแบ่งหน้า
อีเวนต์ผืนผ้าใบBeforeRenderPage ทำงานหลังล้างพื้นหลัง และ AfterRenderPage ทำงานหลังวาดเนื้อหา workbook แต่ก่อน encode; เฟรม PNG, JPEG และ TIFF ใช้เส้นทางอีเวนต์เดียวกัน
สถานะActive, Aborted, TotalPageCount, PageCount และ ExportedPageCount

PDF แบบแท็กและ PDF/A

TXLSPDFExport.TagMode เปิดโครงสร้างอัตโนมัติระดับเอกสาร ตาราง แถว เซลล์หัวตาราง เซลล์ข้อมูล และภาพประกอบความหมาย พร้อม marked-content identifier เฉพาะหน้าอย่างหนาแน่น parent-tree mapping ตรงเป๊ะ span ของเซลล์ที่รวมกัน และการแยก artifact; แถว print titles และแถวหัวตารางกลายเป็น header เซลล์เชิงความหมาย ภาพ XLSX ที่มี AltText ไม่ว่างกลายเป็น Figure element อิสระพร้อม alt-text แบบ Unicode ส่วนภาพที่ไม่มี alt-text คงเป็น decorative artifact

ภาพประกอบความหมายที่มองเห็นแต่ละอินสแตนซ์จะได้ Figure element และ marked-content identifier ของตัวเอง แม้ภาพ payload ที่เท่ากันจะแชร์ XObject เดียวใน PDF; AltTextTitle ไม่ใช้แทน alt-text ที่ขาดอยู่ แผนภูมิยังคงเป็น artifact และการรองรับโครงสร้างแบบเน้นจุดนี้ไม่ได้อ้างความสอดคล้อง PDF/UA ครบถ้วน

TXLSPDFExport.PDFAProfile เลือก PDF/A-1, PDF/A-2 หรือ PDF/A-3 ที่ระดับความสอดคล้อง a หรือ b; การเข้ารหัส, ฟอนต์, ไฟล์แนบ, ความโปร่งใส, ลายเซ็น และข้อมูลเมตาที่เข้ากันไม่ได้จะถูกตรวจสอบก่อนที่จะ commit สตรีมเอาต์พุต

TXLSPDFExport.ExportCommentsAsAnnotations วางข้อความผู้แต่งและคอมเมนต์แบบ Unicode ลงบนสี่เหลี่ยมของเซลล์ต้นทาง ในขณะที่เอาต์พุตคอมเมนต์ท้ายเอกสารแบบดั้งเดิมยังคงกำหนดค่าได้อย่างอิสระ

UsePDFA คือสวิตช์ความเข้ากันได้สำหรับ PDF/A-1b ในขณะที่ UseXRefStream เลือกสตรีม cross-reference ในกรณีที่โปรไฟล์ที่เลือกอนุญาต

เรขาคณิตและการเลือกหน้า

โอเวอร์โหลด CalculatePageCount หกแบบยอมรับช่วง แผ่นงาน หรือสมุดงาน ทั้งแบบ classic และ XLSX โดยไม่ต้องสร้างออบเจกต์ PDF

PaperWidth และ PaperHeight ทับขนาดกระดาษเป็นหน่วย point, LastPage ปิดช่วงเอาต์พุตแบบ one-based, Orientation (ชนิด TXLSPDFOrientation) เลือกเอาต์พุตแนวตั้งหรือแนวนอน, HidePrintObjects (เซตของ TXLSPDFHidePrintObject: xlsPdfHideHeaders, xlsPdfHideFooters) ระงับแถบ header หรือ footer ที่เลือก และ PageLayout (ชนิด TXLSPDFPageLayout) กำหนดการจัดเรียงหน้าเริ่มต้นของ viewer

โหมดหน้าและ open action ของ PDF

TXLSPDFExport.PageMode (ชนิด TXLSPDFPageMode) กำหนดวิธีที่ viewer จัดเรียงแผงต่าง ๆ ตอนเปิดเอกสาร ผ่าน xlsPdfModeDefault, xlsPdfModeUseOutlines, xlsPdfModeUseThumbs, xlsPdfModeFullScreen, xlsPdfModeUseOC และ xlsPdfModeUseAttachments

OpenAction (ชนิด TXLSPDFOpenAction) เลือกพฤติกรรมเริ่มต้นของ viewer ด้วย xlsPdfOpenNone, xlsPdfOpenPage หรือ xlsPdfOpenOutlines สำหรับ xlsPdfOpenPage, OpenActionPage คือหน้าเป้าหมายแบบ one-based (clamp กับจำนวนหน้าจริง) และ OpenActionZoom คือปัจจัยซูมเริ่มต้น โดย 0 หมายถึงคงการซูมหรือ fit เริ่มต้นของ viewer

เรขาคณิตเวกเตอร์แบบปรับได้ที่ใช้งานร่วมกัน

XLSBuildEllipticArcCubics แปลง elliptical arc เป็นเซกเมนต์ Bezier แบบ cubic โดยบังคับ bound ความแบนที่ผู้เรียกเลือกแบบ recursive; การเรนเดอร์ PDF, SVG และบิตแมปใช้เรขาคณิตร่วมกันนี้ อาร์กขนาดใหญ่หรือเยื้องศูนย์มากจึงได้เซกเมนต์มากขึ้นโดยไม่ลงโทษอาร์กง่าย ๆ

XLSDecodeVectorScene ตรวจ header ของ EMF และ WMF การจัดแนวและขนาดเรกคอร์ด ยอดรวมที่ประกาศ ตำแหน่ง EOF ที่แม่นยำ และลิมิตของ resource โดยไม่เรียก playback เมตาไฟล์ของแพลตฟอร์ม; whitelist ฝั่ง native จะ replay stack สถานะ device-context พร้อม save และ restore, การแมป window และ viewport รวมกับ world transform, ตารางออบเจกต์ pen, brush และ extended pen รวมถึง stock objects, สี่เหลี่ยม, ellipse, โซ่เส้น, polygon, polyline และเส้นโค้ง Bézier พร้อมลายเส้นประ, path bracket พร้อมการผ่านเติม ผ่านเส้น และผ่านเติม+เส้นรวมกัน, สี่เหลี่ยมมุมโค้ง, arc, chord, pie และ arc มุมผ่านการแปลง arc เป็น Bézier อย่างแม่นยำ, การเติมและขอบ region จากเรกคอร์ด RGNDATA ที่มีขอบเขต, ข้อความที่มีขอบเขตพร้อมฟอนต์ สี และการจัดแนว และภาพ stretch-DIB ที่จำกัดซึ่ง re-encode เป็น PNG ผ่าน Canvas และ SVG โดยปฏิเสธ escape record และปล่อยการคลิปกับเรกคอร์ด private ให้ bounded fallback เดิม

PDF outline และ page callback

outline ของ PDF อยู่ในคอลเลกชัน Bookmarks (ชนิด TXLSPDFBookmarks): Add และ AddForSheet ต่อรายการท้าย, Delete ลบหนึ่งรายการ และ Count กับ Items ไล่ดูทั้งต้นไม้ แต่ละรายการ TXLSPDFBookmark รองรับรายการพ่อและลูก (Children), โซ่พี่น้อง, ชื่อแบบ Unicode, สี (Color), หน้าเป้าหมาย PageNumber, SheetName ต้นทางสำหรับ bookmark ของแผ่นงาน และธง bold หรือ italic (เซตของ TXLSPDFBookmarkStyle: xlsPdfBookmarkBold, xlsPdfBookmarkItalic) รวมถึงการขยายหรือย่อเก็บรายการย่อย bookmark แผ่นงานอัตโนมัติใช้โมเดลลำดับชั้นเดียวกัน และ AutoSheetBookmarks สลับการสร้างมัน

BeforeNewPage ปรับกรอบหน้าแต่ละหน้าได้ ส่วน BeforeGeneratePage และ AfterGeneratePage วาดพื้นหลังหรือเนื้อหา overlay ผ่าน helper ของหน้าที่เป็น public คือ AppendPageContent, FillPageRectangle, StrokePageRectangle และ DrawPageText

ลายเซ็นและไฟล์แนบ

TXLSPDFSignature กำหนดค่าฟิลด์ลายเซ็นแบบมองเห็นหรือมองไม่เห็น ขณะที่ CertificationPolicy จะสร้างลายเซ็นรับรอง DocMDP แบบเลือกได้โดยอนุญาตไม่แก้ไขเลย กรอกแบบฟอร์มและลงนาม หรือกรอกแบบฟอร์ม ลงนาม และ annotation; PDF/A-1 ไม่อนุญาตฟีเจอร์ PDF 1.5 นี้และจะปฏิเสธก่อน commit เอาต์พุต

TXLSPDFCertificationPolicy ให้ xlsPdfApprovalSignature, xlsPdfCertifyNoChanges, xlsPdfCertifyFormFillingAndSigning และ xlsPdfCertifyFormFillingSigningAndAnnotations สำหรับเลือกนโยบายลายเซ็นอย่างชัดเจน

TXLSPDFSignDigestEvent รับ digest แล้วคืนข้อมูล CMS ที่โฮสต์สร้าง HotXLS จึงไม่จำเป็นต้องมีคีย์ส่วนตัว

TXLSPDFExport.Signature แนบการกำหนดค่าลายเซ็น และโปรไฟล์ PDF/A-3 อาจรวมไฟล์ที่เกี่ยวข้องที่ตรวจสอบแล้วผ่าน AddAttachment ซึ่งเข้าคิว TXLSPDFAttachment ไว้; overload ละเอียดรับชื่อแสดงผลแบบ Unicode MIME type คำอธิบาย เวลาแก้ไข payload และค่า TXLSPDFAttachmentRelationship เป็น Source, Data, Alternative, Supplement หรือ Unspecified ส่วน AttachmentCount รายงานยอดที่เข้าคิวไว้ และ AttachmentDuplicatePolicy (ชนิด TXLSPDFAttachmentDuplicatePolicy) เลือกวิธีจัดการชื่อที่ซ้ำกัน

ImageData, ImageFormat และ ImageFit ของ TXLSPDFSignature (ชนิด TXLSPDFSignatureImageFit: contain, cover หรือ stretch) วาง PNG ลงใน Form ของ normal appearance ก่อน byte range ถูกแช่แข็ง; โหมด contain, cover และ stretch ใช้ image cache ของเอกสารร่วมกัน ส่วนภาพที่ไม่ถูกต้องจะล้มก่อนลงนาม

overload ของ IXLSPDFAttachmentSource ยังคง lazy จนกว่าจะ save เรียกแต่ละ source ครั้งเดียวต่อการ save และ spool อย่างมาก 256 MiB ก่อนออบเจกต์ EmbeddedFile ถูกสร้าง เพื่อว่าความล้มเหลวของ provider จะไม่ทำให้ transaction ของปลายทางเปลี่ยนไป

การประกอบขั้นสุดท้ายเขียนออบเจกต์ตามลำดับลงปลายทางแทนที่จะสร้างสตริงเดียวทั้งเอกสาร: การส่งออกที่ไม่มีลายเซ็นสตรีมตรงไปยังสตรีม forward-only, แต่ละ EmbeddedFile อ้างอิงขนาดไบต์ผ่านออบเจกต์ /Length แบบอ้อมที่เขียนต่อจาก payload และไบต์จาก provider ถูกคัดลอกจาก spool เป็นก้อนขนาดคงที่; การส่งออกที่มีลายเซ็นจะประกอบลง spool เอกสารที่มีขอบเขตซึ่งรับ patch ของ ByteRange และเนื้อหาลายเซ็น SHA-256 แบบ incremental บนสองช่วงที่ครอบคลุม และการคัดลอก forward ครั้งเดียว

เอาต์พุต PDF/A-3 เขียนแต่ละไฟล์ที่เกี่ยวข้องลงทั้ง name tree EmbeddedFiles และ AF array ของ catalog พร้อมชื่อ UF แบบ Unicode, PDF Name ของ MIME ที่ escape แล้ว, AFRelationship, ขนาดไบต์ วันแก้ไขไม่บังคับ และคำอธิบายไม่บังคับ; PDF/A-1 และ PDF/A-2 จะปฏิเสธไฟล์แนบที่เข้าคิวไว้ก่อน commit เอาต์พุต

ข้อมูลเมตาของเอกสาร

DocumentTitle, DocumentAuthor, DocumentSubject, DocumentKeywords และ DocumentFileName เติมข้อมูลใน information และ metadata dictionary ของ PDF

การสำรองฟอนต์

TXLSPDFExport.SetFontFallbackChain, AddFontFallback และ ClearFontFallbackChains กำหนดค่าระดับการสำรองแยกตามตระกูลต้นทางและสไตล์; LoadedFallbackFontCount เปิดเผยจำนวน face ที่แคชไว้ และ FontFallbackSelectionCacheCount คือจำนวนการตัดสินใจ fallback ต่อการเลือกที่แคชไว้ ทั้งสองใช้เพื่อการวินิจฉัย

TXLSPDFExport.FontSize ตั้งขนาดข้อความเริ่มต้นเป็นหน่วย point ค่าเริ่มต้นคือ 9

การเลือกตัวสำรองดูจากความครอบคลุมของกลีฟ และคงการแมป Unicode, supplementary scalar, grapheme cluster, shaping cluster และ face เดี่ยวของ TTC ไว้

OnGetFontDirectories คืนไดเรกทอรีฟอนต์หนึ่งหรือหลายแห่งคั่นด้วยเซมิโคลอนให้ตระกูลและสไตล์ที่ขอ; ไดเรกทอรีที่รับจะค้นหาแบบ recursive หนึ่งครั้ง สร้างดัชนีด้วย metadata ตระกูล/สไตล์ภายใน และแคชไว้สำหรับการวัดและวาดในครั้งถัดไป

นโยบายการฝังฟอนต์

TXLSPDFExport.FontEmbedding (ชนิด TXLSPDFFontEmbedding) เลือกการฝังอัตโนมัติ การ subset ที่จำเป็น โปรแกรมฟอนต์เต็มรูปแบบ หรือเอาต์พุตแบบ map-only ผ่าน xlsPdfFontEmbedAuto, xlsPdfFontEmbedSubset, xlsPdfFontEmbedFull และ xlsPdfFontEmbedNone; การ subset ที่จำเป็นจะล้มแบบ atomic เมื่อสร้าง subset ที่ถูกต้องไม่ได้ face ของ TTC ถูกแปลงเป็นฟอนต์เดี่ยว และ PDF/A ปฏิเสธเอาต์พุตแบบ map-only

OnFontEmbed ยิงหนึ่งครั้งต่อ face Unicode ก่อน metrics, character map การจัดรูปทรง และ glyph identifier ถูก resolve; การตั้ง Handled ยอมรับโหมดต่อฟอนต์ที่ได้กลับมาพร้อมไบต์ตัวแทนแบบไม่บังคับ ส่วนการปล่อยเป็น false จะคงนโยบายของเอกสารและ face เดิมไว้

ฟอนต์ OpenType แบบสแตนด์อโลนที่มี CFF outline ฝังผ่าน FontFile3 พร้อมสตรีม OpenType และ descendant CIDFontType0; โหมดอัตโนมัติและเต็มรูปแบบคงโปรแกรมทั้งหมดไว้ ส่วนการ subset CFF ที่จำเป็นจะล้มแบบ atomic เพราะรักษา subset ที่ถูกต้องไม่ได้

ฟอนต์ที่ฝังซึ่งมีข้อมูล GPOS หรือ kern แบบ legacy จะใช้ glyph advance แบบวางตำแหน่งสำหรับข้อความทั้งแบบง่ายและซับซ้อน การวัด ตัดบรรทัด จัดแนว และตำแหน่งกลีฟที่เขียนออกมาจึงได้ผล kerning เดียวกัน

ความคืบหน้าและการยกเลิก

TXLSPDFExport.OnProgress และ OnProgressEx รายงานช่วงเริ่มต้น, รายหน้า และสิ้นสุด; Cancel ขอการยกเลิก และ Aborted รายงานสถานะสุดท้ายโดยไม่ commit สตรีมบางส่วน

ดูเพิ่มเติม