.net core-利用PdfSharpCore 操作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);

 .net core-利用PdfSharpCore 操作PDF实例

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);                 }             }

.net core-利用PdfSharpCore 操作PDF实例

(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");

.net core-利用PdfSharpCore 操作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");

.net core-利用PdfSharpCore 操作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");

.net core-利用PdfSharpCore 操作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");

 

 .net core-利用PdfSharpCore 操作PDF实例

 

 docker 模式,需要在 dockerfile 中添加如下配置

RUN apt-get update && apt-get -y install libfontconfig1

如需要指定字体,请将字段文件进行拷贝(比如雅黑)

COPY /xx/xxx/SIMHEI.TTF /usr/share/fonts/SIMHEI.TTF

发表评论

相关文章