กระบวนการเรนเดอร์
จากเอกสารสู่ภาพหน้า
ระหว่าง OpenDocumentAsync กับ PNG ที่ส่งถึงเบราว์เซอร์มีสองขั้นตอนที่แตกต่างกัน: การแก้ไขผู้ดู (เครื่องยนต์ใดที่โหลดเอกสาร ซึ่งกำหนดครั้งเดียวต่อการเปิด) และ การประมวลผลหน้า (สิ่งที่เกิดขึ้นกับภาพแต่ละหน้าตามคำขอแต่ละครั้งไปยัง DocImage.axd). การเข้าใจทั้งสองขั้นตอนอธิบายว่าทำไมรูปแบบหนึ่งจึงแสดงผลแบบนั้น — และ 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 — แต่ละตระกูลมีอะแดปเตอร์เครื่องยนต์ของตนเอง. หากปลั๊กอินที่มีลิขสิทธิ์ให้ผู้ดูสำหรับส่วนขยายเดียวกัน ผู้ดูจากปลั๊กอินจะทดแทนผู้ดูที่มาพร้อมระบบ.
- รูปแบบเฉพาะปลั๊กอิน. บางส่วนขยายไม่มีผู้ดูที่มาพร้อมระบบเลย — DICOM (
.dcm,.ima) มีอยู่เฉพาะผ่านปลั๊กอิน DICOM. การเปิดไฟล์ที่ไม่มีความสามารถที่จำเป็นจะทำให้เกิดข้อผิดพลาด:
LicenseException: This document type requires the 'Dicom' plugin license.ส่วนขยายที่ไม่มีผู้ดูใด ๆ จะทำให้เกิด FormatNotSupportedException.
หลังจากการแก้ไข ค่าการกำหนดค่าจะถูกสรุป: วัตถุการกำหนดค่าที่คุณส่งมาโดยตรง หากมี, หรือค่าการกำหนดค่าตั้งต้นของรูปแบบจากแคตาล็อก. DocOptions.Password จะถูกคัดลอกเข้าไปในค่าการกำหนดสําหรับเอกสารที่มีการป้องกัน.
ขั้นตอนที่ 1b — โหมดเปลี่ยนเส้นทาง (DefaultRender = false)
การกำหนดค่าตามรูปแบบส่วนใหญ่จะเปิดเผยแฟล็ก DefaultRender. แฟล็กนี้เลือกระหว่างสองเส้นทางที่แตกต่างกันอย่างพื้นฐาน:
DefaultRender = true— เอกสารถูกเรนเดอร์โดยตรงเป็นภาพหน้า.DefaultRender = false— เอกสารถูก แปลงเป็น PDF ในหน่วยความจำ ก่อน, เครื่องยนต์ต้นทางจะถูกปล่อย, และผู้ดู PDF จะเข้ามาดำเนินการต่อ. PDF ที่สร้างขึ้นจะมีข้อความจริง, ทำให้การค้นหาเต็มข้อความได้ไฮไลท์ที่แม่นยำ; กระบวนการจะเปิดAllowSearchและAllowCopyสำหรับ PDF ที่ถูกเปลี่ยนเส้นทาง, เนื่องจากการแปลงนี้ไม่ปรากฏต่อผู้ใช้.
โดยค่าเริ่มต้น XPS และ MHT จะใช้เส้นทางเปลี่ยนเส้นทาง. การฉายเป็น PDF ให้การค้นหาแบบเนทีฟกับรูปแบบเช่น HTML และ Microsoft Project. หาก PDF ที่ได้มีภาพโดยไม่มีชั้นข้อความ, พิกเซลเหล่านั้นจะไม่สามารถค้นหาได้.
ใช้โหมดเปลี่ยนเส้นทางเมื่อคุณต้องการการฉายที่สามารถค้นหาและมีข้อความ — แม้ว่าจะต้องเสียค่าแปลงล่วงหน้าเมื่อเปิดเอกสาร.
ขั้นตอนที่ 2 — กระบวนการภาพหน้า
แต่ละคำขอหน้าไปยัง DocImage.axd จะดำเนินตามลำดับคงที่:
raw page PNG → watermark → rotate/flip → scale → annotation burn → PNG to the response- Watermark — ถูกนำมาใช้จากสถานะลิขสิทธิ์ (ไม่มีลิขสิทธิ์, ลิขสิทธิ์ชั่วคราวหรือสมัครสมาชิกที่หมดอายุ, โดเมนไม่ถูกต้อง, การสร้างนอกเวอร์ชันของลิขสิทธิ์) และจาก
DocOptions.Watermarkสำหรับข้อความของคุณเอง. เว็บไซต์ที่มีลิขสิทธิ์แต่ไม่มีลายน้ำกำหนดเองจะข้ามขั้นตอนนี้. - Rotate/flip — สถานะต่อหน้า ที่ผู้ใช้ตั้งค่าในวิดเจ็ต (90°/180°/270°, การพลิกแนวนอนและแนวตั้ง) จะถูกเก็บในเซสชันและนำไปใช้กับการเรนเดอร์หน้าต่อไปทุกครั้ง.
- Scale — ภาพย่อและระดับการซูมถูกสร้างโดยการสเกลหน้าที่เรนเดอร์ไปยังขนาดที่ร้องขอ.
- Annotation burn — คำอธิบายที่บันทึกไว้จะถูกวาดลงบนบิตแมพ, ดังนั้นการส่งออกและภาพหน้าจะเห็นคำอธิบายเหล่านั้น.
- Encoding — ผลลัพธ์จะถูกเข้ารหัสเป็น PNG และเขียนโดยตรงไปยังการตอบกลับ.
ข้อผิดพลาดภายในตัวจัดการจะถูกส่งกลับเป็น ภาพข้อผิดพลาด PNG (ข้อความสีแดงบนพื้นขาว) พร้อมสถานะ 200, แทนที่จะเป็นหน้า HTTP error, เพื่อให้วิดเจ็ตสามารถแสดงในพื้นที่หน้าได้.
การแคชหน้า
BaseConfig.CachePages (ค่าเริ่มต้น true) จะเก็บภาพหน้าที่เรนเดอร์ไว้ในหน่วยความจำตลอดอายุของเซสชันเอกสาร, ดังนั้นการเยี่ยมชมหน้าซ้ำจะไม่ต้องเรนเดอร์ใหม่. BaseConfig.ImageResolution (25–300 DPI, 0 = ค่าเริ่มต้นของรูปแบบ) เป็นตัวควบคุมคุณภาพและหน่วยความจำหลัก; ค่าเริ่มต้นของแต่ละรูปแบบถูกระบุใน การตั้งค่ารูปแบบ.
บนโหนดเดียว, เซสชันและหน้าที่แคชอยู่ในหน่วยความจำของกระบวนการ worker. การรีไซเคิลพูลแอปพลิเคชัน — ตามกำหนด, หรือโดยการแก้ไข Web.config หรือการหมดเวลาไม่ทำงาน — จะทำให้เซสชันเอกสารที่เปิดทั้งหมดหายไป, และวิดเจ็ตจะแสดงข้อความ Document session not found. Please re-open document. ในโหมดกระจาย (ดู เซสชันและความปลอดภัย), เซสชันจะถูกสร้างใหม่จากที่เก็บร่วมกันแทน.
ที่ไหนควรปรับแต่งอะไร
| คุณต้องการ | ปรับ |
|---|---|
| หน้าที่คมชัดขึ้น | ImageResolution on the format config |
| การค้นหาข้อความที่แม่นยำบน HTML, EPUB, email, MHT หรือ MPP | DefaultRender = false on the format config |
| ใช้หน่วยความจำน้อยลงบนเอกสารขนาดใหญ่ | CachePages = false, and close sessions explicitly |
| ตราของคุณบนทุกหน้า | DocOptions.Watermark |
หน้านี้เป็นประโยชน์หรือไม่?