前序

使用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

最新文章

  1. 【转】CSS:table-cell详解
  2. Linux下安装php加速软件Xcache
  3. 151003-动起来-Javascript
  4. 绘制n边形:用两个以上的控件来控制矩形的颜色、大小、位置及空实心(程序代写)
  5. ubuntu 设置静态ip
  6. rsync学习
  7. (转).net开发者对android开发一周的学习体会
  8. [转]Linux下转换字符集(UTF8转换)
  9. SpringMVC+Mybatis(SMM)+mybatis-generate
  10. LeetCodeOJ. Longest Common Prefix
  11. iOS图片缓存框架SDWebImage
  12. ER图是啥?
  13. c# Expression 扩展
  14. python 函数的参数的几种类型
  15. IBM X3650 M3/M4的服务器装系统
  16. HttpRequest中常见的四种Content-Type(转)
  17. 使用mapreduce来分析网站的log日志
  18. CentOS 7 安装. Net Core SDK 2.0
  19. Potplayer快捷键
  20. BZOJ1001 BeiJing2006 狼抓兔子 【网络流-最小割】*

热门文章

  1. C#-2 C#程序
  2. Spring笔记四
  3. C++面向对象编程之虚函数与多态和继承和复合下的构造和析构
  4. strut2 标签加载图表。
  5. Windows docker环境安装
  6. 什么是ForkJoin?看这一篇就能掌握!
  7. 苹果iOS App上架流程,非iOS开发人员上架教程
  8. SpringBoot简单快速入门操作
  9. @confirguration(proxyBeanMethods = false)的作用,如何选择Full模式和Lite模式
  10. Java 多线程写zip文件遇到的错误 write beyond end of stream!