Нарисовать XForm на странице

В этом уроке мы предоставим вам пошаговое руководство о том, как нарисовать XForm на странице с помощью Aspose.PDF для .NET. Aspose.PDF — это мощная библиотека, которая позволяет программно создавать, манипулировать и конвертировать PDF-документы. Используя операторы, предоставляемые Aspose.PDF, вы можете добавить и разместить форму XForm на существующей странице PDF.

Предварительные условия

Прежде чем начать, убедитесь, что у вас есть следующие предварительные условия:

  1. Visual Studio установлена с .NET Framework.
  2. Библиотека Aspose.PDF для .NET.

Шаг 1: Настройка проекта

Для начала создайте новый проект в Visual Studio и добавьте ссылку на библиотеку Aspose.PDF для .NET. Вы можете скачать библиотеку с официального сайта Aspose и установить ее на свой компьютер.

Шаг 2. Импортируйте необходимые пространства имен.

В файл кода C# импортируйте пространства имен, необходимые для доступа к классам и методам, предоставляемым Aspose.PDF:

using System;
using System.IO;
using Aspose.Pdf;
using Aspose.Pdf.Operators;

Шаг 3. Установка путей к файлам

Определите пути к файлам фонового изображения, входного PDF-файла и выходного PDF-файла:

string dataDir = "YOUR_DIRECTORY_OF_DOCUMENTS";
string imageFile = dataDir + "aspose-logo.jpg";
string inFile = dataDir + "DrawXFormOnPage.pdf";
string outFile = dataDir + "blank-sample2_out.pdf";

Обязательно укажите фактические пути к файлам на вашем компьютере.

Шаг 4. Загрузка входного PDF-файла

Используйте следующий код для загрузки входного PDF-файла:

using (Document doc = new Document(inFile))
{
OperatorCollection pageContents = doc.Pages[1].Contents;
// В следующем коде используются операторы GSave/GResstore.
// В коде используется оператор ContatenateMatrix для позиционирования XForm.
// В коде используется оператор Do для рисования XForm на странице.
// Операторы GSave/GResstore оборачивают существующий контент
// это сделано для получения исходного состояния графики в конце существующего контента.
// в противном случае в конце цепочки существующих операторов могут остаться нежелательные преобразования.
pageContents. Insert(1, new GSave());
pageContents. Add(new GRestore());
// Добавьте оператор GSave для правильного сброса состояния графики после новых команд.
pageContents. Add(new GSave());

// Создайте X-форму
XForm form = XForm.CreateNewForm(doc.Pages[1], doc);
doc.Pages[1].Resources.Forms.Add(form);
form.Contents.Add(new GSave());
// Установите ширину и высоту изображения
form.Contents.Add(new ConcatenateMatrix(200, 0, 0, 200, 0, 0));
// Загрузите изображение в поток
Stream imageStream = new FileStream(imageFile, FileMode.Open);
// Добавьте изображение в коллекцию изображений ресурсов XForm.
form.Resources.Images.Add(imageStream);
XImage ximage = form.Resources.Images[form.Resources.Images.Count];
// Использование оператора Do: этот оператор рисует изображение
form.Contents.Add(new Do(ximage.Name));
form.Contents.Add(new GRestore());

pageContents. Add(new GSave());
//Расположите XForm по координатам x=100 и y=500.
pageContents. Add(new ConcatenateMatrix(1, 0, 0, 1, 100, 500));
// Нарисуйте XForm с помощью оператора Do
pageContents.Add(new Do(form.Name));
pageContents. Add(new GRestore());

pageContents. Add(new GSave());
// Расположите XForm по координатам x=100 и y=300.
pageContents. Add(new ConcatenateMatrix(1, 0, 0, 1, 100, 300));
// Нарисуйте XForm с помощью оператора Do
pageContents.Add(new Do(form.Name));
pageContents. Add(new GRestore());

// Восстановите состояние графики с помощью GRestore после GSave.
pageContents. Add(new GRestore());
doc.Save(outFile);
}

Обязательно укажите фактические пути к файлам и при необходимости измените номер страницы и положение XForm.

Пример исходного кода для Draw XForm On Page с использованием Aspose.PDF для .NET


// Путь к каталогу документов.
string dataDir = "YOUR DOCUMENT DIRECTORY";
string imageFile = dataDir+ "aspose-logo.jpg";
string inFile = dataDir + "DrawXFormOnPage.pdf";
string outFile = dataDir + "blank-sample2_out.pdf";
using (Document doc = new Document(inFile))
{
	OperatorCollection pageContents = doc.Pages[1].Contents;
	// Образец демонстрирует
	// Использование операторов GSave/GResstore
	// Использование оператора ContatenateMatrix для позиционирования xForm
	// Использование оператора для рисования xForm на странице
	// Оберните существующее содержимое парой операторов GSave/GResstore.
	// это для получения исходного состояния графики существующего содержимого
	// в противном случае в конце существующей цепочки операторов могут остаться нежелательные преобразования.
	pageContents.Insert(1, new Aspose.Pdf.Operators.GSave());
	pageContents.Add(new Aspose.Pdf.Operators.GRestore());
	// Добавлен оператор сохранения состояния графики, чтобы правильно очищать состояние графики после новых команд.
	pageContents.Add(new Aspose.Pdf.Operators.GSave());
	#region create xForm
	// Создать xForm
	XForm form = XForm.CreateNewForm(doc.Pages[1], doc);
	doc.Pages[1].Resources.Forms.Add(form);
	form.Contents.Add(new Aspose.Pdf.Operators.GSave());
	// Определите ширину и высоту изображения
	form.Contents.Add(new Aspose.Pdf.Operators.ConcatenateMatrix(200, 0, 0, 200, 0, 0));
	// Загрузить изображение в поток
	Stream imageStream = new FileStream(imageFile, FileMode.Open);
	//Добавить изображение в коллекцию изображений ресурсов XForm.
	form.Resources.Images.Add(imageStream);
	XImage ximage = form.Resources.Images[form.Resources.Images.Count];
	// Использование оператора Do: этот оператор рисует изображение.
	form.Contents.Add(new Aspose.Pdf.Operators.Do(ximage.Name));
	form.Contents.Add(new Aspose.Pdf.Operators.GRestore());
	#endregion
	pageContents.Add(new Aspose.Pdf.Operators.GSave());
	// Поместите форму в координаты x=100 y=500.
	pageContents.Add(new Aspose.Pdf.Operators.ConcatenateMatrix(1, 0, 0, 1, 100, 500));
	// Нарисовать форму с помощью оператора Do
	pageContents.Add(new Aspose.Pdf.Operators.Do(form.Name));
	pageContents.Add(new Aspose.Pdf.Operators.GRestore());
	pageContents.Add(new Aspose.Pdf.Operators.GSave());
	// Поместите форму в координаты x=100 y=300.
	pageContents.Add(new Aspose.Pdf.Operators.ConcatenateMatrix(1, 0, 0, 1, 100, 300));
	// Нарисовать форму с помощью оператора Do
	pageContents.Add(new Aspose.Pdf.Operators.Do(form.Name));
	pageContents.Add(new Aspose.Pdf.Operators.GRestore());
	// Восстановите состояние графики с помощью GRestore после GSave.
	pageContents.Add(new Aspose.Pdf.Operators.GRestore());
	doc.Save(outFile);                
}

Заключение

В этом уроке вы узнали, как нарисовать форму XForm на странице PDF с помощью Aspose.PDF для .NET. Выполнив описанные шаги, вы сможете добавить и разместить форму XForm на существующей странице, тем самым придав большую гибкость вашим PDF-документам.

Часто задаваемые вопросы по рисованию XForm на странице

Вопрос: Что такое XForm в Aspose.PDF?

О: XForm — это многократно используемый графический объект в документе PDF. Он позволяет определять и рисовать сложную графику, изображения или текст, которые можно многократно использовать на разных страницах.

Вопрос: Как мне импортировать необходимые пространства имен для Aspose.PDF?

О: В файле кода C# используйтеusing директива для импорта необходимых пространств имен для доступа к классам и методам, предоставляемым Aspose.PDF:

using System;
using System.IO;
using Aspose.Pdf;
using Aspose.Pdf.Operators;

Вопрос: Какова цель операторов GSave и GRestore?

А:GSave иGRestoreоператоры в Aspose.PDF используются для сохранения и восстановления состояния графики. Они помогают гарантировать, что преобразования и настройки, примененные к одному разделу контента, не влияют на последующие разделы.

Вопрос: Как определить XForm с помощью Aspose.PDF?

О: Чтобы создать XForm, используйте командуXForm.CreateNewForm метод и добавьте его вResources.Forms коллекция конкретной страницы. Затем вы можете добавить содержимое в XForm.Contents свойство.

Вопрос: Как нарисовать изображение в XForm?

О: Загрузите изображение в поток и добавьте его вResources.Images коллекция XForm. ИспользоватьDo оператор в XFormContents нарисовать изображение.

Вопрос: Как разместить XForm на странице PDF?

О: Чтобы разместить XForm на странице, используйтеConcatenateMatrix оператор на страницеContents. Настройте параметры матрицы, чтобы указать перевод (положение) и масштабирование XForm.

Вопрос: Могу ли я нарисовать несколько XForms на одной странице?

О: Да, вы можете нарисовать несколько XForms на одной странице, настроивConcatenateMatrixпараметры для размещения каждой XForm в разных координатах.

Вопрос: Могу ли я изменить содержимое XForm после его создания?

О: Да, вы можете изменить содержимое XForm после создания, добавив в него дополнительные операторы.Contents свойство.

Вопрос: Что произойдет, если я опущу операторы GSave и GRestore?

О: Отсутствие операторов GSave и GRestore может привести к нежелательным преобразованиям или настройкам, которые будут применены к последующему содержимому. Их использование помогает поддерживать чистое состояние графики.

Вопрос: Могу ли я повторно использовать XForms на разных страницах PDF-документа?

О: Да, вы можете повторно использовать XForm на нескольких страницах, добавив одну и ту же XForm вResources.Forms коллекция разных страниц.

Вопрос: Существует ли ограничение на количество XForms, которые я могу создать?

О: Хотя не существует строгого ограничения на количество создаваемых вами XForms, имейте в виду, что слишком большое количество XForms может повлиять на производительность и использование памяти. Используйте их разумно.

Вопрос: Могу ли я повернуть XForm или применить другие преобразования?

О: Да, вы можете использоватьConcatenateMatrixоператор для применения таких преобразований, как вращение, масштабирование и перевод, к XForm.