PDFsharp-景观页面底部的水印

问题描述 投票:-1回答:1

我正在使用PDFsharp尝试在横向PDF页面的底部添加一些文本,但是它总是垂直偏移,我将文本设置得越大,使其越接近页面底部,但是我想使用20号字体。如果使用循环算出最大可能的尺寸,则水印会完美地位于页面底部。我尝试了许多不同的方法,但无法锻炼我做错的事情。]

   For Each Page As PdfPage In PDF.Pages
            Dim Graphics As XGraphics = XGraphics.FromPdfPage(Page, XGraphicsPdfPageOptions.Append)
            Dim FontSize As Integer = 20
            Dim Font As New XFont("Arial", FontSize, XFontStyle.Bold)
            Dim WaterMarkSize As XSize = Graphics.MeasureString(Watermark, Font)
            Dim Brush As New XSolidBrush(XColor.FromArgb(255, 255, 0, 0))

            If Page.Orientation = PdfSharp.PageOrientation.Portrait Then
                Graphics.DrawString(Watermark, Font, Brush, New XRect(0, Page.Height, Page.Width, 0), XStringFormats.BottomCenter)
            Else
                Page.Orientation = PageOrientation.Portrait
                Graphics.TranslateTransform(Page.Width.Value / 2, Page.Height.Value / 2)
                Graphics.RotateTransform(90)
                Graphics.TranslateTransform(-Page.Width.Value / 2, -Page.Height.Value / 2)

                Dim Format As New XStringFormat()
                Format.Alignment = XStringAlignment.Near
                Format.LineAlignment = XLineAlignment.Near
                Graphics.DrawString(Watermark, Font, Brush, New XPoint((Page.Width.Value - WaterMarkSize.Width) / 2, Page.Width.Value), Format)
            End If
    Next

结果.....enter image description here

有什么想法吗?

.net vb.net pdf watermark pdfsharp
1个回答
0
投票

DrawString调用中的Y坐标应基于page.Height,而不是page.Width

如果使用LineAlignment而未调整字体高度,则必须使用其他page.Width

© www.soinside.com 2019 - 2024. All rights reserved.