VintaSoft Imaging .NET SDK 14.1: Документация для .NET разработчика
Vintasoft.Imaging.Pdf.Tree.Annotations Namespace / PdfTextMarkupAnnotation Class
Члены типа Объект Синтаксис Example Иерархия Требования Смотрите также
    Класс PdfTextMarkupAnnotation
    Представляет PDF аннотацию, которая может отображаться в виде выделения, подчеркивания, зачеркивания или зубчатого ("волнистого") подчеркивания в тексте документа.
    Объектная модель
    PdfPopupAnnotation PdfAnnotation PdfFileReferenceSpecificationList PdfAnnotationAppearanceGenerator PdfOptionalContentGroup PdfPage PdfAnnotationBorderStyle AffineMatrix PdfAction PdfAnnotationAppearances PdfAnnotationAdditionalActions PdfDocument PdfIndirectReference PdfBasicObject PdfTextMarkupAnnotation
    Синтаксис
    'Declaration
    
    Public Class PdfTextMarkupAnnotation
       Inherits PdfMarkupAnnotation
    
    
     
    Пример

    Вот пример, который показывает, как разметить текст с помощью аннотации разметки текста PDF:

    ''' <summary>
    ''' Highlights specified text in PDF document.
    ''' </summary>
    ''' <param name="inputPdfFilename">The input PDF filename.</param>
    ''' <param name="outputPdfFilename">The output PDF filename.</param>
    ''' <param name="text">A text that must be highlighted.</param>
    Public Shared Sub HiglightTextInPdfDocument(inputPdfFilename As String, outputPdfFilename As String, text As String)
        MarkupTextInPdfDocument(inputPdfFilename, outputPdfFilename, Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationType.Highlight, System.Drawing.Color.Orange, text)
    End Sub
    
    ''' <summary>
    ''' Strikeouts specified text in PDF document.
    ''' </summary>
    ''' <param name="inputPdfFilename">The input PDF filename.</param>
    ''' <param name="outputPdfFilename">The output PDF filename.</param>
    ''' <param name="text">A text that must be striked out.</param>
    Public Shared Sub StrikeoutTextInPdfDocument(inputPdfFilename As String, outputPdfFilename As String, text As String)
        MarkupTextInPdfDocument(inputPdfFilename, outputPdfFilename, Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationType.StrikeOut, System.Drawing.Color.Red, text)
    End Sub
    
    ''' <summary>
    ''' Underlines specified text in PDF document.
    ''' </summary>
    ''' <param name="inputPdfFilename">The input PDF filename.</param>
    ''' <param name="outputPdfFilename">The output PDF filename.</param>
    ''' <param name="text">A text that must be underlined.</param>
    Public Shared Sub UnderlineTextInPdfDocument(inputPdfFilename As String, outputPdfFilename As String, text As String)
        MarkupTextInPdfDocument(inputPdfFilename, outputPdfFilename, Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationType.Underline, System.Drawing.Color.Green, text)
    End Sub
    
    ''' <summary>
    ''' Squiggly undeline specified text in PDF document.
    ''' </summary>
    ''' <param name="inputPdfFilename">The input PDF filename.</param>
    ''' <param name="outputPdfFilename">The output PDF filename.</param>
    ''' <param name="text">A text that must be squiggly underlined.</param>
    Public Shared Sub SquigglyUnderlineTextInPdfDocument(inputPdfFilename As String, outputPdfFilename As String, text As String)
        MarkupTextInPdfDocument(inputPdfFilename, outputPdfFilename, Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationType.Squiggly, System.Drawing.Color.Blue, text)
    End Sub
    
    ''' <summary>
    ''' Markups specified text in PDF document.
    ''' </summary>
    ''' <param name="inputPdfFilename">The input PDF filename.</param>
    ''' <param name="outputPdfFilename">The output PDF filename.</param>
    ''' <param name="color">The markup annotation color.</param>
    ''' <param name="annotationType">The markup annotation type.</param>
    ''' <param name="text">A text to markup.</param>
    Private Shared Sub MarkupTextInPdfDocument(inputPdfFilename As String, outputPdfFilename As String, annotationType As Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationType, color As System.Drawing.Color, text As String)
        ' open input PDF document
        Using document As New Vintasoft.Imaging.Pdf.PdfDocument(inputPdfFilename)
            ' for each PDF page
            For Each page As Vintasoft.Imaging.Pdf.Tree.PdfPage In document.Pages
                ' extract text region of PDF page
                Dim pageTextRegion As Vintasoft.Imaging.Text.TextRegion = page.ExtractTextRegion(False)
    
                ' search and markup all specified text on PDF page
                Dim index As Integer = 0
                Dim foundText As Vintasoft.Imaging.Text.TextRegion
                While True
                    ' find next text
                    foundText = pageTextRegion.FindText(text, index, False)
                    If foundText Is Nothing Then
                        Exit While
                    End If
                    index += foundText.Symbols.Length
    
                    ' markup found text
                    MarkupText(page, foundText, annotationType, color)
                End While
            Next
    
            ' save PDF document to output file
            document.SaveChanges(outputPdfFilename)
        End Using
    End Sub
    
    ''' <summary>
    ''' Markups specified text region in PDF page.
    ''' </summary>
    ''' <param name="page">The page.</param>
    ''' <param name="textRegion">The text region to markup.</param>
    ''' <param name="color">The markup annotation color.</param>
    ''' <param name="annotationType">The markup annotation type.</param>
    Private Shared Sub MarkupText(page As Vintasoft.Imaging.Pdf.Tree.PdfPage, textRegion As Vintasoft.Imaging.Text.TextRegion, annotationType As Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationType, color As System.Drawing.Color)
        ' create markup annotation of specified type
        Dim markupAnnotation As New Vintasoft.Imaging.Pdf.Tree.Annotations.PdfTextMarkupAnnotation(page, annotationType)
    
        ' set annotation properties
        markupAnnotation.SetArea(textRegion)
        markupAnnotation.Color = color
        markupAnnotation.Title = System.Environment.UserName
        markupAnnotation.CreationDate = System.DateTime.Now
    
        ' generate annotation appearance
        markupAnnotation.UpdateAppearance()
    
        ' add annotation to annotations of PDF page
        If page.Annotations Is Nothing Then
            page.Annotations = New Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationList(page.Document)
        End If
        page.Annotations.Add(markupAnnotation)
    End Sub
    
    
    /// <summary>
    /// Highlights specified text in PDF document.
    /// </summary>
    /// <param name="inputPdfFilename">The input PDF filename.</param>
    /// <param name="outputPdfFilename">The output PDF filename.</param>
    /// <param name="text">A text that must be highlighted.</param>
    public static void HiglightTextInPdfDocument(string inputPdfFilename, string outputPdfFilename, string text)
    {
        MarkupTextInPdfDocument(inputPdfFilename, outputPdfFilename, Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationType.Highlight, System.Drawing.Color.Orange, text);
    }
    
    /// <summary>
    /// Strikeouts specified text in PDF document.
    /// </summary>
    /// <param name="inputPdfFilename">The input PDF filename.</param>
    /// <param name="outputPdfFilename">The output PDF filename.</param>
    /// <param name="text">A text that must be striked out.</param>
    public static void StrikeoutTextInPdfDocument(string inputPdfFilename, string outputPdfFilename, string text)
    {
        MarkupTextInPdfDocument(inputPdfFilename, outputPdfFilename, Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationType.StrikeOut, System.Drawing.Color.Red, text);
    }
    
    /// <summary>
    /// Underlines specified text in PDF document.
    /// </summary>
    /// <param name="inputPdfFilename">The input PDF filename.</param>
    /// <param name="outputPdfFilename">The output PDF filename.</param>
    /// <param name="text">A text that must be underlined.</param>
    public static void UnderlineTextInPdfDocument(string inputPdfFilename, string outputPdfFilename, string text)
    {
        MarkupTextInPdfDocument(inputPdfFilename, outputPdfFilename, Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationType.Underline, System.Drawing.Color.Green, text);
    }
    
    /// <summary>
    /// Squiggly undeline specified text in PDF document.
    /// </summary>
    /// <param name="inputPdfFilename">The input PDF filename.</param>
    /// <param name="outputPdfFilename">The output PDF filename.</param>
    /// <param name="text">A text that must be squiggly underlined.</param>
    public static void SquigglyUnderlineTextInPdfDocument(string inputPdfFilename, string outputPdfFilename, string text)
    {
        MarkupTextInPdfDocument(inputPdfFilename, outputPdfFilename, Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationType.Squiggly, System.Drawing.Color.Blue, text);
    }
    
    /// <summary>
    /// Markups specified text in PDF document.
    /// </summary>
    /// <param name="inputPdfFilename">The input PDF filename.</param>
    /// <param name="outputPdfFilename">The output PDF filename.</param>
    /// <param name="color">The markup annotation color.</param>
    /// <param name="annotationType">The markup annotation type.</param>
    /// <param name="text">A text to markup.</param>
    private static void MarkupTextInPdfDocument(
        string inputPdfFilename,
        string outputPdfFilename,
        Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationType annotationType,
        System.Drawing.Color color,
        string text)
    {
        // open input PDF document
        using (Vintasoft.Imaging.Pdf.PdfDocument document = new Vintasoft.Imaging.Pdf.PdfDocument(inputPdfFilename))
        {
            // for each PDF page
            foreach (Vintasoft.Imaging.Pdf.Tree.PdfPage page in document.Pages)
            {
                // extract text region of PDF page
                Vintasoft.Imaging.Text.TextRegion pageTextRegion = page.ExtractTextRegion(false);
    
                // search and markup all specified text on PDF page
                int index = 0;
                Vintasoft.Imaging.Text.TextRegion foundText;
                while (true)
                {
                    // find next text
                    foundText = pageTextRegion.FindText(text, ref index, false);
                    if (foundText == null)
                        break;
                    index += foundText.Symbols.Length;
    
                    // markup found text
                    MarkupText(page, foundText, annotationType, color);
                }
            }
    
            // save PDF document to output file
            document.SaveChanges(outputPdfFilename);
        }
    }
    
    /// <summary>
    /// Markups specified text region in PDF page.
    /// </summary>
    /// <param name="page">The page.</param>
    /// <param name="textRegion">The text region to markup.</param>
    /// <param name="color">The markup annotation color.</param>
    /// <param name="annotationType">The markup annotation type.</param>
    private static void MarkupText(
        Vintasoft.Imaging.Pdf.Tree.PdfPage page,
        Vintasoft.Imaging.Text.TextRegion textRegion,
        Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationType annotationType,
        System.Drawing.Color color)
    {
        // create markup annotation of specified type
        Vintasoft.Imaging.Pdf.Tree.Annotations.PdfTextMarkupAnnotation markupAnnotation =
            new Vintasoft.Imaging.Pdf.Tree.Annotations.PdfTextMarkupAnnotation(page, annotationType);
    
        // set annotation properties
        markupAnnotation.SetArea(textRegion);
        markupAnnotation.Color = color;
        markupAnnotation.Title = System.Environment.UserName;
        markupAnnotation.CreationDate = System.DateTime.Now;
    
        // generate annotation appearance
        markupAnnotation.UpdateAppearance();
    
        // add annotation to annotations of PDF page
        if (page.Annotations == null)
            page.Annotations = new Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationList(page.Document);
        page.Annotations.Add(markupAnnotation);
    }
    
    

    Иерархия наследования

    System.Object
       Vintasoft.Imaging.Pdf.Tree.PdfTreeNodeBase
          Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotation
             Vintasoft.Imaging.Pdf.Tree.Annotations.PdfMarkupAnnotation
                Vintasoft.Imaging.Pdf.Tree.Annotations.PdfTextMarkupAnnotation

    Требования

    Целевые платформы: .NET 9; .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

    Смотрите также