การจัดการเอกสาร

การจัดการเอกสาร

การจัดการเอกสาร

Document คืออ็อบเจ็กต์รากใน Aspose.PDF FOSS สำหรับ .NET. มันเป็นตัวแทนของ
ไฟล์ PDF ทั้งหมดและให้การเข้าถึงหน้า, เมตาดาต้า, ฟิลด์ฟอร์ม, และทั้งหมด
โครงสร้าง PDF อื่น ๆ. เปิดไฟล์ที่มีอยู่ด้วย Document.Open และสร้างใหม่
ด้วยคอนสตรัคเตอร์ Document.


การเปิดและสร้างเอกสาร

// Open from a byte array
using var doc = Document.Open(File.ReadAllBytes("input.pdf"));

// Open from a file path
using var doc2 = new Document("input.pdf");

// Create a new empty document
using var newDoc = new Document();
newDoc.Pages.Add();
newDoc.Save("new.pdf");

ทำงานกับหน้า

PageCollection จัดการหน้าของเอกสาร. เข้าถึงหน้าโดยใช้ดัชนีเริ่มจาก 1, เพิ่มหน้าใหม่, หรือ ลบหน้าที่มีอยู่.

using var doc = Document.Open(pdfBytes);

// Access first page
var page = doc.Pages[1];

// Add a blank page
var newPage = doc.Pages.Add();

// Get page count
int count = doc.Pages.Count;

เรขาคณิตของหน้า

แต่ละหน้ากำหนดกล่องขอบเขตหลายกล่อง ใช้ setter methods บน Page เพื่อปรับแต่งพวกมัน.

var page = doc.Pages[1];
page.SetMediaBox(new Rectangle(0, 0, 612, 792));
page.SetCropBox(new Rectangle(36, 36, 576, 756));
page.SetRotation(90);

การบันทึกเอกสาร

บันทึกไปยังเส้นทางไฟล์, สตรีม หรืออาร์เรย์ไบต์.

// Save to file
doc.Save("output.pdf");

// Save to stream
using var ms = new MemoryStream();
doc.Save(ms);

ไฟล์แนบ

FileSpecification แสดงถึงไฟล์แนบที่ฝังอยู่ใน PDF.

var spec = new FileSpecification("data.csv", "Embedded data file");
doc.EmbeddedFiles.Add(spec);

ตราภาพ

ImageStamp วางภาพเรสเตอร์บนหน้าในตำแหน่งที่ระบุ.

var stamp = new ImageStamp("logo.png");
stamp.Put(doc.Pages[1]);
doc.Save("stamped.pdf");

คอลเลกชันผู้ดำเนินการ

OperatorCollection บนแต่ละหน้าจะเก็บตัวดำเนินการ raw content-stream. ใช้เพื่อการตรวจสอบหรือการจัดการเนื้อหาในระดับต่ำ.

var ops = doc.Pages[1].Contents;
foreach (var op in ops)
{
    // Inspect each operator
}

เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด

  • ห่อ Document ด้วยคำสั่ง using เพื่อปล่อยตัวจัดการไฟล์อย่างทันท่วงที
  • ใช้ Document.Open(byte[]) สำหรับกระบวนการทำงานในหน่วยความจำเพื่อหลีกเลี่ยงปัญหาไฟล์ล็อก
  • ปรับกล่องหน้า (MediaBox, CropBox) ก่อนเพิ่มเนื้อหาเพื่อให้แน่ใจว่าพื้นที่พิกัดถูกต้อง
  • เรียก Save เพียงครั้งเดียวหลังจากการแก้ไขทั้งหมด — การบันทึกซ้ำช้ากว่าแต่ปลอดภัย
  • ใช้ PageCollection.Accept(AnnotationSelector) เพื่อประมวลผลคำอธิบายภาพเป็นชุดบนทุกหน้า

ปัญหาทั่วไป

IssueCauseFix
Document.Open เกิดข้อผิดพลาดบน PDF ที่ถูกต้องไฟล์ถูกเข้ารหัสด้วยรหัสผ่านระบุพารามิเตอร์รหัสผ่านในตัวสร้าง
จำนวนหน้ามีค่าเป็น 0 หลังจากการสร้างDocument() ใหม่เริ่มต้นว่างเปล่าเรียก doc.Pages.Add() เพื่อเพิ่มหน้าว่าง
ไฟล์ที่บันทึกมีขนาดใหญ่กว่าที่คาดภาพหรือฟอนต์ฝังหลายครั้งใช้การเพิ่มประสิทธิภาพ (ดู Conversion and Optimization guide)
Pages[0] เกิดข้อผิดพลาดดัชนีหน้านับจาก 1 ไม่ใช่ 0ใช้ Pages[1] สำหรับหน้าที่หนึ่ง

คำถามที่พบบ่อย

ฉันจะรวมเอกสาร PDF สองไฟล์ได้อย่างไร?

ใช้ PdfFileEditor.Concatenate จาก Facades API หรือคัดลอกหน้าจากเอกสารหนึ่งไปยังอีกเอกสารหนึ่งโดยใช้ PageCollection.

ฉันสามารถเปิด PDF จาก URL หรือสตรีมได้หรือไม่?

ใช่. อ่านเนื้อหา URL ลงใน byte[] ก่อน, แล้วส่งต่อให้
Document.Open(byte[]).

ฉันจะลบหน้าอย่างไร?

เรียก doc.Pages.Delete(pageNumber) โดย pageNumber มีค่าเริ่มต้นจาก 1.

Document ปลอดภัยต่อการทำงานหลายเธรดหรือไม่?

ไม่. แต่ละเธรดควรทำงานกับอินสแตนซ์ Document ของตนเอง.


API สรุปอ้างอิง

Class / MethodDescription
Documentอ็อบเจ็กต์ PDF ราก; เก็บหน้าต่างๆ, เมตาดาต้า, และฟิลด์ฟอร์ม
Document.Openฟังก์ชันสร้างแบบสแตติกเพื่อเปิด PDF จากอาร์เรย์ไบต์
Document.Saveทำการซีเรียลไลซ์เอกสารไปยังไฟล์หรือสตรีม
Pageหน้า PDF เดียวที่มีเนื้อหา, คำอธิบายประกอบ, และเรขาคณิต
Page.SetMediaBoxกำหนด media box ของหน้า
Page.SetCropBoxกำหนดพื้นที่ครอปที่มองเห็นได้
Page.SetRotationหมุนหน้าด้วยมุม 0, 90, 180 หรือ 270 องศา
PageCollectionคอลเลกชันหน้าที่เรียงลำดับในเอกสาร
PageCollection.Addเพิ่มหน้าว่าง
OperatorCollectionตัวดำเนินการ raw content-stream สำหรับหน้า
FileSpecificationตัวบ่งชี้ไฟล์แนบที่ฝังอยู่
ImageStampตราภาพซ้อนทับสำหรับหน้า
XFormCollectionXObjects ฟอร์มที่สามารถใช้ซ้ำได้ในเอกสาร

ดูเพิ่มเติม

 ภาษาไทย