การจัดการเอกสาร
การจัดการเอกสาร
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)เพื่อประมวลผลคำอธิบายภาพเป็นชุดบนทุกหน้า
ปัญหาทั่วไป
| Issue | Cause | Fix |
|---|---|---|
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 / Method | Description |
|---|---|
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 | ตราภาพซ้อนทับสำหรับหน้า |
XFormCollection | XObjects ฟอร์มที่สามารถใช้ซ้ำได้ในเอกสาร |