Як працювати з управлінням основними документами в .NET

Як працювати з управлінням основними документами в .NET

Aspose.PDF FOSS for .NET provides the 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 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 приймає байтовий масив, шлях файлу або потік. Use 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 властивість повертає 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(), або серіалізувати на байтовий масив з 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.

Недійсное операція виняття при покликанні Document.Open на пошкоджених файлах Якщо PDF байтовий масив або файл є скороченим чи недійсним, Document.Open буде викидати. Перевірте, що джерело байтовий масив є повним PDF (починається з %PDF-) перед передачею її до Open.

Документ не видалений витік пам’яті в сценаріях високого пропускного спросу. Завжди загортай. Document.Open і Document.Create Званки в using Заява. Document класу інструментів IDisposable;Якщо його не видалити, то основний потік та таблиця перекресних відліків залишаються в пам’яті.

Захопить (ms) після Ms.Позиція не відновлена Коли читати назад від 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.

Який тип властивості “Сторінки”?

Document.Pages має тип: PageCollection.Він має 1-індекс; doc.Pages[1] це перша сторінка.

Чи можу я зберегти документ кілька разів?

Так, ви можете зателефонувати. doc.Save() або doc.ToArray() Кожний дзвінок серіалізує поточний стан документа.

Як я перевірю, чи є документ ліцензований?

Document.IsLicensed повертає a bool для Aspose.PDF FOSS це лише інформаційне не потрібно активації.

See Also

 Українська