วิธีการทํางานกับ การจัดการเอกสารหลักใน .NET
Aspose.PDF FOSS for .NET provides the Document class เป็นจุดเข้ากลางสําหรับการทํางาน PDF ทุกอย่าง. ติดตั้งแพ็คเกจด้วย dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha และการใช้งาน Document.Create(), Document.Open(), Document.Save(),และ Document.Merge() เพื่อจัดการเอกสาร PDF ในระบบ .NET 8+ โดยการเขียนโปรแกรม.
คู่มือขั้นตอนตามขั้นตอนนี้
ขั้นตอนที่ 1: ติดตั้งแพคเกจ
เพิ่ม Aspose.PDF FOSS ไปยังโครงการของคุณ:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alphaตรวจสอบคําอ้างอิงในตัวเลขของคุณ .csproj:
<PackageReference Include="Aspose.Pdf.Foss" Version="0.1.0-alpha" />ขั้นตอนที่ 2: นําเข้าชั้นเรียนที่จําเป็น
เพิ่มการใช้งานที่จําเป็นในด้านบนของไฟล์ของคุณ:
using Aspose.Pdf;
using Aspose.Pdf.Annotations;ขั้นตอนที่ 3: สร้างเอกสาร PDF ใหม่
การใช้งาน Document.Create() การผลิตเอกสารในความจําที่ว่าง:
using var doc = Document.Create();
// The document has no pages yet; add pages before saving
using var ms = new MemoryStream();
doc.Save(ms);
byte[] pdfBytes = ms.ToArray();ขั้นตอนที่ 4: เปิด PDF ที่มีอยู่
Document.Open รับการเรียงไบต์, เส้นทางไฟล์หรือสตรีม. ใช้ using เพื่อให้แน่ใจว่าเอกสารถูกกําจัดหลังจากการใช้งาน:
// From a file path
using var doc = Document.Open("input.pdf");
var page = doc.Pages[1];
// From a byte array loaded elsewhere
byte[] data = File.ReadAllBytes("input.pdf");
using var doc2 = Document.Open(data);ขั้นตอนที่ 5: หน้าเข้าถึง
การ Document.Pages property กลับ a PageCollection.หน้ามีอัตราการแสดง 1 ตัว:
using var doc = Document.Open("input.pdf");
int pageCount = doc.Pages.Count;
var firstPage = doc.Pages[1];
double width = firstPage.Width;
double height = firstPage.Height;ขั้นตอนที่ 6: เก็บเอกสาร
ให้พ้นจากลําน้ําที่มี Document.Save(), หรือเรียงเป็น array ไบต์ ด้วย Document.ToArray():
using var doc = Document.Open("input.pdf");
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://aspose.com/test");
page.Annotations.AddLinkAnnotation(new Rectangle(50, 700, 200, 720), action);
using var ms = new MemoryStream();
doc.Save(ms);
ms.Position = 0;
byte[] savedBytes = ms.ToArray();ขั้นตอนที่ 7: ผสมรวมเอกสารหลายรายการ
การใช้งาน Document.Merge() การรวมหลายตัว Document ตัวอย่างเป็นตัวอย่างเดียว:
using var doc1 = Document.Open("part1.pdf");
using var doc2 = Document.Open("part2.pdf");
var merged = Document.Merge(new[] { doc1, doc2 });
merged.Save("combined.pdf");Document.MergeDocuments() เป็นการอุดหนุนที่เทียบเท่า ที่ยอมรับ array ทางไฟล์โดยตรง.
ปัญหาทั่วไปและข้อกําหนด
การรวบรวมหน้าว่างหลังจาก Document.Create ((() Document.Create() กลับเอกสารที่ไม่มีหน้า คุณต้องเพิ่มหน้าโดยชัดเจน ก่อนที่จะเข้าถึง doc.Pages[1].การพยายามเข้าถึงอินเด็กซ์ที่ไม่มี มันทําให้เกิดการพิสูจน์ข้อมูล IndexOutOfRangeException.
InvalidOperationException เมื่อเรียก Document.Open ในไฟล์ที่เสียหาย ถ้าการกรอบไบต์ PDF หรือไฟล์นั้นถูกตัดหรือไม่เป็นจริง, Document.Open จะโยน. ยืนยันว่า array ไบต์แหล่งเป็น PDF ครบ (เริ่มด้วย %PDF-) ก่อนที่จะส่งไปยัง Open.
เอกสารไม่ถูกกําจัด การรั่วของความจําในสไตยการผ่านสูง เก็บไว้เสมอ Document.Open และ Document.Create การเรียกใน a using คําแถลงการณ์ Document เครื่องมือชั้นเรียน IDisposable; หากไม่กําจัดมัน ทําให้กระแสที่อยู่เบื้องหลังและตารางอ้างอิงข้ามจะอยู่ในความจํา.
Save ((ms) หลังจากที่ ms.Position ไม่ถูกรีเซ็ต เมื่ออ่านกลับจาก MemoryStream หลังจากนั้น doc.Save(ms), เปลี่ยนแปลง ms.Position = 0 การไม่ทําขั้นตอนนี้ จะทําให้ผู้อ่านพบกับ PDF ที่ว่างเปล่า หรือบางส่วน.
การรวมผลิตเอกสารที่มีจํานวนหน้าที่ไม่คาดหวัง การรับรองว่า เอกสารแหล่งทั้งหมดถูกอัตราเต็ม ก่อนที่จะส่งไปยัง Document.Merge.การกําจัดเอกสารแหล่งก่อนการเรียกรวมอาจทําให้ต้นหน้าไม่ครบ.
คําถามที่พบบ่อย
ผมสามารถเปิด PDF ที่คุ้มครองด้วยรหัสผ่านได้หรือไม่?
ใช่ ใช้ Document.Open(data, password) หรือ Document.Open(path, password) เพื่อให้เจ้าของหรือรหัสผ่านผู้ใช้เป็นข้อโต้แย้งที่สอง.
Document.ToArray ((() ต่างจากการบันทึกเป็น MemoryStream ไหม?
Document.ToArray() เป็นวิธีความสะดวกที่ช่วยประหยัดภายในให้กับ a MemoryStream และคืน array ไบต์ที่เกิดขึ้น ทั้งสองทางผลิต output PDF ที่เหมือนกัน.
ประเภทของรัชญา Pages คืออะไร?
Document.Pages มีชนิดของ PageCollection. มีอัตราการแสดง 1; doc.Pages[1] เป็นหน้าแรก.
ผมสามารถบันทึกเอกสารได้หลายครั้งได้ไหม?
ใช่ คุณโทรหาได้นะ doc.Save() หรือ doc.ToArray() หลายครั้งบนตัวอย่างเอกสารเดียวกัน. การเรียกแต่ละครั้งจะเรียงสถานะของเภทเดี๋ยวนี้.
ผมตรวจสอบได้อย่างไรว่าเอกสารมีใบอนุญาตหรือไม่?
Document.IsLicensed กลับ a bool การแสดงสถานะการอนุญาตภายใน สําหรับ Aspose.PDF FOSS นี้เป็นข้อมูลเท่านั้น ไม่จําเป็นต้องใช้งาน.