.net core利用PdfSharpCore操作PDF实例教程

 更新时间:2022年12月27日 08:09:41   作者:Code的那些事  
操作pdf是我们日常开发中经常遇到的功能,下面这篇文章主要给大家介绍了关于.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);

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

总结

到此这篇关于.net core利用PdfSharpCore操作PDF实例的文章就介绍到这了,更多相关.net core用PdfSharpCore操作PDF内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • asp.NET开发中正则表达式中BUG分析

    asp.NET开发中正则表达式中BUG分析

    又发现了一个 .net的bug!最近在使用正则表达式的时候发现:在忽略大小写的时候,匹配值从 0xff 到 0xffff 之间的所有字符,正则表达式竟然也能匹配两个 ASCII 字符:i(code: 0x69) 和 I(code: 0x49);但是仍然不能匹配其他的 ASCII 字母和数字。
    2008-10-10
  • ASP.NET Cookie 操作实现

    ASP.NET Cookie 操作实现

    本节中的主题描述如何在 ASP.NET Web 应用程序中创建 Cookie。Cookie 是一些小的文本文件,服务器和浏览器在收到每个页请求时交换它们,您还可以使用这些小文本文件来存储帮助针对每个用户自定义您的应用程序的信息。
    2009-11-11
  • asp.net core中灵活的配置方式详解

    asp.net core中灵活的配置方式详解

    这篇文章主要给的阿加介绍了关于在asp.net core中灵活的配置方式的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-07-07
  • ASP.NET对无序列表批量操作的三种方法小结

    ASP.NET对无序列表批量操作的三种方法小结

    在网页开发中,经常要用到无序列表。事实上在符合W3C标准的div+css布局中,无序列表被大量使用,ASP.NET虽然内置了BulletedList控件,用于创建和操作无序列表,但感觉不太好用
    2012-01-01
  • .net调用JScript脚本及JS url加密解密

    .net调用JScript脚本及JS url加密解密

    .net调用JScript脚本及JS url加密解密,需要的朋友可以参考一下
    2013-03-03
  • .net5 使用Hangfire的过程记录

    .net5 使用Hangfire的过程记录

    最近项目遇到这样的需求,需要实现根据领取时间改变优惠券状态的功能,本文给大家分享.net5 使用Hangfire的过程记录,感兴趣的朋友跟随小编一起看看吧
    2022-02-02
  • Microsoft Visual Studio 2010下如何添加命令提示行

    Microsoft Visual Studio 2010下如何添加命令提示行

    这篇文章主要介绍了Microsoft Visual Studio 2010下如何添加命令提示行的相关资料,需要的朋友可以参考下
    2015-11-11
  • ASP.NET Core 3.0迁移的完美避坑指南

    ASP.NET Core 3.0迁移的完美避坑指南

    这篇文章主要给大家介绍了关于ASP.NET Core 3.0迁移的完美避坑指南,文中通过示例代码介绍的非常详细,对大家学习或者使用ASP.NET Core 3.0具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • Asp.net mvc 权限过滤和单点登录(禁止重复登录)

    Asp.net mvc 权限过滤和单点登录(禁止重复登录)

    这篇文章主要介绍了Asp.net mvc 权限过滤和单点登录(禁止重复登录)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • 使用.NET升级助手将.NET Framework项目升级为.NET 6

    使用.NET升级助手将.NET Framework项目升级为.NET 6

    这篇文章介绍了使用.NET升级助手将.NET Framework项目升级为.NET 6的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04

最新评论