Редактирование PDF контента в WinForms / WPF просмотрщике

Категория: PDF.NET

21 января 2022

VintaSoft Imaging .NET SDK обладает обширными возможностями для визуального редактирования PDF документа в WinForms/WPF просмотрщике:


Возможности визуального редактирования PDF документа демонстрируются в демо-приложениях VintaSoft PDF Editor Demo (WinForms) и VintaSoft WPF PDF Editor Demo (WPF).

В данной статье выполнен обзор функционала для визуального редактирования контента PDF документа в WinForms/WPF просмотрщике.



Редактирование контента PDF страницы в WinForms/WPF просмотрщике

WinForms компонент Vintasoft.Imaging.UI.ImageViewer позволяет отображать страницы PDF документа в WinForms приложении. ImageViewer может использовать визуальный инструмент Vintasoft.Imaging.Pdf.UI.PdfContentEditorTool для редактирования контента PDF страницы в просмотрщике.
WPF компонент Vintasoft.Imaging.Wpf.UI.WpfImageViewer позволяет отображать страницы PDF документа в WPF приложении. WpfImageViewer может использовать визуальный инструмент Vintasoft.Imaging.Pdf.Wpf.UI.WpfPdfContentEditorTool для редактирования контента PDF страницы в просмотрщике.

Вот код который добавляет в приложение функционал для визуального редактирования PDF документа (WinForms):
// The project, which uses this code, must have references to the following assemblies:
// - Vintasoft.Imaging
// - Vintasoft.Imaging.UI
// - Vintasoft.Imaging.Office.OpenXml
// - Vintasoft.Imaging.Office.OpenXml.UI
// - Vintasoft.Imaging.Pdf
// - Vintasoft.Imaging.Pdf.UI
// - Vintasoft.Imaging.Pdf.Office.UI

public partial class FormWithPdfEditorTool : System.Windows.Forms.Form
{
    //...
    Vintasoft.Imaging.UI.ImageViewer _imageViewer;
    //...

    /// <summary>
    /// The PDF content editor tool.
    /// </summary>
    Vintasoft.Imaging.Pdf.UI.PdfContentEditorTool _contentEditorTool;

    /// <summary>
    /// The undo manager.
    /// </summary>
    Vintasoft.Imaging.Undo.UndoManager _undoManager = new Vintasoft.Imaging.Undo.UndoManager(20);

    public FormWithPdfEditorTool()
    {
        //...
        // initialize Vintasoft.Imaging.Pdf.Office.UI assembly
        Vintasoft.Imaging.PdfOfficeUIAssembly.Init();

        // create visual tool that allows to edit content on PDF page
        _contentEditorTool = new Vintasoft.Imaging.Pdf.UI.PdfContentEditorTool();

        // specify that PDF content editor tool should add and edit content on PDF page
        _contentEditorTool.AppendMode = false;

        // specify that PDF content editor tool should highlight content figures
        _contentEditorTool.FiguresHighlight = true;

        // specify that PDF content editor tool should not render figures on PDF page when current page is changed in image viewer
        _contentEditorTool.RenderFiguresWhenImageIndexChanging = false;
        
        // specify that PDF content editor tool should render figures on PDF page when PDF content editor tool is deactivating
        _contentEditorTool.RenderFiguresWhenDeactivating = true;

        // specify undo manager for PDF content editor tool
        _contentEditorTool.UndoManager = _undoManager;

        // specify that PDF content editor tool should work only with content of specified types
        _contentEditorTool.InteractiveContentType =
            Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures.GraphicsFigureContentType.Text |
            Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures.GraphicsFigureContentType.Image |
            Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures.GraphicsFigureContentType.Form |
            Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures.GraphicsFigureContentType.StrokePath |
            Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures.GraphicsFigureContentType.FillPath;

        // create visual tool that allows to edit text in text content on PDF page
        Vintasoft.Imaging.Office.OpenXml.UI.VisualTools.UserInteraction.OfficeDocumentVisualEditorTextTool contentEditorTextTool =
            new Vintasoft.Imaging.Office.OpenXml.UI.VisualTools.UserInteraction.OfficeDocumentVisualEditorTextTool();

        // create the composite visual tool and set it as a current tool of image viewer
        _imageViewer.VisualTool = new Vintasoft.Imaging.UI.VisualTools.CompositeVisualTool(contentEditorTextTool, _contentEditorTool);
    }

    //...

    private void drawEllipseToolStripButton_Click(object sender, System.EventArgs e)
    {
        // start building an ellipse
        _contentEditorTool.StartBuildEllipse(
            new Vintasoft.Imaging.Pdf.Drawing.PdfPen(System.Drawing.Color.Red, 5),
            new Vintasoft.Imaging.Pdf.Drawing.PdfBrush(System.Drawing.Color.Green));
    }
}



Общие возможности редактирования контента PDF страницы в WinForms/WPF просмотрщике

SDK умеет разделять контент PDF страницы на следующие графические фигуры:
Визуальный инструмент Vintasoft.Imaging.Pdf.UI.PdfContentEditorTool / Vintasoft.Imaging.Pdf.Wpf.UI.WpfPdfContentEditorTool позволяет отобразить и редактировать графические фигуры на PDF странице в просмотрщике.

Визуальный инструмент Vintasoft.Imaging.Pdf.UI.PdfContentEditorTool / Vintasoft.Imaging.Pdf.Wpf.UI.WpfPdfContentEditorTool позволяет:
Вот скриншот из демо-приложения PdfEditorDemo, который отображает общий вид визуального редактора контента PDF в PdfEditorDemo (цифры соответствуют цифрам из списка выше):




Редактирование форматированного текста на PDF странице в WinForms/WPF просмотрщике

SDK содержит класс Vintasoft.Imaging.Office.OpenXml.UI.VisualTools.UserInteraction.OfficeDocumentVisualEditor, который представляет редактор форматированного текста в WinForms/WPF просмотрщике.
Vintasoft.Imaging.Pdf.UI.PdfContentEditorTool / Vintasoft.Imaging.Pdf.Wpf.UI.WpfPdfContentEditorTool использует редактор форматированного текста (Vintasoft.Imaging.Office.OpenXml.UI.VisualTools.UserInteraction.OfficeDocumentVisualEditor) для редактирования объекта типа "Text content group" (


Вот скриншот из демо-приложения PdfEditorDemo, который отображает отредактированный текстовый блок:




Редактирование векторной графики на PDF странице в WinForms/WPF просмотрщике

Vintasoft.Imaging.Pdf.UI.PdfContentEditorTool / Vintasoft.Imaging.Pdf.Wpf.UI.WpfPdfContentEditorTool позволяет использовать мышь для трансформации, копирования, изменения векторной графики на PDF странице в WinForms/WPF просмотрщике.

Вот скриншот из демо-приложения PdfEditorDemo, который отображает редактирование векторной графики:



Метод Vintasoft.Imaging.Pdf.UI.PdfContentEditorTool.SetContentGraphicsProperties позволяет установить свойства графического состояния для графической фигуры.

Вот скриншот из демо-приложения PdfEditorDemo, который отображает редактирование свойств графического состояния объекта:




Замена изображения или формы на PDF странице в WinForms/WPF просмотрщике

Существующее изображение или форма на PDF странице может быть заменена с помощью метода Vintasoft.Imaging.Pdf.UI.PdfContentEditorTool.ReplaceResource.

Вот скриншот из демо-приложения PdfEditorDemo, который отображает диалог с информацией о изображении-ресурсе для выбранного изображения на PDF странице:


Вот скриншот из демо-приложения PdfEditorDemo, который отображает добавление нового изображения-ресурса:


Вот скриншот из демо-приложения PdfEditorDemo, который отображает измененное изображение на PDF странице:




Создание, изменение и удаление области обрезки для фигуры на PDF странице в WinForms/WPF просмотрщике

Новая область обрезки может быть добавлена для любой фигуры на PDF странице используя метод Vintasoft.Imaging.Pdf.UI.PdfContentEditorTool.AddFigureClip.

Вот скриншот из демо-приложения PdfEditorDemo, который отображает установку эллиптической области обрезки для изображения на PDF странице:



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

Вот скриншот из демо-приложения PdfEditorDemo, который отображает трансформацию области обрезки для изображения на PDF странице:




Добавление графики на PDF страницу в WinForms/WPF просмотрщике

Vintasoft.Imaging.Pdf.UI.PdfContentEditorTool позволяет добавлять следующие графические фигуры на PDF страницу:
  • Линия текста
  • Прямоугольник с текстом
  • Форматированный текст
  • Диаграмма
  • Разметка на основе DOCX документа
  • Страница PDF или DOCX документа
  • Изображение любого поддерживаемого формата
  • Форма или изображение-ресурс из текущего либо другого PDF документа
  • Прямоугольник
  • Эллипс
  • Полигон
  • Полилинии
  • Кривые

Метод Vintasoft.Imaging.Pdf.UI.PdfContentEditorTool.AddFigure позволяет добавить графическую фигуру на PDF страницу.

Метод Vintasoft.Imaging.Pdf.UI.PdfContentEditorTool.StartBuildFigure позволяет начать построение графической фигуры на PDF странице используя манипулятор мыши.

Вот скриншот из демо-приложения PdfEditorDemo, который отображает добавление графики на PDF страницу:




Добавление диаграммы на PDF страницу в WinForms/WPF просмотрщике

SDK предоставляет класс Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures.OfficeDocumentFigure, который позволяет рисовать DOCX страницу на PDF странице.
PDF Editor Demo демонстрирует как можно добавить DOCX страницу с диаграммой на PDF страницу (добавить/построить Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures.OfficeDocumentFigure на PDF странице используя Vintasoft.Imaging.Pdf.UI.PdfContentEditorTool.AddFigure / Vintasoft.Imaging.Pdf.UI.PdfContentEditorTool.StartBuildFigure метод).

Вот скриншот из демо-приложения PdfEditorDemo, который отображает как выбрать диаграмму для добавления на PDF страницу:



Также PDF Editor Demo демонстрирует как можно изменить свойства и данные диаграммы и увидеть изменения в диаграмме на PDF страницы в просмотрщике.

Вот скриншот из демо-приложения PdfEditorDemo, который отображает возможность редактирования свойств и данных диаграммы:




Необходимые компоненты для редактирования контента PDF страницы в WinForms/WPF просмотрщике

Для использования всех возможностей визуального редактора PDF документа требуются следующие продукты VintaSoft: