IRONSOFTWAREHOME
PDF 工具

如何在没有 Adobe Pro 的情况下编辑 PDF(初学者教程)

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

问题:可以使用iText在ASP.NET中创建PDF,是否有更好的替代方案? 是的——iText是一款历史悠久的.NET PDF库,但IronPDF提供了一种现代HTML到PDF的方法,避免了学习底层PDF文档结构的必要。 本指南通过可运行的代码示例对这两个库进行了对比,以便您为项目选择合适的工具。

iText和IronPDF的关键区别是什么?

iText是Java iText库的.NET移植版,通过其文档类和低级PDF内容操作提供程序化的PDF创建。 虽然功能强大,但使用iText需要了解PDF文档结构、处理文档对象,并手动使用坐标和页面大小规格定位元素。 该 API 因功能需要而较为冗长——该库完整呈现了 PDF 规范的复杂性,这意味着在生成精美的输出结果之前,需要掌握大量知识。

IronPDF 则采取了不同的方法,专注于利用 Chrome 渲染引擎实现 HTML 转 PDF。开发者可以使用熟悉的 HTML 和 CSS 生成 PDF 文件,使 PDF 的创建变得像设计网页一样简单。 IronPDF 在后台处理 PDF 生成逻辑,使您能够生成具有现代样式且支持 JavaScript 的文档。 由于渲染管道基于 Chromium 构建,任何在现代浏览器中有效的布局都将忠实呈现于 PDF 输出中——包括 flexbox、网格布局、Web 字体以及 JavaScript 生成的内容。

这种架构差异的实际结果是,iText奖励那些希望对PDF文件中的每个字节进行细粒度坐标控制的开发人员,而IronPDF则是为那些希望快速生成视觉效果良好的文档且使用已有技能的开发人员提供奖励。 对于大多数 Web 应用场景——如发票、报告、订单确认和数据导出——采用 HTML 方案构建速度更快,维护也更简单。

iText与IronPDF:功能对比
特征iTextIronPDF
HTML到PDF有限(通过 XMLWorker 插件)完整的 Chrome 引擎渲染
CSS 支持部分的全面支持 CSS3
JavaScript 支持None是(通过 Chrome 引擎)
授权AGPL(需商业许可)商业用途,免版税
学习曲线难度较高(需具备 PDF API 知识)低(仅需HTML/CSS)
NuGet 安装Install-Package iTextSharpInstall-Package IronPdf
.NET 兼容性.NET Framework、.NET Core.NET 8、.NET 9、.NET 10、.NET Framework

如何在 .NET 项目中安装这些库?

安装任一库均需通过 NuGet 包管理器开始。 对于iText,请注意新版本的iText采用AGPL许可证,该许可证要求要么开源您的应用程序,要么购买商业许可证:

# Install iTextSharp via Package Manager Console
Install-Package iTextSharp
SHELL

对于 IronPDF,您可以通过 NuGet 包管理器控制台、.NET CLI 或直接在 Visual Studio 的 NuGet 界面中搜索来安装:

PM > Install-Package IronPdf

安装完成后,只需添加一行 using 语句,即可开始使用 IronPDF。 基本 PDF 生成无需额外配置。 有关高级场景(例如设置许可证密钥、配置渲染选项或在云环境中生成 PDF)的详细信息,请参阅 IronPDF 文档。 IronPDF 支持 Linux、macOS 和 Windows 部署,包括在 Docker 或 Kubernetes 中运行的容器化环境,这使其非常适合现代云原生 ASP.NET 应用程序。

如何使用每个库创建基本的 PDF 文档?

理解这两款库 API 差异最直观的方式,是使用它们并行创建一份简单的"Hello World"PDF 文件。

使用iText生成PDF

使用iText,您直接处理PdfWriter

using iTextSharp.text;
using iTextSharp.text.pdf;

var memoryStream = new MemoryStream();
Document pdfDoc = new Document(PageSize.A4, 25, 25, 25, 15);
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream);
pdfDoc.Open();

var paragraph = new Paragraph("Hello World - PDF Document");
paragraph.Font = FontFactory.GetFont(FontFactory.HELVETICA, 16);
pdfDoc.Add(paragraph);
pdfDoc.Add(new Paragraph("Creating PDF documents with iTextSharp"));

pdfDoc.Close();

// Return as a downloadable file
var pdfBytes = memoryStream.ToArray();

这需要了解FontFactory如何交互——对于刚接触PDF生成的开发人员来说,这是一个不容忽视的学习投资。

使用 IronPDF 生成 PDF

using IronPDF 时,相应的任务会采用熟悉的 HTML 格式:

using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(@"
    <h1>Hello World - PDF Document</h1>
    <p>Creating PDFs with IronPDF is straightforward!</p>
");

var pdfBytes = pdf.BinaryData;

IronPDF 的方法允许您直接编写 HTML,从而无需处理底层的 PDF 元素。 ChromePdfRenderer 类通过基于 Chromium 的引擎在内部处理所有渲染工作,确保输出结果像素级精确。

如何使用图片和 CSS 创建样式化的 PDF?

格式化文档揭示了这两个库之间最显著的差异。 在生成发票、报告或品牌文档时,IronPDF 基于 CSS 的样式设置可大幅减少所需的代码量。

使用 IronPDF 生成发票

using IronPdf;

var html = @"
    <style>
        body { font-family: Arial, sans-serif; margin: 0; }
        .invoice-header { background: #4CAF50; color: white; padding: 20px; }
        .invoice-table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        .invoice-table th, .invoice-table td {
            border: 1px solid #ddd; padding: 8px; text-align: left;
        }
        .invoice-table th { background-color: #f2f2f2; }
        .total { font-size: 18px; font-weight: bold; margin-top: 16px; }
    </style>
    <div class='invoice-header'>
        <h1>Invoice #2024-001</h1>
        <p>Due: March 15, 2024</p>
    </div>
    <table class='invoice-table'>
        <tr><th>Item</th><th>Quantity</th><th>Unit Price</th><th>Total</th></tr>
        <tr><td>PDF License</td><td>1</td><td>$599</td><td>$599</td></tr>
        <tr><td>Support Package</td><td>1</td><td>$199</td><td>$199</td></tr>
    </table>
    <p class='total'>Grand Total: $798</p>
";

var renderer = new ChromePdfRenderer();
var pdfDocument = renderer.RenderHtmlAsPdf(html);
var pdfBytes = pdfDocument.BinaryData;

使用iText生成发票

使用iText实现类似输出需要程序化地构造每个视觉元素:

using iTextSharp.text;
using iTextSharp.text.pdf;

var output = new MemoryStream();
var document = new Document(PageSize.A4);
PdfWriter.GetInstance(document, output);
document.Open();

// Header -- manual font and color setup
var titleFont = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 20,
    new BaseColor(255, 255, 255));
var headerParagraph = new Paragraph("Invoice #2024-001", titleFont);
document.Add(headerParagraph);

// Table -- each cell must be created individually
PdfPTable table = new PdfPTable(4);
table.WidthPercentage = 100;

string[] headers = { "Item", "Quantity", "Unit Price", "Total" };
foreach (var h in headers)
{
    var cell = new PdfPCell(new Phrase(h,
        FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 10)));
    cell.BackgroundColor = new BaseColor(242, 242, 242);
    table.AddCell(cell);
}

table.AddCell("PDF License");
table.AddCell("1");
table.AddCell("$599");
table.AddCell("$599");
document.Add(table);

var totalFont = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 14);
document.Add(new Paragraph("Grand Total: $798", totalFont));
document.Close();

区别明显:IronPDF可以处理CSS、现代HTML和JavaScript,而iText需要手动创建每个元素、制定字体规范并逐个单元格地构造表格。 对于需要生成数十种不同模板的文档密集型应用程序,这种代码量的差异会随着时间的推移而显著累积。

如何在 ASP.NET 中处理服务器端的 PDF 生成?

这两个库均支持为 ASP.NET 应用程序生成服务器端 PDF。 无论使用哪个库生成数据流,将 PDF 作为可下载文件响应返回的模式都是相似的。 在实际生产环境中,关键的考虑因素包括内存管理、线程安全以及响应配置。 这两个库均使用内存流,因此请确保不要将大型 PDF 文件在内存中保留超过必要的时间。 IronPDF的ChromePdfRenderer是为每次请求进行实例化设计,因此无须担心并发请求之间的共享状态。

使用 IronPDF 的 ASP.NET Core 控制器操作

using IronPdf;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
    [HttpGet("invoice/{id}")]
    public IActionResult GenerateInvoice(int id)
    {
        var html = BuildInvoiceHtml(id); // your HTML template

        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;

        var pdf = renderer.RenderHtmlAsPdf(html);

        return File(pdf.BinaryData, "application/pdf", $"invoice-{id}.pdf");
    }

    private static string BuildInvoiceHtml(int id)
    {
        return $"<h1>Invoice #{id}</h1><p>Generated on {DateTime.UtcNow:yyyy-MM-dd}</p>";
    }
}

对于ASP.NET MVC(非Core)项目,以相同方式返回FileResult。 IronPDF 还支持通过 URL 生成 PDF,这在转换现有网页而非构建 HTML 字符串时非常有用。

您还可以使用 IronPDF 的文档编辑 API 添加页眉和页脚、应用数字签名、设置密码保护,或合并多个 PDF 文件——所有这些功能均来自同一个软件包。

如何从iText迁移到IronPDF?

迁移现有iText项目到IronPDF可按照以下简单模式:

  1. 替换文档模型代码为HTML模板。 而不是构造PdfPCell对象,构建一个HTML字符串或加载一个HTML文件。您可以直接重用现有的CSS样式表和Razor局部视图。
  2. 更换渲染调用。PdfWriter.GetInstance(doc, stream)
  3. 更新字节提取。memoryStream.ToArray()
  4. 转移高级设置。 iText功能,如页面边距、加密和文档元数据在IronPDF的PdfDocument API中有直接等效项。
  5. **验证输出准确性。**在具有代表性的文档上并排运行两种输出结果进行对比。 IronPDF 通常能呈现更佳的视觉效果,因为它使用的是完整的浏览器渲染引擎,而非 PDF 原生布局引擎。

对于已拥有现有 HTML 模板(来自电子邮件生成器、Razor 视图或报表 Builder)的团队,迁移通常只需数小时而非数天即可完成。 IronPDF 可在 .NET Core 环境中将 Razor 视图直接渲染为 PDF,从而进一步加速迁移进程。 那些已投入精力进行基于 CSS 的文档设计(例如,使用 PRINT 样式表来控制分页和边距)的团队,会发现这些技能可直接应用于 IronPDF。

查看IronPDF迁移指南以获得涵盖加密、制作印章及其他高级iText功能的详细模式。

你应该选择哪个库?

对于开始新项目或从iText迁移的开发人员,以下因素适用:

许可: iText的新版本使用AGPL许可证,这需要要么开源您的应用程序,要么从iText Group购买商业许可证。IronPDF提供简单直接的商业授权,无需开源义务。 如果您的项目是闭源或商业性质的,仅这一区别就可能决定您的选择。

**学习曲线:**IronPDF 基于 HTML 的方法意味着您无需花费大量时间学习 PDF 专用的 API。如果您的团队熟悉 HTML 和 CSS,即可立即开始使用 IronPDF 生成 PDF。 无需研究 PDF 坐标系、字形编码或字体嵌入——IronPDF 会透明地处理所有这些操作。

功能覆盖: IronPDF支持PDF/A合规表单填写水印等等——所有这些都来自单个NuGet包。 此外,还包含数字签名和 PDF 合并等高级功能,且无需额外依赖项。

迁移路径: 从iText迁移到IronPDF涉及用HTML模板替换文档操作代码,并更新渲染调用。 由于 IronPDF 采用完整的浏览器引擎,生成的代码通常质量更高,且显著更简洁、更易于维护。

关于 PDF 渲染引擎的工作原理及其差异,Mozilla 的 PDF 文档Adobe 的 PDF 规范资源提供了有用的背景信息。 iText Group 官方网站详细介绍了 AGPL 条款。

下一步计划是什么?

要在您的 ASP.NET 项目中开始使用 IronPDF:

  1. 安装NuGet包:Install-Package IronPdf
  2. using IronPdf;添加到您的文件
  3. 创建一个RenderHtmlAsPdf()
  4. 从您的控制器返回FileResult

探索以下资源,了解更多信息:

请注意: iText是一种注册商标,其各自所有者拥有其商标。 本网站不与iText有任何从属关系、认可或赞助。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映撰写时公开可用的信息。
Curtis Chau
技术作家

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

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户