THotPDF.BuildLoadedPageSVG Method
สร้างเอกสาร SVG แบบสแตนด์อโลนจากหน้า PDF ที่โหลดแล้วตามที่เลือก
การประกาศ
function BuildLoadedPageSVG(PageIndex: Integer): AnsiString; overload;
function BuildLoadedPageSVG(PageIndex: Integer;
EmbedFonts: boolean): AnsiString; overload;
ยูนิต
HPDFDoc
พารามิเตอร์
| Name | Purpose |
|---|---|
PageIndex | ดัชนีแบบเริ่มจากศูนย์ของหน้าที่โหลดไว้ |
EmbedFonts | True เขียน glyph ของฟอนต์ที่ฝังไว้ลงใน SVG เป็น outline หน้าจึงเหมือนเดิมแม้เครื่องที่เปิดจะไม่มีฟอนต์เหล่านั้น False และ overload ที่ไม่มีพารามิเตอร์นี้ ปล่อยให้ข้อความใช้ฟอนต์ที่ viewer ติดตั้งไว้ |
ค่าที่ส่งกลับ
ส่งคืนเอกสาร SVG ฉบับเต็ม หรือสตริงว่างเมื่อหน้านั้นส่งออกไม่ได้
การใช้งาน
- path, ข้อความที่ถอดรหัสแล้ว, image XObject, inline image และ Form XObject แบบเรียกซ้ำ ถูก emit ผ่านอินเทอร์พรีเตอร์ content-device ที่ใช้ร่วมกัน; Form XObject เริ่มต้นด้วยสีที่มีผลอยู่ ณ จุดที่มันถูกวาด
- canvas คลุมส่วนที่มองเห็นของหน้า คือ
/CropBoxที่ถูก clip ด้วย/MediaBox(ดูGetLoadedPageVisibleBox) หลังหมุนตาม/Rotateมุมล่างซ้ายของ box map ไปที่มุมของ canvas แม้ box จะไม่ได้เริ่มที่ origin - ข้อความเขียนเป็น UTF-8 มีพิกัด
xต่อหนึ่งตัวอักษรพร้อมxml:space="preserve"ช่องว่างจึงถูกเก็บไว้ glyph ligature ถูกคลี่ออกเป็นตัวอักษรทั้งหมดที่มันแทน ส่วน code ที่ XML 1.0 ห้ามจะกลายเป็น U+FFFD - การวางข้อความเดินตาม text matrix เต็มรูปแบบ รวม character spacing, word spacing, horizontal scaling, rise และการปรับของ
TJrender mode 0 ถึง 2 ระบาย ลงเส้น หรือทำทั้งสองอย่าง mode 3 ไม่วาดอะไรเลย และ glyph ของข้อความที่แสดงใน mode 4 ถึง 7 ยังกลายเป็น clipping path ตั้งแต่ท้าย text object (ET) จนถึงท้าย graphics state ด้วย - โดย default ข้อความใช้ฟอนต์ที่เครื่องติดตั้งไว้: ตระกูลมาตรฐาน 14 ตระกูลกับคู่ TrueType ของมัน map ไปเป็น Helvetica หรือ Arial, Times New Roman และ Courier New ส่วนฟอนต์อื่นใช้ชื่อตาม family โดยเติมช่องว่างระหว่างคำด้วย (
MyriadPro, Myriad Pro) แล้วตามด้วย generic family ที่เอามาจาก flag ของ font descriptor หรือจากชื่อฟอนต์ ข้อความหนาและตัวเอียงได้font-weightกับfont-styleจากส่วนบอกสไตล์ในชื่อฟอนต์ (Arial-BoldMT,Helvetica-Oblique,MinionPro-It) และจาก weight, flag และมุม italic ของ font descriptor - เมื่อตั้ง
EmbedFontsเป็นTrueข้อความที่ใช้ฟอนต์ซึ่งฝังโปรแกรม TrueType หรือ CFF ไว้ใน PDF จะถูกวาดจาก outline glyph ของโปรแกรมนั้น glyph แต่ละตัวถูกนิยามครั้งเดียวเป็น<path>ใน<defs>แล้ววางด้วย<use>ทุกจุดที่มันปรากฏ อักขระซ้ำจึงไม่ต้องพ่น outline ซ้ำ; fill กับ stroke mode ความกว้างเส้น และการ clip ข้อความเดินตามข้อความเหมือนอย่างที่ทำกับ SVG text ตัวข้อความเองยังถูกเก็บเป็น SVG text โปร่งใสซ้อนอยู่บน outline จึงยังเลือก ค้นหา และอ่านด้วย assistive technology ได้ - ฟอนต์ที่ไม่ได้ฝัง, โปรแกรมฟอนต์ Type 1 (
/FontFile), การเขียน CJK แนวตั้ง และช่วงข้อความที่มี code ที่ไม่มี glyph รองรับในโปรแกรมที่ฝังไว้ จะยังคงเป็น SVG text แม้ตั้งEmbedFontsไว้ outline ทำให้ไฟล์ใหญ่ขึ้น มักสองถึงสามเท่าสำหรับหน้าที่ข้อความหนาแน่น - สี fill กับ stroke ที่ตั้งใน color space ใดก็ได้ (
DeviceGray,DeviceRGB,DeviceCMYK, ICCBased, calibrated, Lab, Indexed, Separation และ DeviceN) ถูกแปลงเป็น sRGB อย่างเดียวกับที่ page renderer แปลง - path ที่ระบายด้วย tiling pattern จะระบายด้วย
<pattern>ของ SVG ที่ทำ pattern cell ซ้ำทุกXStepกับYStepโดย clip ด้วย/BBoxของมัน; pattern ไร้สีจะระบาย cell ด้วยสีที่ให้มาพร้อมกับ pattern path ที่ระบายด้วย shading pattern จะได้เกรเดียนต์หรือ mesh ของ shading นั้น โดย clip ตาม path เมทริกซ์ของ pattern ถูกใช้ใน space ของหน้า หรือของ form ที่ใช้ pattern นั้น stroke ที่ใช้ pattern จะใช้สีของ pattern ส่วน pattern แบบมีสีใช้สีดำ - shading Type 2 แนวแกนและ Type 3 แนวรัศมี ใช้เกรเดียนต์ SVG พร้อมจุดหยุดที่ sample แบบจำกัดขอบเขต ปลายที่
Extendไม่ได้ต่อออกไปจะยังไม่ถูกระบาย เช่นเดียวกับ PDF - mesh shading Type 4 ถึง Type 7 ใช้ data URI PNG โปร่งใสแบบจำกัดขอบเขต ไม่เกิน 16 ล้านพิกเซล
- inline image ถูกถอดรหัสผ่านเส้นทางรูปภาพของเอกสารที่โหลดเดียวกัน และฝังเป็น data URI แบบ PNG
- image mask รวมถึงแบบ inline กลายเป็นภาพ PNG ในสี fill ปัจจุบัน ทึบเฉพาะจุดที่มีการระบาย
/SMaskกับ stencil/Maskให้ภาพมี alpha channel ที่ความละเอียดของ mask เมื่อ mask ละเอียดกว่าภาพ ส่วน array/Maskแบบ color-key ทำให้พิกเซลที่ตรงเงื่อนไขกลายเป็นโปร่งใสสำหรับภาพ Flate, LZW และภาพที่ไม่ผ่าน filter - clip path
WกับW*กลายเป็น element <clipPath> ของ SVG ซึ่งจบลงเมื่อ graphics state ที่ตั้งมันจบลง Form XObject ถูก clip ด้วย/BBoxของมัน และ shading แนวแกนกับแนวรัศมีก็ถูก clip ด้วย/BBoxเช่นกัน - ข้อความในฟอนต์ Type 3 ถูกวาดด้วย glyph procedure ของฟอนต์ วางผ่าน
/FontMatrixของมัน แทนที่จะเป็น SVG text; glyph ที่ขึ้นต้นด้วยd1ระบายด้วยสี fill ปัจจุบัน glyph Type 3 ไม่เพิ่มเข้าไปใน clipping path ของ render mode 4 ถึง 7 - สี
Backgroundของ shading เติมพื้นที่ของ shading pattern ก่อนตัว shading จึงปรากฏตรงที่ shading ไม่ได้ระบาย; เหมือนใน PDF คือจะถูกเมินเมื่อ shading ถูกวาดด้วยsh - shading แบบ function Type 1 ถูก sample ทั่ว
Domainของมันลงใน data URI แบบ PNG ที่ไม่เกิน 256 คูณ 256 sample แล้ววางผ่านMatrixของ shading; viewer จะทำให้เรียบเวลาย่อขยาย