Aspose.PDF FOSS for .NET เป็นไลบรารี .NET ฟรีที่ได้รับใบอนุญาตแบบ MIT สำหรับการอ่าน, สร้าง, และจัดการเอกสาร PDF. เปิดตัวภายใต้ใบอนุญาตโอเพนซอร์สที่ยืดหยุ่น, มันขจัดอุปสรรคแบบดั้งเดิมต่อความสามารถระดับองค์กรของ PDF — ทุกฟีเจอร์ในไลบรารีพร้อมใช้งานโดยไม่ต้องซื้อใบอนุญาตเชิงพาณิชย์.

Aspose.PDF FOSS for .NET คืออะไร?

ไลบรารีนี้มุ่งเป้าไปที่ .NET 8 และรุ่นต่อไป มันถูกเผยแพร่บน NuGet ภายใต้ ID ของแพ็กเกจ Aspose.Pdf.Foss และสามารถเพิ่มลงในโครงการ .NET 8+ ใด ๆ ด้วยคำสั่งเดียว:

dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha

เนมสเปซหลักคือ Aspose.Pdf, พร้อมกับเนมสเปซที่เกี่ยวข้องได้แก่ Aspose.Pdf.Text, Aspose.Pdf.Forms, และ Aspose.Pdf.Facades. ไลบรารีเปิดเผยคลาส API สาธารณะจำนวน 805 คลาส ที่สนับสนุนโดยข้ออ้างที่บันทึกไว้ 7,488 รายการและโค้ดสแนปช็อต 100 ชิ้นที่ดึงมาจากชุดทดสอบโดยตรง.

ความสามารถหลัก

API ครอบคลุมวงจรชีวิตทั้งหมดของเอกสาร PDF:

  • Document creation and loadingDocument.Create() สร้างเอกสารเปล่า; Document.Open(data) โหลด PDF ที่มีอยู่จากอาเรย์ไบต์หรือสตรีม.
  • Page and content access — คอลเลกชัน Pages ให้การเข้าถึงแบบดัชนีเริ่มจาก 1 สำหรับหน้าแต่ละหน้า, แต่ละหน้าจะเปิดเผย annotations, operators, และ content streams.
  • Text extractionTextFragmentAbsorber เยี่ยมชมหน้าและรวบรวมทุก text fragment, พร้อมการกรอง search‑phrase แบบเลือกและการสนับสนุน regular expression.
  • Interactive actionsPdfAction.CreateUri, PdfAction.CreateGoTo, PdfAction.CreateJavaScript, และ PdfAction.CreateLaunch ครอบคลุมประเภท PDF action มาตรฐาน.
  • AnnotationsAnnotationCollection.AddLinkAnnotation แนบ link annotation พร้อมการกระทำที่เกี่ยวข้องกับพื้นที่สี่เหลี่ยมใด ๆ บนหน้า.
  • Forms — เนมสเปซ Aspose.Pdf.Forms และ Aspose.Pdf.Facades ให้การเข้าถึงฟิลด์ AcroForm, การจัดรูปแบบ appearance, และส่วนขยาย JavaScript ระดับฟิลด์.

การเปิดเอกสารและการเพิ่มลิงก์

ตัวอย่างต่อไปนี้แสดงรูปแบบ round‑trip: สร้างเอกสาร PDF ใหม่, เพิ่ม annotation ลิงก์การกระทำ URI ไปยังหน้าที่หนึ่ง, บันทึกลงสตรีม, แล้วโหลดใหม่เพื่อตรวจสอบว่า annotation ยังคงอยู่.

using var doc = Document.Create();
doc.Pages.Add();
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://aspose.com");
page.Annotations.AddLinkAnnotation(new Rectangle(50, 700, 200, 720), action);
using var ms = new MemoryStream();
doc.Save(ms);
ms.Position = 0;
using var doc2 = Document.Open(ms.ToArray());
var annot = (LinkAnnotation)doc2.Pages[1].Annotations[1];
Console.WriteLine(annot.Uri); // https://aspose.com

เมธอด static Document.Open รับค่า byte[] หรือสตรีม doc.Pages[1] เข้าถึงหน้าที่หนึ่งโดยใช้ดัชนีเริ่มจาก 1 — ซึ่งเป็นแนวทางการใช้ดัชนีเดียวกันทั่วทั้งไลบรารี หลังจากบันทึกเป็น MemoryStream เอกสารสามารถโหลดใหม่และหมายเหตุทั้งหมดจะถูกเก็บไว้.


การค้นหาข้อความบนหน้า

TextFragmentAbsorber ให้การค้นหาคำสำคัญบนสตรีมเนื้อหาของหน้าใดก็ได้ ส่งวลีการค้นหาไปยังคอนสตรัคเตอร์เพื่อจำกัดผลลัพธ์ หรือใช้ overload ที่ไม่มีอาร์กิวเมนต์เพื่อรวบรวมส่วนย่อยทั้งหมด:

using var doc = Document.Open("path/to/document.pdf");
var absorber = new TextFragmentAbsorber("Hello");
absorber.Visit(doc.Pages[1]);
foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Found: {fragment.Text}");
}

แต่ละ TextFragment ในคอลเลกชันที่ได้จะเปิดเผยคุณสมบัติต่าง ๆ รวมถึง Text, FontSize และข้อมูลตำแหน่ง ทำให้การสร้างกระบวนการค้นหา, ไฮไลท์ หรือการลบข้อมูลบนส่วนที่สกัดออกเป็นเรื่องง่าย.


สัญญาอนุญาต MIT และการพัฒนาแบบเปิด

โค้ดต้นฉบับทั้งหมดถูกเผยแพร่บน GitHub และแจกจ่ายภายใต้ใบอนุญาต MIT. ไม่มีลายน้ำการประเมินค่า, ไม่มีขีดจำกัดการใช้งาน, และไม่มีไฟล์ใบอนุญาตแยกต่างหากเพื่อจัดการ. คุณสมบัติ Document.IsLicensed จะคืนค่า true เสมอในรุ่น FOSS.

แพ็กเกจในขณะนี้อยู่ที่เวอร์ชัน 0.1.0-alpha, สะท้อนการพัฒนาที่กำลังดำเนินอยู่. พื้นผิวของ API มีขนาดใหญ่แล้ว — 805 คลาส, 7,488 คำอ้าง — และการกำหนดเป็นอัลฟ่าแสดงว่า ลายเซ็นของ API อาจเปลี่ยนแปลงก่อนการปล่อยเวอร์ชัน 1.0.


เริ่มต้น

แหล่งข้อมูลที่เกี่ยวข้อง