跳至页脚内容
使用IRONPDF

如何在 .NET Core 中创建 PDF 文件

程序化创建PDF文档是现代Web应用程序中常见的方法和频繁的需求。 无论您是在构建发票、报告还是任何基于文档的系统,了解如何在ASP应用程序和.NET Core中高效创建PDF文件至关重要。 在本教程中,我们将探索使用IronPDF处理.NET Core创建PDF文件任务的最佳方法。 这是一个功能强大的.NET Core库,可以简化PDF生成功能。 有关详细的技术细节,请参考官方文档。

开始使用 IronPDF.

IronPDF是一个全面的.NET Core PDF库,将复杂的PDF创建转换为简单的操作。 与传统方法需要手动绘制元素不同,IronPDF利用HTML标记和CSS生成与您设计要求完全匹配的PDF文件。

要在.NET Core库项目中开始创建PDF,请使用Visual Studio的包管理控制台通过运行以下命令安装IronPDF NuGet包:

Install-Package IronPdf

此简单安装可立即为您的Web应用程序提供强大的PDF生成功能。

创建您的第一个 PDF 文档

让我们创建一个简单的PDF文档以了解基础知识。 以下示例展示了如何生成带格式内容的PDF:

using IronPdf;
// Create a new ChromePdfRenderer object
var renderer = new ChromePdfRenderer();
// Define HTML content with styling
var html = @"
    <html>
        <body style='font-family: Arial; margin: 40px;'>
            <h1>Hello World PDF Document</h1>
            <p>This is your first PDF file created with IronPDF!</p>
        </body>
    </html>";
// Generate PDF from HTML
var pdf = renderer.RenderHtmlAsPdf(html);
// Save the PDF document
pdf.SaveAs("output.pdf");
using IronPdf;
// Create a new ChromePdfRenderer object
var renderer = new ChromePdfRenderer();
// Define HTML content with styling
var html = @"
    <html>
        <body style='font-family: Arial; margin: 40px;'>
            <h1>Hello World PDF Document</h1>
            <p>This is your first PDF file created with IronPDF!</p>
        </body>
    </html>";
// Generate PDF from HTML
var pdf = renderer.RenderHtmlAsPdf(html);
// Save the PDF document
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此代码创建一个新的PdfDocument对象,该对象将通过呈现HTML内容创建新的PDF。 ChromePdfRenderer负责转换,确保您的PDF文档保持一致的格式。

输出

使用高级功能将HTML转换为PDF

IronPDF擅长将复杂的网页和HTML内容转换为专业的PDF文件。 以下代码探讨了如何创建具有更多高级功能的新PDF文档,如表格、图像和样式元素的工作原理:

public void CreateAdvancedPdf()
{
    var renderer = new ChromePdfRenderer();
    // Configure rendering options
    renderer.RenderingOptions.MarginTop = 25;
    renderer.RenderingOptions.MarginBottom = 25;
    var html = @"
        <html>
        <head>
            <style>
                table { width: 100%; border-collapse: collapse; }
                th, td { padding: 10px; border: 1px solid #ddd; }
                th { background-color: #f2f2f2; }
            </style>
        </head>
        <body>
            <h2>Sales Report</h2>
            <table>
                <tr>
                    <th>Product</th>
                    <th>Quantity</th>
                    <th>Total</th>
                </tr>
                <tr>
                    <td>Software License</td>
                    <td>10</td>
                    <td>$500</td>
               </tr>
            </table>
        </body>
        </html>";
    // Create PDF file
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("report.pdf");
}
public void CreateAdvancedPdf()
{
    var renderer = new ChromePdfRenderer();
    // Configure rendering options
    renderer.RenderingOptions.MarginTop = 25;
    renderer.RenderingOptions.MarginBottom = 25;
    var html = @"
        <html>
        <head>
            <style>
                table { width: 100%; border-collapse: collapse; }
                th, td { padding: 10px; border: 1px solid #ddd; }
                th { background-color: #f2f2f2; }
            </style>
        </head>
        <body>
            <h2>Sales Report</h2>
            <table>
                <tr>
                    <th>Product</th>
                    <th>Quantity</th>
                    <th>Total</th>
                </tr>
                <tr>
                    <td>Software License</td>
                    <td>10</td>
                    <td>$500</td>
               </tr>
            </table>
        </body>
        </html>";
    // Create PDF file
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("report.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此示例显示了如何创建带格式表格的PDF文档,展示了IronPDF处理复杂布局和CSS样式的能力。

输出

如何在.NET Core中创建PDF文件:图2 - 具有高级功能的PDF

与ASP.NET Core应用程序一起使用

在ASP.NET Core MVC视图中集成PDF生成非常简单。 这是一个从控制器生成PDF的示例项目实现:

using Microsoft.AspNetCore.Mvc;
using IronPdf;
using System.IO;
public class DocumentController : Controller
{
    public IActionResult GeneratePdf()
    {
        var renderer = new ChromePdfRenderer();
        // Create HTML content
        var html = "<h1>Invoice</h1><p>Thank you for your purchase!</p>";
        // Generate PDF
        var pdf = renderer.RenderHtmlAsPdf(html);
        byte[] pdfBytes = pdf.BinaryData;
    // Return PDF file using the byte array, setting the content type to PDF
    return File(pdfBytes,
            "application/pdf",
            "document.pdf");
       }
    }
}
using Microsoft.AspNetCore.Mvc;
using IronPdf;
using System.IO;
public class DocumentController : Controller
{
    public IActionResult GeneratePdf()
    {
        var renderer = new ChromePdfRenderer();
        // Create HTML content
        var html = "<h1>Invoice</h1><p>Thank you for your purchase!</p>";
        // Generate PDF
        var pdf = renderer.RenderHtmlAsPdf(html);
        byte[] pdfBytes = pdf.BinaryData;
    // Return PDF file using the byte array, setting the content type to PDF
    return File(pdfBytes,
            "application/pdf",
            "document.pdf");
       }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此控制器方法生成PDF文档并将其作为可下载文件返回,非常适合Web应用程序中的服务器端处理。 您还可以使用新的MemoryStream对象处理PDF文档的创建。

输出

如何在.NET Core中创建PDF文件:图3 - 使用我们的ASP.NET控制器生成的PDF

高级PDF生成技术

IronPDF支持创建PDF的众多高级功能。 您可以添加页眉、页脚、页码,甚至合并多个PDF文件:

public void CreatePdfWithHeaderFooter()
{
    var renderer = new ChromePdfRenderer();
    // Add header
    renderer.RenderingOptions.TextHeader = new TextHeaderFooter
    {
        CenterText = "Company Report",
        DrawDividerLine = true
    };
    // Add footer with page numbers
    renderer.RenderingOptions.TextFooter = new TextHeaderFooter
    {
        CenterText = "Page {page} of {total-pages}",
        DrawDividerLine = true
    };
    var html = "<h1>Annual Report</h1><p>Content goes here...</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    // Save the new document
    pdf.SaveAs("report-with-header.pdf");
}
// Merge multiple PDFs
public void MergePdfFiles()
{
    var renderer = new ChromePdfRenderer();
    var pdf1 = renderer.RenderHtmlAsPdf("<p>First Document</p>");
    var pdf2 = renderer.RenderHtmlAsPdf("<p>Second Document</p>");
    // Merge PDF documents
    var merged = PdfDocument.Merge(pdf1, pdf2);
    merged.SaveAs("merged.pdf");
}
// Example of iterating over something, illustrating 'int i' and 'index'
public void ProcessMultipleFiles(string[] filePaths)
{
    for (int i = 0; i < filePaths.Length; i++)
    {
        // Use 'i' as an index to process each source file
        var source file = filePaths[i];
        Console.WriteLine($"Processing file at index {i}: {source file}");
        // Imagine code here to load or process the file
        // var pdf = PdfDocument.FromFile(sourceFile); // load
    }
}
public void CreatePdfWithHeaderFooter()
{
    var renderer = new ChromePdfRenderer();
    // Add header
    renderer.RenderingOptions.TextHeader = new TextHeaderFooter
    {
        CenterText = "Company Report",
        DrawDividerLine = true
    };
    // Add footer with page numbers
    renderer.RenderingOptions.TextFooter = new TextHeaderFooter
    {
        CenterText = "Page {page} of {total-pages}",
        DrawDividerLine = true
    };
    var html = "<h1>Annual Report</h1><p>Content goes here...</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    // Save the new document
    pdf.SaveAs("report-with-header.pdf");
}
// Merge multiple PDFs
public void MergePdfFiles()
{
    var renderer = new ChromePdfRenderer();
    var pdf1 = renderer.RenderHtmlAsPdf("<p>First Document</p>");
    var pdf2 = renderer.RenderHtmlAsPdf("<p>Second Document</p>");
    // Merge PDF documents
    var merged = PdfDocument.Merge(pdf1, pdf2);
    merged.SaveAs("merged.pdf");
}
// Example of iterating over something, illustrating 'int i' and 'index'
public void ProcessMultipleFiles(string[] filePaths)
{
    for (int i = 0; i < filePaths.Length; i++)
    {
        // Use 'i' as an index to process each source file
        var source file = filePaths[i];
        Console.WriteLine($"Processing file at index {i}: {source file}");
        // Imagine code here to load or process the file
        // var pdf = PdfDocument.FromFile(sourceFile); // load
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这些示例展示了在您的PDF文档中添加专业化的处理以及将多个文件合并为一个文件。

如何在.NET Core中创建PDF文件:图4 - 使用简单、自定义页眉和页脚创建的PDF

处理表单和动态内容

IronPDF可以创建具有表单字段的交互式PDF文档:

public void CreatePdfWithForm()
{
    var html = @"
    <!DOCTYPE html>
    <html>
    <head>
        <title>PDF Test Form</title>
        <style>
            body {
                font-family: Arial, sans-serif;
                margin: 20px;
                background-color: #f4f4f4;
            }
            .form-container {
                width: 400px;
                padding: 20px;
                border: 1px solid #ccc;
                border-radius: 8px;
                background-color: #fff;
                box-shadow: 2px 2px 5px rgba(0,0,0,0.1);
            }
            .form-group {
                margin-bottom: 15px;
            }
            label {
                display: block; /* Make label take up full width */
                margin-bottom: 5px;
                font-weight: bold;
                color: #333;
            }
            input[type='text'], textarea {
                width: 100%;
                padding: 10px;
                border: 1px solid #ddd;
                border-radius: 4px;
                box-sizing: border-box; /* Include padding and border in the element's total width and height */
            }
            textarea {
                height: 100px;
                resize: vertical;
            }
            .checkbox-group {
                display: flex;
                align-items: center;
            }
            .checkbox-group label {
                display: inline;
                font-weight: normal;
                margin-left: 8px;
            }
        </style>
    </head>
    <body>
        <div class='form-container'>
            <h2>Document Generation Test Form</h2>
            <form>
                <div class='form-group'>
                    <label for='fullName'>Full Name:</label>
                </div>
                <div class='form-group'>
                    <label for='comments'>Comments/Feedback:</label>
                    <textarea id='comments' name='comments' placeholder='Type your feedback here...'></textarea>
                </div>
                <div class='form-group checkbox-group'>
                    <label for='agree'>I agree to the terms and conditions.</label>
                </div>
                <button style='padding: 10px 15px; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer;'>
                    Test Button Rendering
                </button>
            </form>
        </div>
    </body>
    </html>";
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("form.pdf");
}
public void CreatePdfWithForm()
{
    var html = @"
    <!DOCTYPE html>
    <html>
    <head>
        <title>PDF Test Form</title>
        <style>
            body {
                font-family: Arial, sans-serif;
                margin: 20px;
                background-color: #f4f4f4;
            }
            .form-container {
                width: 400px;
                padding: 20px;
                border: 1px solid #ccc;
                border-radius: 8px;
                background-color: #fff;
                box-shadow: 2px 2px 5px rgba(0,0,0,0.1);
            }
            .form-group {
                margin-bottom: 15px;
            }
            label {
                display: block; /* Make label take up full width */
                margin-bottom: 5px;
                font-weight: bold;
                color: #333;
            }
            input[type='text'], textarea {
                width: 100%;
                padding: 10px;
                border: 1px solid #ddd;
                border-radius: 4px;
                box-sizing: border-box; /* Include padding and border in the element's total width and height */
            }
            textarea {
                height: 100px;
                resize: vertical;
            }
            .checkbox-group {
                display: flex;
                align-items: center;
            }
            .checkbox-group label {
                display: inline;
                font-weight: normal;
                margin-left: 8px;
            }
        </style>
    </head>
    <body>
        <div class='form-container'>
            <h2>Document Generation Test Form</h2>
            <form>
                <div class='form-group'>
                    <label for='fullName'>Full Name:</label>
                </div>
                <div class='form-group'>
                    <label for='comments'>Comments/Feedback:</label>
                    <textarea id='comments' name='comments' placeholder='Type your feedback here...'></textarea>
                </div>
                <div class='form-group checkbox-group'>
                    <label for='agree'>I agree to the terms and conditions.</label>
                </div>
                <button style='padding: 10px 15px; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer;'>
                    Test Button Rendering
                </button>
            </form>
        </div>
    </body>
    </html>";
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("form.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这创建了一个具有表单字段的交互式PDF,用户可以填写,非常适合需要用户输入的应用程序。 代码还展示了在生成的内容中可能使用的HTML链接的位置。

输出 PDF with Editable Form

如何在.NET Core中创建PDF文件:图5 - 带可填写表单的PDF

最佳实践和错误处理

在生成生产环境的PDF文件时,实施适当的错误处理:

try
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
    // Log error and handle appropriately
    Console.WriteLine($"PDF generation failed: {ex.Message}");
}
try
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
    // Log error and handle appropriately
    Console.WriteLine($"PDF generation failed: {ex.Message}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

始终验证输入数据并优雅地处理异常,以确保您的应用程序中可靠的PDF生成。

结论

IronPDF将.NET Core中创建PDF文件的复杂任务转化为简单、可管理的过程。 从基本的文档创建到高级功能,如表单、图像和页面管理,这个.NET库提供了全面的工具来程序化地生成PDF文档。 通过使用常见的HTML转换方法,您可以快速加载数据并下载完成的文件。

无论您是构建简单的报告还是复杂的多页文档,IronPDF直观的API和强大的渲染引擎使其成为.NET开发人员的理想选择。 今天就开始在您的ASP.NET Core应用程序中使用IronPDF的免费试用版创建专业的PDF文件。

准备好通过PDF生成功能增强您的应用程序了吗? 立即开始使用IronPDF,体验创建PDF有多么简单。

常见问题解答

什么是IronPDF?

IronPDF是一个强大的.NET Core库,旨在简化ASP.NET应用程序中PDF文档的创建和操作。

如何在.NET Core中创建PDF文档?

您可以通过使用IronPDF库在.NET Core中创建PDF文档,该库提供了简便的方法来在您的应用程序中程序化生成PDF。

我可以使用IronPDF创建哪些类型的文档?

使用IronPDF,您可以创建各种文档类型,包括发票、报告,以及任何需要PDF生成的基于文档的系统。

IronPDF适合ASP.NET应用程序吗?

是的,IronPDF特别适合ASP.NET应用程序,提供无缝集成和高效的PDF创建功能。

我在哪里可以找到IronPDF的官方文档?

IronPDF的官方文档可在Iron Software网站上找到,提供了使用该库的全面技术细节和指南。

使用IronPDF进行PDF创建的好处是什么?

使用IronPDF的好处包括使用方便、强大的功能,以及在.NET Core应用程序中程序化生成高质量PDF的能力。

IronPDF可以处理复杂的PDF生成任务吗?

是的,IronPDF能够处理复杂的PDF生成任务,非常适合需要高级PDF操作和创建的应用程序。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。