免费资源网 – https://freexyz.cn/
目录
- 前序
 - 1.设置PDF拥有者的密码,让PDF防篡改。
 - 2.PDF添加页眉和页脚
 - (2)添加页眉
 - (3)添加页脚
 - 3.PDF添加水印文字
 - 4.PDF 添加图片
 - 总结
 
前序
使用PdfSharpCore请注意使用XGraphics基类,与System.Drawing 的Graphics类似,XGraphics 提供XColor(颜色)、XPen(画笔)、XBrush(画刷)、XFont(字体)、XPoint(位置)等对象。提供很多画线,矩形,圆,扇形,多边形,图,文本等方法。源码请查看https://github.com/ststeiger/PdfSharpCore/blob/master/PdfSharpCore/Drawing/XGraphics.cs
1.设置PDF拥有者的密码,让PDF防篡改。
代码很简单设置PdfDocument.SecuritySettings.OwnerPassword
            PdfDocument doc = PdfReader.Open(@"a.pdf", PdfDocumentOpenMode.Modify);
            doc.SecuritySettings.OwnerPassword = "123";
            var filePath = $"b.pdf";
            doc.Save(filePath);

2.PDF添加页眉和页脚
(1)添加页码显示
XStringFormats 指定文本的位置:详请查看https://github.com/ststeiger/PdfSharpCore/blob/master/PdfSharpCore/Drawing/XStringFormats.cs
XFont font = new XFont("SimHei", 8);
            XBrush brush = XBrushes.Black;
            PdfDocument doc = PdfReader.Open(@"a.pdf", PdfDocumentOpenMode.Modify);
            for (int i = 0; i < doc.Pages.Count; i++)
            {
                PdfPage page = doc.Pages[i];
                XRect layoutRectangle = new XRect(0, page.Height - font.Height, page.Width, font.Height);
                using (XGraphics gfx = XGraphics.FromPdfPage(page))
                {
                    gfx.DrawString(
                        $"第{(i + 1).ToString()}页/共{doc.Pages.Count}页",
                        font,
                        brush,
                        layoutRectangle,
                        XStringFormats.BottomLeft);
                }
            }

(2)添加页眉
XFont font = new XFont("SimHei", 8);
            XBrush brush = new XSolidBrush(XColor.FromArgb(128, 255, 0, 0));
            XPoint point = new XPoint(90, 20);
            PdfDocument doc = PdfReader.Open(@"a.pdf", PdfDocumentOpenMode.Modify);
            for (int i = 0; i < doc.Pages.Count; i++)
            {
                var renderer = XGraphics.FromPdfPage(doc.Pages[i]);
                XSize pageSize = renderer.PageSize;
                renderer.DrawString("xxx有限公司", font, brush, point);
                XPen pen = new XPen(XBrushes.Gray, 0.5f);
                renderer.DrawLine(pen, point.X, point.Y, pageSize.Width - point.X, point.Y);
            }
            doc.Save("b.pdf");

(3)添加页脚
XFont font = new XFont("SimHei", 8);
            XBrush brush = new XSolidBrush(XColor.FromArgb(128, 255, 0, 0));
            PdfDocument doc = PdfReader.Open(@"a.pdf", PdfDocumentOpenMode.Modify);
            for (int i = 0; i < doc.Pages.Count; i++)
            {
                var renderer = XGraphics.FromPdfPage(doc.Pages[i]);
                XSize pageSize = renderer.PageSize;
                XPoint point = new XPoint(90, pageSize.Height-20);
                renderer.DrawString("xxx有限公司", font, brush, point);
                XPen pen = new XPen(XBrushes.Gray, 0.5f);
                renderer.DrawLine(pen, point.X, point.Y-10, pageSize.Width - point.X, point.Y-10);
            }
            doc.Save("b.pdf");

3.PDF添加水印文字
XFont font = new XFont("SimHei", 8);
            XBrush brush =new XSolidBrush(XColor.FromArgb(128, 255, 0, 0));
            PdfDocument doc = PdfReader.Open(@"a.pdf", PdfDocumentOpenMode.Modify);
            for (int i = 0; i < doc.Pages.Count; i++)
            {
                XStringFormat stringFormat = new XStringFormat();
                stringFormat.Alignment = XStringAlignment.Center;
                stringFormat.LineAlignment = XLineAlignment.Center;
                PdfPage page = doc.Pages[i];
                var gfx = XGraphics.FromPdfPage(page, XPageDirection.Downwards);
                gfx.DrawString(
                       $"xxx公司版权所有",
                       font,
                       brush,
                       new XPoint(500, 500),
                        stringFormat);
            }
            doc.Save("b.pdf");

4.PDF 添加图片
//第一步先加载PDF文件
            PdfDocument doc = PdfReader.Open(@"a.pdf", PdfDocumentOpenMode.Modify);
            //导入图片(地址,文件流)
            var background = XImage.FromFile(@"QRCode.png");
            // var background = XImage.FromStream(()=> stream);
            //指定PDF 的页
            PdfPage page = doc.Pages[0];
            var gfx = XGraphics.FromPdfPage(page, XPageDirection.Downwards);
            //写入指定位置
            gfx.DrawImage(background, 20, 20, 250, 140);
            doc.Save("b.pdf");
docker 模式,需要在 dockerfile 中添加如下配置
RUN apt-get update && apt-get -y install libfontconfig1
如需要指定字体,请将字段文件进行拷贝(比如雅黑)
COPY /xx/xxx/SIMHEI.TTF /usr/share/fonts/SIMHEI.TTF
总结
免费资源网 – https://freexyz.cn/
	声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
		
评论(0)