ทำงานกับ Canvas ภายใน XPS

ตัด (clip) และแปลง (transform) Canvas ในไฟล์ XPS โดยใช้ C++ API

 

ในไฟล์ XPS นั้น Canvas คือพื้นที่สี่เหลี่ยมบนหน้าเพจที่สามารถวาดเนื้อหาภาพ เช่น ข้อความ รูปภาพ และรูปทรง โดยทำหน้าที่เป็นตัวบรรจุสำหรับองค์ประกอบเหล่านี้และให้เฟรมเวิร์กสำหรับการจัดระเบียบและการแบ่งชั้น (layering) Canvas สามารถนำกลับมาใช้ใหม่ได้ในส่วนต่างๆ ของเอกสาร หรือแม้แต่ในเอกสารหลายฉบับ ซึ่งช่วยให้จัดโครงสร้างและจัดระเบียบเนื้อหาภายในเอกสาร XPS ได้อย่างยืดหยุ่น คุณสมบัติหลักของ Canvas ในไฟล์ XPS:

  • Canvas สามารถซ้อน (nested) กันภายใน Canvas อื่นๆ ได้ ทำให้เกิดโครงสร้างลำดับชั้นที่ช่วยให้สร้างเลย์เอาต์ (layouts) ที่ซับซ้อนและจัดกลุ่มองค์ประกอบได้
  • Canvas สามารถแปลง (transform) ได้โดยใช้การดำเนินการต่างๆ เช่น การเลื่อน (translation) การหมุน (rotation) และการปรับขนาด (scaling) ซึ่งช่วยให้วางตำแหน่งและปรับขนาดเนื้อหาได้อย่างยืดหยุ่น
  • Canvas สามารถตัด (clip) ให้อยู่ในพื้นที่ที่ระบุได้ ซึ่งจะจำกัดพื้นที่ที่มองเห็นได้ของเนื้อหา สิ่งนี้มีประโยชน์สำหรับการสร้างรูปทรงและเอฟเฟกต์ที่ซับซ้อน
  • Canvas สามารถประกอบด้วยองค์ประกอบภาพที่แตกต่างกันได้ รวมถึงการเรียกใช้ข้อความ (text runs) ย่อหน้า (paragraphs) และกล่องข้อความ (text boxes) นอกจากนี้ยังสามารถประกอบด้วยรูปภาพ รูปทรงเรขาคณิต และ Canvas อื่นๆ

การจัดการ Canvas ในเอกสารเป็นหนึ่งในคุณสมบัติที่ Aspose.Page สำหรับ C++ นำเสนอ โซลูชันนี้ทำงานร่วมกับภาษาคำอธิบายหน้าต่างๆ โดยเฉพาะ XPS

ในการแปลง (transform) Canvas ของไฟล์ XPS ให้ทำตามคู่มือด้านล่าง:

  1. สร้างไฟล์ XPS โดยใช้คลาส XpsDocument
  2. สร้าง Canvas หลักที่ใช้ร่วมกันสำหรับองค์ประกอบหน้าทั้งหมด โดยใช้เมธอด AddCanvas()
  3. สร้างออฟเซตซ้ายและบนใน Canvas หลักโดยใช้เมธอด CreateMatrix()
  4. สร้างรูปทรงเรขาคณิตเส้นทางสี่เหลี่ยม (rectangle path geometry) ด้วยเมธอด CreatePathGeometry()
  5. สร้างการเติม (fill) สำหรับสี่เหลี่ยมโดยใช้คลาส XpsBrush
  6. ในการสร้างสี่เหลี่ยมใน Canvas 2 และเติม ให้ใช้คลาส XpsPath
  7. ในการเลื่อน Canvas 3 เพื่อวางตำแหน่งสี่เหลี่ยมใหม่ด้านล่างสี่เหลี่ยมก่อนหน้า ให้ใช้เมธอด CreateMatrix()
  8. ในการเลื่อน Canvas นี้ไปทางด้านขวาของหน้า ให้ใช้เมธอด Translate()
  9. ในการปรับขนาด (scale) Canvas 4 ให้เรียกเมธอด Scale()
  10. ในการหมุน Canvas 5 รอบจุดหนึ่ง 45 องศา เมธอด RotateAround() จะช่วยได้
  11. บันทึกเอกสาร XPS ที่เปลี่ยนแปลงโดยใช้เมธอด XpsDocument.Save()
การแปลง Canvas (canvas transformation)
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีตัด Canvas ของไฟล์ XPS ภายในโซลูชัน API ของ Aspose.Page สำหรับ C++

ในการตัด (clip) Canvas ของไฟล์ XPS ให้ทำตามคู่มือด้านล่าง:

  1. สร้างหรือเปิดไฟล์ XPS โดยใช้คลาส XpsDocument
  2. สร้าง Canvas หลักที่ใช้ร่วมกันสำหรับองค์ประกอบหน้าทั้งหมด โดยใช้เมธอด AddCanvas()
  3. สร้างออฟเซตซ้ายและบนใน Canvas หลักโดยใช้เมธอด CreateMatrix()
  4. สร้างรูปทรงเรขาคณิตเส้นทางสี่เหลี่ยมด้วยเมธอด CreatePathGeometry()
  5. สร้างการเติมสำหรับสี่เหลี่ยมโดยใช้คลาส XpsBrush
  6. ในการเพิ่ม Canvas อื่นพร้อม Clip ไปยัง Canvas หลัก ให้เรียกเมธอด AddCanvas() อีกครั้ง
  7. สร้างรูปทรงเรขาคณิตวงกลมสำหรับ Clip โดยใช้คลาส XpsPathGeometry
  8. ในการสร้างสี่เหลี่ยมใน Canvas นี้และเติม ให้ใช้คลาส XpsPath
  9. เพิ่ม Canvas อื่นด้วยเมธอด AddCanvas() จากนั้นสร้างสี่เหลี่ยมใน Canvas นี้และลากเส้น (stroke) ด้วยคลาส XpsPathGeometry
  10. บันทึกเอกสาร XPS ที่เปลี่ยนแปลงโดยใช้เมธอด XpsDocument.Save()
การตัด Canvas (canvas clipping)

XPS XPS รูปแบบไฟล์คืออะไร

XPS (XML Paper Specification) เป็นรูปแบบทางเลือกของ Microsoft ต่อ PDF พื้นฐานบน XML/HTML รักษาเลย์เอาต์ข้ามแพลตฟอร์มและไม่ขึ้นกับระบบปฏิบัติการ