כיצד לעבוד עם ניהול מסמכי ליבה ב-.NET

כיצד לעבוד עם ניהול מסמכי ליבה ב-.NET

Aspose.PDF FOSS for .NET מספקת את המחלקה Document כנקודת הכניסה המרכזית לכל פעולות 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 הדרושות בראש הקובץ שלך:

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 מחזיר 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(), או סדר למערך בתים עם 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() הוא עומס יתר שווה ערך שמקבל מערכי נתיבי קבצים ישירות.

בעיות נפוצות ותיקונים

אוסף העמודים ריק לאחר Document.Create()
Document.Create() מחזיר מסמך ללא עמודים. עליך להוסיף במפורש עמוד לפני גישה לdoc.Pages[1]. ניסיון לגשת לאינדקס שאינו קיים גורם לIndexOutOfRangeException.

InvalidOperationException בעת קריאה ל-Document.Open בקובץ פגום
אם מערך הבייטים של PDF או הקובץ נחתך או אינו תקין, Document.Open יזרוק. אמת שהמערך המקורי הוא PDF שלם (מתחיל ב%PDF-) לפני העברת אותו לOpen.

Document not disposed — memory leak in high-throughput scenarios
תמיד לעטוף את הקריאות Document.Open ו-Document.Create בתוך הצהרת using. המחלקה Document מממשת IDisposable; חוסר שחרור שלה גורם לזרם הבסיסי ולטבלת ההפניות הצולבות להישאר בזיכרון.

Save(ms) after 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() היא שיטת נוחות השומרת פנימית ל-MemoryStream ומחזירה את מערך הבייטים המתקבל. שני הנתיבים מייצרים פלט PDF זהה.

מהו סוג המאפיין Pages?

Document.Pages הוא מסוג PageCollection. הוא ממוספר מ‑1; doc.Pages[1] הוא העמוד הראשון.

האם אני יכול לשמור מסמך מספר פעמים?

כן. אתה יכול להפעיל את doc.Save() או את doc.ToArray() מספר פעמים על אותה מופע של המסמך. כל הפעלה מסדרת את המצב הנוכחי של המסמך.

איך אני בודק אם מסמך מורשה?

Document.IsLicensed מחזיר bool המציין את מצב הרישוי הפנימי. עבור Aspose.PDF FOSS זה הוא מידע בלבד — אין צורך בהפעלה.

ראה גם

 עברית