当前位置: 代码网 > it编程>编程语言>Asp.net > .net core利用PdfSharpCore操作PDF实例教程

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

2024年05月18日 Asp.net 我要评论
前序使用pdfsharpcore请注意使用xgraphics基类,与system.drawing 的graphics类似,xgraphics 提供xcolor(颜色)、xpen(画笔)、xbrush(

前序

使用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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com