最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2022年12月27日 08:09:41   作者:Code的那些事  
操作pdf是我們?nèi)粘i_發(fā)中經(jīng)常遇到的功能,下面這篇文章主要給大家介紹了關(guān)于.net?core利用PdfSharpCore操作PDF實例的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前序

使用PdfSharpCore請注意使用XGraphics基類,與System.Drawing 的Graphics類似,XGraphics 提供XColor(顏色)、XPen(畫筆)、XBrush(畫刷)、XFont(字體)、XPoint(位置)等對象。提供很多畫線,矩形,圓,扇形,多邊形,圖,文本等方法。源碼請查看https://github.com/ststeiger/PdfSharpCore/blob/master/PdfSharpCore/Drawing/XGraphics.cs

1.設(shè)置PDF擁有者的密碼,讓PDF防篡改。

代碼很簡單設(shè)置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公司版權(quán)所有",
                       font,
                       brush,
                       new XPoint(500, 500),
                        stringFormat);
            }
            doc.Save("b.pdf");

4.PDF 添加圖片

//第一步先加載PDF文件
            PdfDocument doc = PdfReader.Open(@"a.pdf", PdfDocumentOpenMode.Modify);
            //導(dǎo)入圖片(地址,文件流)
            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

總結(jié)

到此這篇關(guān)于.net core利用PdfSharpCore操作PDF實例的文章就介紹到這了,更多相關(guān).net core用PdfSharpCore操作PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • asp.NET開發(fā)中正則表達式中BUG分析

    asp.NET開發(fā)中正則表達式中BUG分析

    又發(fā)現(xiàn)了一個 .net的bug!最近在使用正則表達式的時候發(fā)現(xiàn):在忽略大小寫的時候,匹配值從 0xff 到 0xffff 之間的所有字符,正則表達式竟然也能匹配兩個 ASCII 字符:i(code: 0x69) 和 I(code: 0x49);但是仍然不能匹配其他的 ASCII 字母和數(shù)字。
    2008-10-10
  • ASP.NET Cookie 操作實現(xiàn)

    ASP.NET Cookie 操作實現(xiàn)

    本節(jié)中的主題描述如何在 ASP.NET Web 應(yīng)用程序中創(chuàng)建 Cookie。Cookie 是一些小的文本文件,服務(wù)器和瀏覽器在收到每個頁請求時交換它們,您還可以使用這些小文本文件來存儲幫助針對每個用戶自定義您的應(yīng)用程序的信息。
    2009-11-11
  • asp.net core中靈活的配置方式詳解

    asp.net core中靈活的配置方式詳解

    這篇文章主要給的阿加介紹了關(guān)于在asp.net core中靈活的配置方式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07
  • ASP.NET對無序列表批量操作的三種方法小結(jié)

    ASP.NET對無序列表批量操作的三種方法小結(jié)

    在網(wǎng)頁開發(fā)中,經(jīng)常要用到無序列表。事實上在符合W3C標(biāo)準(zhǔn)的div+css布局中,無序列表被大量使用,ASP.NET雖然內(nèi)置了BulletedList控件,用于創(chuàng)建和操作無序列表,但感覺不太好用
    2012-01-01
  • .net調(diào)用JScript腳本及JS url加密解密

    .net調(diào)用JScript腳本及JS url加密解密

    .net調(diào)用JScript腳本及JS url加密解密,需要的朋友可以參考一下
    2013-03-03
  • .net5?使用Hangfire的過程記錄

    .net5?使用Hangfire的過程記錄

    最近項目遇到這樣的需求,需要實現(xiàn)根據(jù)領(lǐng)取時間改變優(yōu)惠券狀態(tài)的功能,本文給大家分享.net5?使用Hangfire的過程記錄,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • Microsoft Visual Studio 2010下如何添加命令提示行

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

    這篇文章主要介紹了Microsoft Visual Studio 2010下如何添加命令提示行的相關(guān)資料,需要的朋友可以參考下
    2015-11-11
  • ASP.NET Core 3.0遷移的完美避坑指南

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

    這篇文章主要給大家介紹了關(guān)于ASP.NET Core 3.0遷移的完美避坑指南,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用ASP.NET Core 3.0具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Asp.net mvc 權(quán)限過濾和單點登錄(禁止重復(fù)登錄)

    Asp.net mvc 權(quán)限過濾和單點登錄(禁止重復(fù)登錄)

    這篇文章主要介紹了Asp.net mvc 權(quán)限過濾和單點登錄(禁止重復(fù)登錄)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-12-12
  • 使用.NET升級助手將.NET?Framework項目升級為.NET?6

    使用.NET升級助手將.NET?Framework項目升級為.NET?6

    這篇文章介紹了使用.NET升級助手將.NET?Framework項目升級為.NET?6的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04

最新評論

保德县| 襄樊市| 柏乡县| 呼和浩特市| 林芝县| 通山县| 邛崃市| 集安市| 长宁县| 水富县| 景德镇市| 资源县| 三原县| 沿河| 宁德市| 广西| 甘南县| 双峰县| 黑水县| 封丘县| 扎鲁特旗| 达尔| 高碑店市| 临颍县| 巨鹿县| 邵阳县| 北流市| 阿坝| 梨树县| 浑源县| 那曲县| 油尖旺区| 巴林右旗| 逊克县| 曲靖市| 天水市| 海兴县| 延津县| 闽侯县| 冕宁县| 衡东县|