Добавить водяной знак в файл PDF с помощью PDFSHarp с VB.Net - PullRequest
0 голосов
/ 02 августа 2020

Я использую PDFSharp в своей программе VB. Net и не могу заставить водяной знак работать. Я пытаюсь разместить водяной знак с указанной высотой c и в указанном месте c. Код обрабатывается без ошибок, но в файле нет водяного знака.

Вот функция. Я передаю имя файла pdf и две строковые переменные, которые я объединяю. Любая помощь будет принята с благодарностью.

Sub PDFWatermark(ByRef PDFName As String, ByRef PDFProject As String, PDFQty As String)
    Dim Watermark As String
    Watermark = "Project: " + PDFProject + " - Project Qty: " + PDFQty

    Dim PDFemSize As Integer = 10
    Dim PDFFont As New XFont("Times New Roman", PDFemSize, XFontStyle.BoldItalic)
    Dim PDFDocument = PdfReader.Open(PDFName)
    If (PDFDocument.Version < 14) Then
        PDFDocument.Version = 14
    End If

    Dim page As PdfPage = PDFDocument.Pages(0)

    'Get an XGraphics object for drawing beneath the existing content.
    Dim gfx = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Prepend)

    '// Create a string format.
    Dim Format As New XStringFormat()
    Format.Alignment = XStringAlignment.Near
    Format.LineAlignment = XLineAlignment.Near

    '// Create a dimmed red brush.
    XBrush Brush = New XSolidBrush(XColor.FromArgb(128, 255, 0, 0))

    '// Draw the string.
    gfx.DrawString(Watermark, PDFFont, Brush, New XPoint(100, 100), Format)

End Sub

1 Ответ

1 голос
/ 02 августа 2020

Не похоже, что вы на самом деле сохраняете изменения, внесенные в PDF-файл в памяти, попробуйте сохранить файл с помощью метода .Save:

PDFDocument.Save(fileName)

Кроме того, вам необходимо удалить XGraphics объект, вы можете столкнуться с проблемой утечки памяти:

Using gfx as XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Prepend)
...
End Using
...