กระบวนการเรนเดอร์พายป์ไลน์
จากเอกสารสู่ภาพหน้า
ระหว่าง OpenDocumentAsync กับ PNG ที่ส่งถึงเบราว์เซอร์มีสองขั้นตอนที่แตกต่างกัน: การแก้ไขผู้ชม (เอนจินใดโหลดเอกสาร, ตัดสินใจครั้งเดียวต่อการเปิด) และ การประมวลผลหน้า (สิ่งที่เกิดขึ้นกับแต่ละภาพหน้าต่อคำขอแต่ละครั้ง) การเข้าใจทั้งสองขั้นตอนอธิบายว่าทำไมรูปแบบหนึ่งจึงแสดงผลเช่นนั้น — และ DefaultRender ทำหน้าที่จริงๆ อย่างไร
ขั้นตอนที่ 1 — การแก้ไขผู้ชมรูปแบบ
โรงงานทำการแมปส่วนขยายไฟล์ไปยังผู้ชมผ่านแคตาล็อกรูปแบบ โดยมีระดับความสำคัญสามระดับ:
- ผู้ชมแบบกำหนดเองเป็นอันดับแรก. สิ่งใดที่คุณลงทะเบียนด้วย
DoconutOptions.RegisterViewer(extension, factory, defaultConfig?)จะชนะเหนือผู้ชมที่มาพร้อมระบบทั้งหมด. - ผู้ชมกลุ่มที่มาพร้อมระบบ. แคตาล็อกทำการแมปส่วนขยายที่สามารถดูได้แต่ละส่วนไปยังกลุ่มผู้ชม — Word, Excel, PowerPoint, Pdf, Cad, Dgn, Image, Tiff, Psd, Email, Visio, Project, Xps, Epub, Txt, Html, Mht, Dcn — แต่ละตัวมีอะแดปเตอร์เอนจินของตนเอง หากปลั๊กอินที่มีลิขสิทธิ์ให้ผู้ชมสำหรับส่วนขยายเดียวกัน ผู้ชมจากปลั๊กอินจะทดแทนผู้ชมที่มาพร้อมระบบ
AddDoconut()ตรวจสอบสิทธิ์ปลั๊กอินที่ลงทะเบียนเมื่อเริ่มต้น; การสำรองของโรงงานไปยังผู้ชมที่มาพร้อมระบบเป็นกฎการทำงานแบบป้องกัน. - รูปแบบเฉพาะปลั๊กอิน. ส่วนขยายบางอย่างไม่มีผู้ชมที่มาพร้อมระบบเลย — DICOM (
.dcm) มีอยู่เฉพาะผ่านปลั๊กอิน DICOM การเปิดไฟล์ที่ไม่มีความสามารถที่จำเป็นจะทำให้เกิดข้อผิดพลาด:
LicenseException: This document type requires the 'Dicom' plugin license.ส่วนขยายที่ไม่มีผู้ชมใดอ้างอิงจะทำให้เกิดข้อผิดพลาด:
FormatNotSupportedException: Document format '<extension>' is not supported.หลังจากการแก้ไข ค่าการกำหนดค่าจะถูกสรุป: วัตถุการกำหนดค่าที่คุณระบุไว้หากคุณส่งมา, มิฉะนั้นจะใช้ค่าการกำหนดค่าเริ่มต้นของรูปแบบจากแคตาล็อก DocOptions.Password จะถูกคัดลอกเข้าสู่การกำหนดค่าสำหรับเอกสารที่มีการป้องกัน.
ขั้นตอนที่ 1b — โหมดเปลี่ยนเส้นทาง (DefaultRender = false)
การกำหนดค่าตามรูปแบบส่วนใหญ่เปิดเผยแฟล็ก DefaultRender. มันเลือกระหว่างสองเส้นทางที่แตกต่างอย่างพื้นฐาน:
DefaultRender = true— เอกสารแสดงผลโดยตรงแบบเนทีฟ ไปยังภาพหน้าDefaultRender = false— เอกสารจะถูก แปลงเป็น PDF ในหน่วยความจำ ก่อน, เอนจินต้นทางจะถูกปล่อย, และผู้ชม PDF จะเข้าควบคุม PDF ที่สร้างขึ้นฝังข้อความจริง, ดังนั้นการค้นหาข้อความเต็มจะได้ไฮไลท์ที่แม่นยำระดับพิกเซล; กระบวนการบังคับให้AllowSearchและAllowCopyเปิดใช้งานสำหรับ PDF ที่เปลี่ยนเส้นทางเนื่องจากการแปลงไม่ปรากฏต่อผู้ใช้.
XPS และค่าเริ่มต้นของแคตาล็อกสำหรับ MHT ใช้เส้นทางเปลี่ยนเส้นทาง การฉายเป็น PDF สามารถให้การค้นหาเนทีฟสำหรับรูปแบบเช่น HTML และ Microsoft Project หาก PDF ที่ได้มีภาพโดยไม่มีชั้นข้อความ ผู้ชมมาตรฐานจะไม่สามารถค้นหาพิกเซลเหล่านั้นได้.
ใช้โหมดเปลี่ยนเส้นทางเมื่อคุณต้องการการฉาย PDF ที่มีข้อความ — โดยต้องแลกกับการแปลงล่วงหน้าเมื่อเอกสารเปิด.
ขั้นตอนที่ 2 — กระบวนการภาพหน้า
หน้าที่เรนเดอร์จะถูกประมวลผลต่อคำขอผ่านลำดับที่กำหนดไว้:
raw page PNG → watermark → rotate/flip → scale → annotation burn → PNG to the response- Watermark — ถูกนำมาใช้จากสถานะลิขสิทธิ์ (ลิขสิทธิ์หาย, ลิขสิทธิ์ชั่วคราวหรือการสมัครสมาชิกหมดอายุ, โดเมนไม่ถูกต้อง, เวอร์ชันผิด) และจาก
DocOptions.Watermarkสำหรับข้อความกำหนดเองของคุณ แอปที่มีลิขสิทธิ์ถูกต้อง — หรือมีลิขสิทธิ์ชั่วคราวที่ใช้งานอยู่ — โดยไม่มีลายน้ำกำหนดเองจะข้ามขั้นตอนนี้. - Rotate/flip — สถานะต่อหน้าที่ผู้ใช้ตั้งค่าในวิดเจ็ต (90°/180°/270°, พลิกแนวนอน/แนวตั้ง) จะถูกเก็บในเซสชันและนำไปใช้ในการเรนเดอร์ต่อไปของหน้านั้น.
- Scale — รูปย่อและระดับการซูมถูกสร้างโดยการปรับขนาดหน้าที่เรนเดอร์ไปยังขนาดเป้าหมายที่ร้องขอ;
0หมายถึงให้บริการที่ขนาดต้นฉบับ. - Annotation burn — คำอธิบายที่บันทึกไว้จะถูกวาดลงบนบิตแมพเพื่อให้การส่งออกและภาพหน้าจอแสดงผล.
- Encoding — ผลลัพธ์จะถูกเข้ารหัสเป็น PNG โดยใช้สตรีมหน่วยความจำแบบ pool และเขียนโดยตรงไปยังการตอบสนอง HTTP.
ข้อผิดพลาดภายในมิดเดิลแวร์จะถูกส่งกลับเป็น ภาพข้อผิดพลาด PNG (ข้อความสีแดงบนพื้นขาว) แทนหน้าข้อผิดพลาด HTTP เพื่อให้วิดเจ็ตสามารถแสดงในพื้นที่หน้าได้.
การแคชหน้า
BaseConfig.CachePages (ค่าเริ่มต้น true) เก็บภาพหน้าที่เรนเดอร์ไว้ในหน่วยความจำตลอดอายุของเซสชันเอกสาร, ดังนั้นการเยี่ยมชมหน้าซ้ำจะไม่ต้องเรนเดอร์ใหม่ BaseConfig.ImageResolution (25–300 DPI, 0 = ค่าเริ่มต้นของรูปแบบ) เป็นตัวควบคุมคุณภาพ/หน่วยความจำหลัก; ค่าเริ่มต้นของแต่ละรูปแบบถูกบันทึกในหน้าการกำหนดค่าของมัน.
DocOptions.ImageResolution เป็น ล้าสมัย และไม่ได้ควบคุมคุณภาพการเรนเดอร์ หากคุณกำลังย้ายแอปพลิเคชันจากไลบรารีก่อนหน้า ให้ย้ายค่าดังกล่าวไปยังการกำหนดค่ารูปแบบ — ตัวคอมไพเลอร์จะชี้ให้เห็นทุกตำแหน่งที่เรียกใช้.
การเรนเดอร์บนโหนดเดียวเทียบกับหลายโหนด
ทุกอย่างข้างต้นอธิบายการเรนเดอร์บนโหนดเดียวตามความต้องการสำหรับเซสชันที่เปิดเอกสาร การปรับใช้ที่โหนดหนึ่งเรนเดอร์และเผยแพร่ชุดศิลปวัตถุทั้งหมด, และโหนดอื่นๆ ให้บริการหน้าต่างๆ จากที่เก็บข้อมูลร่วมกัน, ใช้เส้นทางการอ่านที่แตกต่าง — ดู การปรับใช้แบบกระจาย.
ที่ไหนควรปรับแต่งอะไร
| คุณต้องการ | ปรับแต่ง |
|---|---|
| หน้าที่คมชัดมากขึ้น | ImageResolution on the format config |
| การค้นหาข้อความที่แม่นยำบน HTML/EPUB/email/MHT/MPP | DefaultRender = false on the format config |
| ใช้หน่วยความจำน้อยลงบนเอกสารขนาดใหญ่ | CachePages = false, close sessions explicitly |
| ตราของคุณบนทุกหน้า | DocOptions.Watermark |
หน้านี้เป็นประโยชน์หรือไม่?