VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • VB.NET PDF 文档水印添加技术详解

VB.NET PDF 文档水印添加技术详解

在文档处理领域,给 PDF 文档添加水印是一种常见的需求,无论是为了保护文档版权还是增加文档的可识别性。本文将深入探讨如何使用 VB.NET 给 PDF 文档添加文本和图像水印,提供详细的实现步骤和代码示例。

一、使用 iTextSharp 添加文本水印

  1. 添加引用

在项目中添加对 iTextSharp 库的引用。可以通过 NuGet 包管理器安装 iTextSharp:

Install-Package iTextSharp
  1. 实现代码
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf

Module Module1
    Sub Main()
        Dim inputPath As String = "input.pdf"
        Dim outputPath As String = "output.pdf"
        Dim watermarkText As String = "CONFIDENTIAL"

        AddTextWatermark(inputPath, outputPath, watermarkText)
    End Sub

    Sub AddTextWatermark(inputPath As String, outputPath As String, watermarkText As String)
        Dim reader As New PdfReader(inputPath)
        Dim stamper As PdfStamper = Nothing
        Try
            stamper = New PdfStamper(reader, New FileStream(outputPath, FileMode.Create))
            Dim total As Integer = reader.NumberOfPages
            Dim font As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED)
            Dim color As BaseColor = BaseColor.LIGHT_GRAY
            Dim fontSize As Single = 50.0F
            Dim transparency As Single = 0.2F

            For i As Integer = 1 To total
                Dim contentByte As PdfContentByte = stamper.GetOverContent(i)
                Dim pageSize As Rectangle = reader.GetPageSize(i)
                Dim width As Single = pageSize.Width
                Dim height As Single = pageSize.Height

                contentByte.BeginText()
                contentByte.SetFontAndSize(font, fontSize)
                contentByte.SetColorFill(color)
                contentByte.SetRenderingHint(RenderingHint.KEY_STROKE_WIDTH, 0.5F)

                Dim textWidth As Single = font.GetWidthPoint(watermarkText, fontSize)
                Dim textHeight As Single = fontSize

                Dim x As Single = (width - textWidth) / 2
                Dim y As Single = (height - textHeight) / 2

                contentByte.ShowTextAligned(Element.ALIGN_CENTER, watermarkText, x + textWidth / 2, y + textHeight / 2, 45)
                contentByte.EndText()
            Next
        Finally
            If stamper IsNot Nothing Then
                stamper.Close()
            End If
            reader.Close()
        End Try
    End Sub
End Module
  1. 代码说明
  • 创建 PdfReader 对象读取输入的 PDF 文件。
  • 创建 PdfStamper 对象用于在 PDF 上添加内容。
  • 设置水印的字体、颜色、大小和透明度。
  • 遍历 PDF 的每一页,在每一页上绘制水印文本。
  • 保存修改后的 PDF 文件。

二、使用 iTextSharp 添加图像水印

  1. 实现代码
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.text.pdf.parser

Module Module1
    Sub Main()
        Dim inputPath As String = "input.pdf"
        Dim outputPath As String = "output.pdf"
        Dim watermarkImage As String = "watermark.png"

        AddImageWatermark(inputPath, outputPath, watermarkImage)
    End Sub

    Sub AddImageWatermark(inputPath As String, outputPath As String, watermarkImage As String)
        Dim reader As New PdfReader(inputPath)
        Dim stamper As PdfStamper = Nothing
        Try
            stamper = New PdfStamper(reader, New FileStream(outputPath, FileMode.Create))
            Dim total As Integer = reader.NumberOfPages
            Dim image As Image = Image.GetInstance(watermarkImage)
            image.SetAbsolutePosition(50, 50)
            image.ScalePercent(50)

            For i As Integer = 1 To total
                Dim contentByte As PdfContentByte = stamper.GetOverContent(i)
                contentByte.AddImage(image)
            Next
        Finally
            If stamper IsNot Nothing Then
                stamper.Close()
            End If
            reader.Close()
        End Try
    End Sub
End Module
  1. 代码说明
  • 创建 PdfReader 对象读取输入的 PDF 文件。
  • 创建 PdfStamper 对象用于在 PDF 上添加内容。
  • 加载水印图像并设置其位置和大小。
  • 遍历 PDF 的每一页,在每一页上添加水印图像。
  • 保存修改后的 PDF 文件。

三、使用 Spire.PDF 添加文本水印

  1. 添加引用

在项目中添加对 Spire.PDF 库的引用。可以通过 NuGet 包管理器安装 Spire.PDF:

Install-Package Spire.Pdf
  1. 实现代码
Imports Spire.Pdf
Imports Spire.Pdf.Graphics

Module Module1
    Sub Main()
        Dim inputPath As String = "input.pdf"
        Dim outputPath As String = "output.pdf"
        Dim watermarkText As String = "CONFIDENTIAL"

        AddTextWatermark(inputPath, outputPath, watermarkText)
    End Sub

    Sub AddTextWatermark(inputPath As String, outputPath As String, watermarkText As String)
        Dim pdf As New PdfDocument()
        pdf.LoadFromFile(inputPath)

        Dim font As New PdfTrueTypeFont(New Font("Arial", 50F), True)
        Dim textSize As SizeF = font.MeasureString(watermarkText)
        Dim offsetX As Single = (textSize.Width * Math.Sqrt(2)) / 4
        Dim offsetY As Single = (textSize.Height * Math.Sqrt(2)) / 4

        For Each page As PdfPageBase In pdf.Pages
            page.Canvas.SetTransparency(0.8F)
            page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offsetX - offsetY, page.Canvas.Size.Height / 2 + offsetX - offsetY)
            page.Canvas.RotateTransform(-45)
            page.Canvas.DrawString(watermarkText, font, PdfBrushes.LightGray, 0, 0)
        Next

        pdf.SaveToFile(outputPath)
    End Sub
End Module
  1. 代码说明
  • 创建 PdfDocument 对象并加载输入的 PDF 文件。
  • 创建字体对象并设置水印文本。
  • 计算水印文本的尺寸和偏移量。
  • 遍历 PDF 的每一页,在每一页上绘制水印文本。
  • 保存修改后的 PDF 文件。

四、总结

通过本文的介绍,您应该能够使用 VB.NET 给 PDF 文档添加文本和图像水印。无论是使用 iTextSharp 还是 Spire.PDF,都可以实现这一功能。在实际应用中,可以根据项目需求和库的特性选择合适的方法来实现 PDF 文档的水印添加。希望本文能够帮助您更好地理解和应用这一技术。

最后,如果你对python语言还有任何疑问或者需要进一步的帮助,请访问https://www.xin3721.com 本站原创,转载请注明出处:https://www.xin3721.com


相关教程