กระบวนการเรนเดอร์

จากเอกสารสู่ภาพหน้า

ระหว่าง OpenDocumentAsync กับ PNG ที่ส่งถึงเบราว์เซอร์มีสองขั้นตอนที่แตกต่างกัน: การระบุผู้ชม (เครื่องยนต์ใดโหลดเอกสาร ซึ่งกำหนดหนึ่งครั้งต่อการเปิด) และ การประมวลผลหน้า (สิ่งที่เกิดขึ้นกับภาพแต่ละหน้าต่อแต่ละคำขอ) การเข้าใจทั้งสองช่วยอธิบายว่าทำไมรูปแบบหนึ่งจึงแสดงผลเช่นนั้น — และสิ่งที่ DefaultRender จริงๆ แล้วสลับ.

ขั้นที่ 1 — การระบุผู้ชมรูปแบบ

โรงงานจะจับคู่ส่วนขยายไฟล์กับผู้ชมผ่านแคตาล็อกรูปแบบ โดยมีระดับความสำคัญสามระดับ:

  1. ผู้ชมแบบกำหนดเองเป็นอันดับแรก. สิ่งใดที่คุณลงทะเบียนกับ DoconutOptions.RegisterViewer(extension, factory, defaultConfig?) จะชนะเหนือทุกตัวที่มาพร้อม.
  2. ผู้ชมกลุ่มที่มาพร้อม. แคตาล็อกจับคู่ส่วนขยายที่สามารถดูได้แต่ละอันกับกลุ่มผู้ชม — Word, Excel, PowerPoint, Pdf, Cad, Dgn, Image, Tiff, Psd, Email, Visio, Project, Xps, Epub, Txt, Html, Mht, Dcn — โดยแต่ละอันมีอะแดปเตอร์เครื่องยนต์ของตนเอง. หากปลั๊กอินที่มีใบอนุญาตให้ผู้ชมสำหรับส่วนขยายเดียวกัน ผู้ชมจากปลั๊กอินจะทดแทนผู้ชมที่มาพร้อม. AddDoconut() ตรวจสอบสิทธิ์ปลั๊กอินที่ลงทะเบียนเมื่อเริ่มต้น; การสำรองของโรงงานไปยังผู้ชมที่มาพร้อมเป็นกฎการทำงานเชิงป้องกัน.
  3. รูปแบบเฉพาะปลั๊กอิน. บางส่วนขยายไม่มีผู้ชมที่มาพร้อมเลย — DICOM (.dcm) มีอยู่เฉพาะผ่านปลั๊กอิน DICOM. การเปิดไฟล์ที่ไม่มีความสามารถที่จำเป็นจะทำให้เกิดข้อผิดพลาด:
text
LicenseException: This document type requires the 'Dicom' plugin license.

ส่วนขยายที่ไม่มีผู้ชมอ้างอิงจะทำให้เกิดข้อผิดพลาด:

text
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 — กระบวนการภาพหน้า

หน้าที่แสดงผลจะถูกประมวลผลต่อคำขอผ่านลำดับที่กำหนดไว้:

text
raw page PNG → watermark → rotate/flip → scale → annotation burn → PNG to the response
  • ลายน้ำ — ใช้จากสถานะใบอนุญาต (ไม่มีใบอนุญาต, ใบอนุญาตชั่วคราวหรือสมัครสมาชิกหมดอายุ, โดเมนไม่ถูกต้อง, เวอร์ชันผิด) และจาก DocOptions.Watermark สำหรับข้อความกำหนดเองของคุณ. แอปที่มีใบอนุญาตถูกต้อง — หรือใบอนุญาต Temporary ที่ใช้งานอยู่ — ที่ไม่มีลายน้ำกำหนดเองจะข้ามขั้นตอนนี้.
  • หมุน/พลิก — สถานะต่อหน้า ที่ผู้ใช้ตั้งค่าในวิดเจ็ต (90°/180°/270°, พลิกแนวนอน/แนวตั้ง) จะถูกเก็บในเซสชันและนำไปใช้ในการแสดงผลต่อไปของหน้านั้น.
  • ปรับขนาด — ภาพย่อและระดับการซูมถูกสร้างโดยการปรับขนาดหน้าที่แสดงผลให้ตรงกับขนาดเป้าหมายที่ร้องขอ; 0 หมายถึงให้บริการที่ขนาดต้นฉบับ.
  • ฝังคำอธิบาย — คำอธิบายที่บันทึกไว้จะถูกวาดลงบนบิตแมพเพื่อให้การส่งออกและภาพหน้าจอแสดงผลได้.
  • การเข้ารหัส — ผลลัพธ์จะถูกเข้ารหัสเป็น PNG โดยใช้สตรีมหน่วยความจำที่รวมกันและเขียนโดยตรงไปยังการตอบสนอง HTTP.

ข้อผิดพลาดภายในมิดเดิลแวร์จะถูกส่งกลับเป็น ภาพข้อผิดพลาด PNG (ข้อความสีแดงบนพื้นขาว) แทนหน้าข้อผิดพลาด HTTP, เพื่อให้วิดเจ็ตสามารถแสดงในพื้นที่หน้าได้.

การแคชหน้า

BaseConfig.CachePages (ค่าเริ่มต้น true) เก็บภาพหน้าที่แสดงผลในหน่วยความจำตลอดอายุของเซสชันเอกสาร, ดังนั้นการเยี่ยมชมหน้าซ้ำจะไม่ต้องเรนเดอร์ใหม่. BaseConfig.ImageResolution (25–300 DPI, 0 = ค่าเริ่มต้นของรูปแบบ) เป็นการปรับคุณภาพ/หน่วยความจำหลัก; ค่าเริ่มต้นของแต่ละรูปแบบถูกบันทึกในหน้าการกำหนดค่าของมัน.

ที่ที่ควรปรับอะไร

คุณต้องการปรับ
หน้าที่คมชัดขึ้นImageResolution ในการกำหนดค่ารูปแบบ
การค้นหาข้อความที่แม่นยำบน HTML/EPUB/email/MHT/MPPDefaultRender = false ในการกำหนดค่ารูปแบบ
ใช้หน่วยความจำน้อยลงบนเอกสารขนาดใหญ่CachePages = false, ปิดเซสชันอย่างชัดเจน
ตราของคุณเองบนทุกหน้าDocOptions.Watermark

หน้านี้เป็นประโยชน์หรือไม่?