ניהול מסמכי PDF מרכזי מכסה את הפעולות שמופיעות כמעט בכל תהליך עבודה עם PDF: פתיחה או יצירת מסמך, גישה לדפים ולתוכן שלהם, קריאה וכתיבה של הערות, חילוץ טקסט, ועבודה עם פעולות אינטראקטיביות. Aspose.PDF FOSS for .NET מספק .NET 8+ API שמטפל בכל המשימות הללו דרך מודל אובייקטים עקבי הממוקד סביב סוגי Document ו-Page.

מחזור חיי המסמך: יצירה, פתיחה, שמירה

כל זרימת עבודה מתחילה או ביצירת מסמך חדש או בטעינת מסמך קיים. Document.Create() מחזירה מופע חדש וריק של Document. Document.Open(data) מקבלת byte[] או Stream ומנתחת את מבנה ה-PDF:

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

קטע קוד זה פותח קובץ PDF מינימלי, מוסיף אנוטציה של קישור לעמוד 1, שומר ל‑MemoryStream, ומוודא שהאנוטציה נשמרת לאחר הטעינה מחדש. העומס של Document.Save(Stream) כותב את המבנה המלא המעודכן; Document.ToArray() מחזיר את הבייטים ישירות.


גישה לדף ואוסף הדפים

הדפים נגישים דרך המאפיין Pages באמצעות אינדקס שלם מבוסס 1: doc.Pages[1] מחזיר את הדף הראשון, doc.Pages[doc.Pages.Count] מחזיר את האחרון. כל אובייקט Page מציג:

  • Annotations — הAnnotationCollection עבור אותה עמוד, תומך בAddLinkAnnotation ובספירה של ההערות הקיימות לפי סוג.
  • מפעילי זרם תוכן — גישה ברמת נמוכה לפקודות ציור של העמוד דרך אוסף Operators.

האינדקס מבוסס על 1 הוא עקבי בכל ה-API: חיפושי אנוטציות, אינדקסי דפי יעד של פעולה GoTo, וכל ההתייחסויות לדפים אחרות משתמשות באותו קונבנציה.


חילוץ טקסט עם TextFragmentAbsorber

TextFragmentAbsorber הוא נקודת הכניסה הסטנדרטית לקריאת טקסט מדף PDF. השתמש בבונה ללא ארגומנטים כדי לחלץ את כל הקטעים, או העבר ביטוי חיפוש כדי לסנן לטקסט תואם:

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} size={fragment.FontSize}");
}

קרא absorber.Visit(page) כדי לעבד דף יחיד. האוסף TextFragments שנוצר מכיל TextFragment אובייקטים; כל אחד חושף את Text (תוכן המחרוזת) ואת FontSize (גודל הנקודה המוצג). גרסה נוספת TextFragmentAbsorber(searchPhrase, isRegex) מקבלת דגל ביטוי רגולרי לחיפוש מבוסס תבנית.


פעולות אינטראקטיביות

PdfAction היא מחלקת הייצור לכל סוגי הפעולה הסטנדרטיים של PDF. ארבע שיטות ייצור סטטיות מכסות את המקרים הנפוצים ביותר:

  • PdfAction.CreateUri(uri) — פותח כתובת URL בדפדפן של המשתמש.
  • PdfAction.CreateGoTo(pageIndex, fitType) — מנווט לעמוד ספציפי בתוך המסמך.
  • PdfAction.CreateJavaScript(script) — מריץ מחרוזת JavaScript בתצוגת ה-PDF.
  • PdfAction.CreateLaunch(filePath) — משגר קובץ חיצוני או יישום.

פעולות מצורפות לדפים דרך אנוטציות. AnnotationCollection.AddLinkAnnotation(rectangle, action) מציב LinkAnnotation על האזור המלבן המוגדר עם הפעולה המצורפת:

using var doc = Document.Create();
doc.Pages.Add();
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://example.org");
var annot = page.Annotations.AddLinkAnnotation(new Rectangle(10, 10, 100, 30), action);
Console.WriteLine(page.Annotations.Count);      // 1
Console.WriteLine(annot.AnnotationType);         // Link

AnnotationType.Link מאשר שההערה נוצרה כסוג קישור. הבונה Rectangle מקבל קואורדינטות שמאל, תחתון, ימין, ו‑על במידות מרחב המשתמש של PDF.


מטא-נתוני מסמך ורישוי

המחלקה Document חושפת את IsLicensed (מחזירה true בבנייה של FOSS), JavaScript (JavaScriptCollection עבור סקריפטים ברמת המסמך), ו‑DocumentActions לאירועי מחזור החיים כגון BeforeClosing ו‑BeforeSaving.

חבילת FOSS מותקנת דרך NuGet:

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

לא נדרש מפתח רישיון. רישיון MIT מאפשר שימוש ביישומים מסחריים ללא דרישות ייחוס מעבר לשמירת הודעת הרישיון.


התחלה

משאבים קשורים