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

在C#中生成PDF的步驟詳解

 更新時(shí)間:2024年10月31日 08:30:13   作者:TeamDev  
在?.NET?世界中,存在許多?PDF?庫(kù),但我們發(fā)現(xiàn),使用集成瀏覽器生成?PDF?更為簡(jiǎn)單,由于?DotNetBrowser?可以在完全脫離屏幕的情況下工作,本文給大家介紹了如何在?C#?中生成?PDF,需要的朋友可以參考下

此分步教程展示了如何使用 DotNetBrowserC# 中生成 PDF 文件。

在 .NET 世界中,存在許多 PDF 庫(kù)。但我們發(fā)現(xiàn),使用集成瀏覽器生成 PDF 更為簡(jiǎn)單。由于 DotNetBrowser 可以在完全脫離屏幕的情況下工作,因此無(wú)論是在 Windows 還是 Linux 的服務(wù)器上,您都可以使用它。

算法很簡(jiǎn)單:

  • 加載頁(yè)面。
  • 填充頁(yè)面數(shù)據(jù)。
  • 配置打印機(jī)。
  • 將頁(yè)面打印為 PDF。

步驟 1: 創(chuàng)建項(xiàng)目

對(duì)于我們的任務(wù),我們不需要用戶界面。因此,我們創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序。

打開(kāi)終端或命令提示符,導(dǎo)航到所需的目錄,并運(yùn)行以下命令:

dotnet new console -o PdfGeneration

步驟 2: 集成 DotNetBrowser

將目錄更改為 PdfGeneration 并從 NuGet 添加 DotNetBrowser 包:

# 對(duì)于 Windows 平臺(tái):
dotnet add package DotNetBrowser

# 對(duì)于其他平臺(tái):
dotnet add package DotNetBrowser.Linux-x64
dotnet add package DotNetBrowser.Linux-arm64
dotnet add package DotNetBrowser.macOS-x64
dotnet add package DotNetBrowser.macOS-arm64

之后, 獲取您的免費(fèi)許可證以開(kāi)始使用 DotNetBrowser。

步驟 3: 加載頁(yè)面

創(chuàng)建一個(gè)簡(jiǎn)單的控制臺(tái)應(yīng)用程序,以啟動(dòng) DotNetBrowser 并加載帶有模板的頁(yè)面。

class Program
{
    private static async Task Main()
    {
        var options = new EngineOptions.Builder
        {
            RenderingMode = RenderingMode.OffScreen,
            LicenseKey = "您的許可證密鑰"
        }.Build();

        using var engine = EngineFactory.Create(engineOptions);
        using var browser = engine.CreateBrowser();

        // 頁(yè)面是項(xiàng)目中的一個(gè)資源。
        var pageUrl = Path.GetFullPath("template.html");   
        await browser.Navigation.LoadUrl(pageUrl);
    }
}

這是一個(gè)在常規(guī)瀏覽器中加載的普通頁(yè)面。因此,您可以利用任何 JavaScript 庫(kù)(如 plotly.js 或 D3.js)、WebGL、SVG 圖形、或者 Chromium 中可用的其他任何技術(shù)。

步驟 4: 填充頁(yè)面數(shù)據(jù)

要填充頁(yè)面數(shù)據(jù),請(qǐng)使用 DOM API 或執(zhí)行任何 JavaScript 代碼。我們將使用嵌入到頁(yè)面中的幾個(gè) JavaScript 函數(shù):

private static void FillInData(IBrowser browser)
{
    var accountNumber = "123-4567";
    var name = "李白";
    var address = "1640 河濱大道";
    var reportingPeriod = "1985 年 10 月 25 日至 11 月 25 日";
    browser.MainFrame.ExecuteJavaScript(
        $"setBillInfo('{accountNumber}', '{name}', '{address}', '{reportingPeriod}')"
    );

    var dayCost = 500; // 美元。
    var dayUsage = 1.21; // 吉瓦特。
    var nightCost = 312;
    var nightUsage = 88;

    browser.MainFrame.ExecuteJavaScript(
        $"addCharge('Day Tariff', {dayUsage}, {dayCost});" +
        $"addCharge('Night Tariff', {nightUsage}, {nightCost});"
    );
}

步驟 5: 配置打印設(shè)置

指示瀏覽器自動(dòng)打印,并配置打印參數(shù):

private static TaskCompletionSource<string> ConfigurePrinting(IBrowser browser)
{
    // 指示瀏覽器自動(dòng)打印,而不是顯示打印預(yù)覽。
    browser.RequestPrintHandler = 
        new Handler<RequestPrintParameters, RequestPrintResponse>(
            p => RequestPrintResponse.Print()
        );

    TaskCompletionSource<string> whenCompleted = new();
    // 當(dāng)瀏覽器打印 HTML 頁(yè)面時(shí)。
    browser.PrintHtmlContentHandler = 
        new Handler<PrintHtmlContentParameters, PrintHtmlContentResponse>(
            parameters =>
            {
                // 使用 PDF 打印機(jī)。
                var printer = parameters.Printers.Pdf;
                var job = printer.PrintJob;
    
                // 為 PDF 文件生成隨機(jī)名稱。
                var guid = Guid.NewGuid().ToString();
                var path = Path.GetFullPath($"{guid}.pdf");
                job.Settings.PdfFilePath = path;
    
                // 去除邊緣的空白區(qū)域。
                job.Settings.PageMargins = PageMargins.None;
                // 移除瀏覽器默認(rèn)的頁(yè)眉和頁(yè)腳。
                job.Settings.PrintingHeaderFooterEnabled = false;
                job.PrintCompleted += (_, _) => whenCompleted.SetResult(path);

                // 繼續(xù)打印。
                return PrintHtmlContentResponse.Print(printer);
            });
    return whenCompleted;
}

步驟 6: 生成 PDF 文件

整合以上步驟,開(kāi)始打印并等待完成:

private static async Task Main()
{
    var engineOptions = new EngineOptions.Builder
    {
        RenderingMode = RenderingMode.OffScreen,
        LicenseKey = "您的許可證密鑰"
    }.Build();

    using var engine = EngineFactory.Create(engineOptions);
    using var browser = engine.CreateBrowser();
    
    await browser.Navigation.LoadUrl(Path.GetFullPath("template.html"));
    
    FillInData(browser);
    var whenPrintCompleted = ConfigurePrinting(browser);
    browser.MainFrame.Print();
    var resultPath = await whenPrintCompleted.Task;
}

結(jié)果

運(yùn)行程序:

dotnet run

打開(kāi)生成的 PDF 文件

C# 中由 DotNetBrowser 生成的 PDF 文件

到此這篇關(guān)于在C#中生成PDF的步驟詳解的文章就介紹到這了,更多相關(guān)C#生成PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

故城县| 盖州市| 巴马| 祁连县| 曲水县| 东山县| 从化市| 长白| 廊坊市| 虎林市| 塔河县| 灵台县| 清苑县| 绥芬河市| 鄱阳县| 深州市| 正安县| 奉贤区| 交口县| 罗江县| 长丰县| 南涧| 梧州市| 阿尔山市| 牟定县| 蕲春县| 承德县| 黄平县| 杨浦区| 合江县| 白朗县| 雷波县| 阿克| 仙居县| 韶山市| 麦盖提县| 哈巴河县| 花垣县| 洛川县| 团风县| 钦州市|