Ink Annotation in PDF is a freehand graffiti-like shape; this type of annotation can arbitrarily specify the position and number of vertices of the shape, and through the specified vertices, the program will connect the points to draw a smooth curve. Below, we will introduce how to add this annotation in PDF through C# program code.
1. dll reference
Step 1 : Open “Solution Explorer” in Visual Studio – right mouse click “References” – “Manage NuGet Packages”.
Step 2 : Select “Browse” – enter the search content in the search box, select the search result, and click “Install”.
Step 3: Click “OK” – “Accept” in sequence, and then wait for the program to complete the installation.
Or, through official channels, download the package Spire.PDF for .NET to the local. After decompression, reference the Spire.Pdf.dll file in the BIN folder to the VS program.
2. Code example
When adding annotations, in addition to customizing the position and number of each point, you can also set ink color, line width, transparency, annotation content, name, etc. Here are the steps of the code implementation:
- Create an object of the PdfDocument class and load the PDF document through the PdfDocument.LoadFromFile(String fileName) method.
- Get the specified page of the PDF through the PdfDocument.Pages[int Index] property.
- Creates a collection of objects of type int, where the elements of the collection are the ink vertices.
- Create an instance of the PdfInkAnnotation class. And set the ink color, width, annotation content and other formats through the properties provided by this class.
- Call the PdfAnnotationCollection.Add(PdfAnnotation annotation) method provided by the PdfPageBase.AnnotationsWidget property to add annotations to the PDF.
- Finally, save the PDF document to the specified path through the PdfDocument.SaveToFile(string filename, FileFormat fileFormat) method.
C#
using Spire.Pdf; using Spire.Pdf.Annotations; using System.Collections.Generic; using System.Drawing; namespace InkAnnotation { class Program { static void Main( string [] args) { // Load PDF document PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile( " test.pdf " ); // Get the first page PdfPageBase pdfPage = pdf.Pages[ 0 ]; // Set the ink coordinate point position List< int []> inkList = new List< int []> (); int [] intPoints = new int [] { 370 , 700 , 120 , 720 , 110 , 760 , 220 , 800 , 270 , 790 , 350 , 770 , 350 , 670 }; inkList.Add(intPoints); // Add ink annotation to PDF page PdfInkAnnotation inkannotation = new PdfInkAnnotation(inkList); inkannotation.Color = Color.MediumVioletRed; inkannotation.Border.Width = 6 ; inkannotation.Opacity = 0.5f ; inkannotation.Text = " This is an ink annotation. " ; inkannotation.Name = " Manager " ; pdfPage.AnnotationsWidget.Add(inkannotation); // Save the document Pdf.SaveToFile( " AddInkAnnotation.pdf " ,FileFormat.PDF); System.Diagnostics.Process.Start( " AddInkAnnotation.pdf " ); } } }
vb.net
Imports Spire.Pdf Imports Spire.Pdf.Annotations Imports System.Collections.Generic Imports System.Drawing Namespace InkAnnotation Class Program Private Shared Sub Main(args As String ()) ' Load PDF document Dim pdf As New PdfDocument() pdf.LoadFromFile( " test.pdf " ) ' Get the first page Dim pdfPage As PdfPageBase = pdf.Pages( 0 ) ' Set the ink coordinate point position Dim inkList As New List( Of Integer ())() Dim intPoints As Integer () = New Integer () { 370 , 700 , 120 , 720 , 110 , 760 , _ 220 , 800 , 270 , 790 , 350 , 770 , _ 350 , 670 } inkList.Add(intPoints) ' Add ink annotation to PDF page Dim inkannotation As New PdfInkAnnotation(inkList) inkannotation.Color = Color.MediumVioletRed inkannotation.Border.Width = 6 inkannotation.Opacity = 0.5F _ inkannotation.Text = " This is an ink annotation. " inkannotation.Name = " Manager " pdfPage.AnnotationsWidget.Add(inkannotation) ' Save the document pdf.SaveToFile( " AddInkAnnotation.pdf " , FileFormat.PDF) End Sub End Class End Namespace
Annotation effect:
Similar Posts:
- A problem with 0 document. Documentelement. Clientwidth
- Solution to the problem of consider defining a bean of type ‘xxx’ in your configuration in spring boot auto injection
- [Solved] error: resource style/AppTheme (aka com.example.myapplication:style/AppTheme
- Spring cloud uses feignclient to start and report an error
- Solve the problem that the highlighted content exceeds the visual area when the introjs scroll bar appears
- ggplot2 texts : Add text annotations to a graph in R software
- [Solved] Java.lang.IllegalStateException: Circular dependencies cannot exist in RelativeLayout
- Two ways to implement Spring Boot’s scanmapper interface class
- Document.body.clientheight cannot get the browser page height correctly
- Error: no bean named xxxxx available [How to Solve]