การทำงานกับ Enums
การทำงานกับ Enums
Aspose.PDF FOSS สำหรับ .NET ใช้ enum ที่กำหนดประเภทอย่างเข้มงวดทั่วทั้ง API เพื่อกำหนดพฤติกรรมของเอกสาร การแสดงผลหน้า และรูปแบบการแปลง แทนการใช้สตริงหรือจำนวนเต็มแบบมาจากความมหัศจรรย์ ส่วนใหญ่ของพื้นผิวการกำหนดค่า — ตั้งแต่วิธีที่โปรแกรมอ่าน PDF เปิดไฟล์จนถึงรูปแบบที่ไฟล์ Document หน้านี้แนะนำประเภท enum ที่คุณจะพบบ่อยที่สุดเมื่อทำงานกับไลบรารี นี้เป็นการแนะนำที่คัดสรร ไม่ใช่แคตาล็อกที่ครอบคลุมทั้งหมด; สำหรับรายการเต็มของประเภท enum และค่าของสมาชิกทั้งหมด โปรดดูที่ API Reference.
การแสดงผลและการจัดวางหน้า
PageMode และ PageLayout เป็นคุณสมบัติบน Document ที่ควบคุมวิธีที่โปรแกรมดู PDF แสดงเอกสารเมื่อเปิดครั้งแรก — ไม่ว่าจะเป็นการแสดงโครงร่าง, รูปย่อ, หรือการจัดวางคอลัมน์เฉพาะ.
using var doc = Document.Open("input.pdf");
// Show the outline (bookmarks) panel when the document opens
doc.PageMode = PageMode.UseOutlines;
// Display pages in two columns, first page on the left
doc.PageLayout = PageLayout.TwoColumnLeft;
doc.Save("output.pdf");โมเดลสีของหน้า
ColorType อธิบายโมเดลสีของหน้า — RGB, CMYK, grayscale และอื่น ๆ มันปรากฏบนทั้ง Page และ Color, ทำให้คุณสามารถแยกตรรกะตามวิธีที่เนื้อหาในหน้าถูกเรนเดอร์จริง ๆ.
using var doc = Document.Open("input.pdf");
var page = doc.Pages[1];
if (page.ColorType == ColorType.Grayscale)
{
// Apply grayscale-specific handling, e.g. skip color-profile conversion
}Alignment
หลายคลาสเปิดเผย HorizontalAlignment และ VerticalAlignment เพื่อกำหนดตำแหน่งเนื้อหาบนหน้า, ในขณะที่คลาส annotation เพิ่ม TextAlignment และ Justification สำหรับการจัดแนวข้อความภายในกล่อง. ตัวอย่างเช่น Table เปิดเผยแกนการจัดแนวทั้งสองโดยตรง.
var table = new Table();
table.HorizontalAlignment = HorizontalAlignment.Center;
table.VerticalAlignment = VerticalAlignment.Center;
page.Paragraphs.Add(table);FreeTextAnnotation (และประเภทฐาน Annotation) ยังเปิดเผย Justification และ TextAlignment สำหรับข้อความภายใน annotation:
if (page.Annotations[1] is FreeTextAnnotation freeText)
{
freeText.Justification = Justification.Center;
freeText.Alignment = TextAlignment.Right;
}รูปแบบการโหลดและบันทึก
LoadFormat ระบุรูปแบบแหล่งที่มาของ subclass LoadOptions (เช่น HtmlLoadOptions.LoadFormat จะเป็น LoadFormat.HTML เสมอ), ในขณะที่ SaveFormat เลือกรูปแบบผลลัพธ์เมื่อเรียก Document.Save.
var loadOptions = new HtmlLoadOptions();
// loadOptions.LoadFormat == LoadFormat.HTML
using var doc = new Document("input.html", loadOptions);
doc.Save("output.html", SaveFormat.Html);การหมุนหน้า
Rotation อธิบายมุมการหมุนของหน้าและเปิดเผยผ่าน Page.Rotate.
var page = doc.Pages[1];
page.Rotate = Rotation.on90;เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด
- ควรใช้การ overload ของ enum แทนการ overload ที่ใช้ string หรือ int เมื่อมีทั้งสอง — เนื่องจากสามารถตรวจจับค่าที่ไม่ถูกต้องในช่วงคอมไพล์ได้.
- จับคู่
SaveFormatกับส่วนขยายไฟล์ที่คุณส่งให้Document.Save; ความไม่ตรงกันจะทำให้ไฟล์มีเนื้อหาที่ทำให้เข้าใจผิดหรือส่วนขยายที่ใช้ไม่ได้. - ใช้คลาสย่อย
LoadOptionsที่สอดคล้องกับรูปแบบต้นฉบับของคุณ (เช่นHtmlLoadOptionsสำหรับ HTML) แทนการพึ่งพาการตรวจจับรูปแบบอัตโนมัติอย่างเดียว. - กำหนดทั้ง
HorizontalAlignmentและVerticalAlignmentพร้อมกันเมื่อจัดตำแหน่งตารางหรือย่อหน้า — การปล่อยให้หนึ่งค่าอยู่ในค่าเริ่มต้นอาจทำให้ตำแหน่งแสดงผลไม่คาดคิด. - ถือว่า
ColorTypeเป็นการอธิบาย ไม่ใช่การกำหนดค่า: มันรายงานว่าภาพสีของหน้าได้รับการจำลองอย่างไรในขณะนี้ ไม่ใช่การตั้งค่าที่คุณสลับเพื่อแปลงพื้นที่สี.
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | วิธีแก้ไข |
|---|---|---|
| ไฟล์ที่บันทึกมีเนื้อหาไม่ตรงกับนามสกุลของไฟล์ | ค่า SaveFormat ที่ส่งไปยัง Document.Save ไม่ถูกต้อง | ส่งค่า SaveFormat ที่ตรงกับนามสกุลไฟล์เป้าหมาย |
| โหลด HTML/XML/etc. เนื้อหาแสดงผลไม่ถูกต้อง | ใช้ LoadOptions ทั่วไปแทนคลาสย่อยที่เฉพาะเจาะจงตามรูปแบบ | ใช้คลาสย่อยที่ตรงกับรูปแบบต้นทาง เช่น HtmlLoadOptions |
| ตารางหรือหมายเหตุแสดงตำแหน่งไม่ตรงบนหน้า | HorizontalAlignment/VerticalAlignment ถูกทิ้งไว้เป็นค่าเริ่มต้น | ตั้งค่าคุณสมบัติทั้งสองอย่างชัดเจนก่อนเพิ่มอ็อบเจ็กต์ไปยัง Paragraphs |
| PDF เปิดด้วยพฤติกรรมของโปรแกรมดูที่ไม่คาดคิด (ไม่มีแผงโครงร่าง, การจัดคอลัมน์ผิดพลาด) | Document.PageMode/Document.PageLayout ไม่เคยถูกตั้งค่า | ตั้งค่าทั้งสองคุณสมบัติก่อนเรียก Document.Save |
FAQ
ความแตกต่างระหว่าง PageMode กับ PageLayout คืออะไร?
PageMode ควบคุมสถานะ UI ของผู้ชมเมื่อเปิด (เช่น ว่าหน้าร่างโครงร่างหรือแถบภาพย่อแสดงหรือไม่) ในขณะที่ PageLayout ควบคุมการจัดเรียงหน้าต่างๆ (หน้าเดียว, หนึ่งคอลัมน์, สองคอลัมน์ เป็นต้น).
ฉันจะทราบได้อย่างไรว่าค่าของ SaveFormat ใดควรใช้?
เลือกค่าของ SaveFormat ที่ตรงกับประเภทไฟล์ผลลัพธ์ที่คุณต้องการ — ตัวอย่างเช่น SaveFormat.Html สำหรับผลลัพธ์ HTML หรือ SaveFormat.Pdf เพื่อบันทึกใหม่เป็น PDF.
ฉันสามารถตั้งค่า HorizontalAlignment และ VerticalAlignment ทั้งสองบนวัตถุเดียวกันได้หรือไม่?
ได้เลย. คลาสเช่น Table เปิดเผยคุณสมบัติทั้งสองอย่างแยกกัน, ดังนั้นคุณจึงสามารถผสานรวมพวกมันเพื่อกำหนดตำแหน่งเนื้อหาบนแกนใดก็ได้.
ColorType ให้ฉันแปลงพื้นที่สีของหน้าได้หรือไม่?
ไม่. ColorType รายงานโมเดลสีที่เชื่อมโยงกับหน้า หรือค่าสีในขณะนั้น; มันไม่ได้ทำการแปลง.
ฉันจะหา enum ทั้งหมดและค่าทั้งหมดได้ที่ไหน?
หน้านี้ครอบคลุม enums ที่ใช้บ่อยที่สุด สำหรับชุดทั้งหมด รวมถึงค่าของสมาชิกทุกค่า ดูที่ API Reference.
API Reference สรุป
| Enum | คำอธิบาย |
|---|---|
PageMode | วิธีที่โปรแกรมดู PDF แสดงเอกสารเมื่อเปิด (โครงร่าง, รูปย่อ, เต็มหน้าจอ ฯลฯ) |
PageLayout | การจัดวางหน้าเมื่อแสดงเอกสาร (หน้าเดียว, คอลัมน์, ฯลฯ) |
ColorType | โมเดลสีของหน้า หรือค่าของสี (RGB, CMYK, grayscale, ฯลฯ) |
HorizontalAlignment | การจัดแนวนอนของย่อหน้า ตาราง หรือคำอธิบายประกอบ |
VerticalAlignment | การจัดแนวตั้งของย่อหน้า ตาราง หรือคำอธิบายประกอบ |
TextAlignment | การจัดแนวนอนของข้อความในกล่องข้อความคำอธิบาย |
Justification | การจัดแนวของเนื้อหาการอธิบายข้อความอิสระ |
LoadFormat | ตัวเลือกรูปแบบต้นทางที่ใช้โดยคลาสย่อยของ LoadOptions |
SaveFormat | ตัวเลือกรูปแบบเอาต์พุตที่ใช้โดย Document.Save |
Rotation | มุมการหมุนของหน้า, เปิดเผยผ่าน Page.Rotate |