การทำงานกับ Enums

การทำงานกับ 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

ดูเพิ่มเติม

 ภาษาไทย