IRONSOFTWAREHOME
视频

如何在 C# 中导出 PDF | IronPDF

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

从苏门答腊 PDF迁移到IronPDF可将您的 PDF 工作流程从使用桌面查看器应用程序的外部流程管理转变为具有完整 PDF 创建、操作和提取功能的本地 .NET 库集成。 本指南提供了完整的、逐步的迁移路径,消除了外部依赖、AGPLv3 共价义务,以及苏门答腊 PDF作为查看/打印器而非开发库的基本限制。

为什么要从苏门答腊 PDF迁移到 IronPDF.

了解苏门答腊 PDF.

Sumatra PDF 是一款轻量级的开源视窗PDF 阅读/打印器,以其简单性和速度而闻名。 它还显示 EPUB、MOBI、CBZ/CBR、FB2、CHM、XPS 和 DjVu 文件。 但是,Sumatra PDF 不提供除了查看和打印之外所需的创建或操作 PDF 文件的功能,并且没有官方的 .NET SDK 或 NuGet 包—社区包装器只是对 SumatraPDF.exe 进行外壳包装。

Sumatra PDF 是一个 独立的视窗桌面查看/打印应用程序,而不是一个开发库。 如果您正在.NET 应用程序中使用 Sumatra PDF,那么您很可能正在使用:

  1. 启动 SumatraPDF.exe 作为外部进程以显示 PDF
  2. 通过命令行打印 PDF(-print-to "<printer>") 3.您的用户必须将其作为一个依赖项来安装

###苏门答腊 PDF集成的关键问题

问题影响
不是库不能以编程方式创建或编辑 PDF
外部流程需要生成 SumatraPDF.exe; 没有进程内 API
AGPLv3 许可证强制性共价(某些文件是 BSD 许可的); bundling into closed-source products imposes obligations most commercial vendors avoid
用户依赖性用户(或您的安装程序)必须在磁盘上放置 SumatraPDF.exe
仅限 CLI仅限于记录的命令行参数
仅查看 / 打印不能创建、编辑或操作 PDF
仅限 Windows没有Linux或MacOS构建

###苏门答腊 PDF与IronPDF对比

特征苏门答腊 PDFIronPDF
类型应用
PDF阅读
PDF 创建
PDF 编辑
集成有限(独立)完全集成到应用程序中
许可AGPLv3(部分文件 BSD)商业翻译
创建 PDF 文件
编辑 PDF 文件
HTML 到 PDF
合并/拆分
水印
数字签名
表格填写
文本提取
.NET集成None本地
网络应用

IronPDF 与苏门答腊 PDF不同,不与任何特定的桌面应用程序或外部流程绑定。 它为开发人员提供了一个灵活的库,可直接在 C# 中动态创建、编辑和操作 PDF 文档。 这种与外部流程脱钩的做法有一个明显的优势--它简单明了,适应性强,适用于各种应用,而不仅仅是浏览。

对于旨在跟随现代 .NET 的团队,IronPDF 提供了本地库集成,消除了苏门答腊 PDF的外部进程开销和 AGPLv3 共价义务。


开始之前

前提条件

  1. .NET 环境: .NET Framework 4.6.2+ 或 .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. **NuGet 访问权限:**能够安装 NuGet 包
  3. **IronPDF 许可证:**请从ironpdf.com获取您的许可证密钥。

安装

# Install IronPDF
dotnet add package IronPdf
SHELL

许可配置

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

完整的 API 参考

命名空间变更

// Before:苏门答腊 PDF(external process)
using System.Diagnostics;
using System.IO;

// After: IronPDF
using IronPdf;

核心能力映射

苏门答腊 PDF 方法IronPDF 同等产品备注
Process.Start("SumatraPDF.exe", pdfPath)PdfDocument.FromFile()加载 PDF
命令行参数本地 API 方法无需 CLI
外部 pdftotext.exepdf.ExtractAllText()文本提取
外部 wkhtmltopdf.exerenderer.RenderHtmlAsPdf()HTML 至 PDF
-print-to-default 参数pdf.Print()印刷
不可能PdfDocument.Merge()合并 PDF
不可能pdf.ApplyWatermark()水印
不可能pdf.SecuritySettings密码保护

代码迁移示例

示例 1:HTML 到 PDF 的转换

之前(苏门答腊 PDF):

//苏门答腊 PDFis a standalone视窗app (AGPLv3) — there is NO official NuGet package.
// Download SumatraPDF.exe from https://www.sumatrapdfreader.org/and shell out to it.
// Sumatra is a viewer/printer only; it cannot convert HTML to PDF, so you must use a
// separate HTML-to-PDF tool (e.g. wkhtmltopdf) and then view/print with Sumatra.
using System.Diagnostics;
using System.IO;

class Program
{
    static void Main()
    {
        //苏门答腊 PDFcannot directly convert HTML to PDF
        // You'd need to use wkhtmltopdf or similar, then view in Sumatra
        string htmlFile = "input.html";
        string pdfFile = "output.pdf";
        
        // Using wkhtmltopdf as intermediary
        ProcessStartInfo psi = new ProcessStartInfo
        {
            FileName = "wkhtmltopdf.exe",
            Arguments = $"{htmlFile} {pdfFile}",
            UseShellExecute = false
        };
        Process.Start(psi)?.WaitForExit();
        
        // Then open with Sumatra
        Process.Start("SumatraPDF.exe", pdfFile);
    }
}
C#

After (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        
        string htmlContent = "<h1>Hello World</h1><p>This isHTML 至 PDFconversion.</p>";
        
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
        
        Console.WriteLine("PDF created successfully!");
    }
}
C#

本例展示了基本的架构差异。苏门答腊 PDF无法直接将 HTML 转换为 PDF,您必须使用 wkhtmltopdf 等外部工具作为中介,然后作为一个单独的进程启动 Sumatra 以查看结果。 这需要两个外部可执行文件和多个进程启动。

IronPDF 在仅三行代码中使用 ChromePdfRendererRenderHtmlAsPdf()。 无外部工具、无流程管理、无中间文件。 PDF 直接在内存中创建并使用 SaveAs() 保存。 请参阅 HTML 转 PDF 文档,了解全面的示例。

示例 2:打开和显示 PDF 文件

之前(苏门答腊 PDF):

//苏门答腊 PDFis a standalone视窗app (AGPLv3) — no official NuGet package.
// Download SumatraPDF.exe from https://www.sumatrapdfreader.org/and call it via Process.Start.
// Useful CLI flags: -page <n>, -print-to-default, -print-to "<printer>", -print-settings, -silent.
using System.Diagnostics;
using System.IO;

class Program
{
    static void Main()
    {
        string pdfPath = "document.pdf";
        
        //苏门答腊 PDFexcels at viewing PDFs
        ProcessStartInfo startInfo = new ProcessStartInfo
        {
            FileName = "SumatraPDF.exe",
            Arguments = $"\"{pdfPath}\"",
            UseShellExecute = true
        };
        
        Process.Start(startInfo);
        
        // Optional: Open specific page
        // Arguments = $"-page 5 \"{pdfPath}\""
    }
}
C#

After (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");
        
        // Extract information
        Console.WriteLine($"Page Count: {pdf.PageCount}");
        
        //IronPDFcan manipulate and save, then open with default viewer
        pdf.SaveAs("modified.pdf");
        
        // Open with default PDF viewer
        Process.Start(new ProcessStartInfo("modified.pdf") { UseShellExecute = true });
    }
}
C#

Sumatra PDF 擅长查看 PDF,但仅限于使用命令行参数启动外部进程。 您不能以编程方式访问 PDF 内容,只能将其显示出来。

IronPDF 使用 PdfDocument.FromFile() 加载 PDF,赋予您完整的程序访问权限。 您可以读取诸如 PageCount 的属性,操作文档、保存更改,然后用系统的默认 PDF 查看器打开。 关键区别在于IronPDF提供的是实际的 API,而不仅仅是流程参数。 在我们的教程中了解更多信息。

示例 3:从 PDF 中提取文本

之前(苏门答腊 PDF):

//苏门答腊 PDFis a standalone视窗viewer (AGPLv3) — no official NuGet package
// and no programmatic text-extraction API. To extract text you must shell out to a
// separate tool such as pdftotext (Xpdf / Poppler).
using System;
using System.Diagnostics;
using System.IO;

class Program
{
    static void Main()
    {
        //苏门答腊 PDFis a viewer, not a text extraction library
        // You'd need to use PDFBox, iTextSharp, or similar for extraction
        
        string pdfFile = "document.pdf";
        
        // This would require external tools like pdftotext
        ProcessStartInfo psi = new ProcessStartInfo
        {
            FileName = "pdftotext.exe",
            Arguments = $"{pdfFile} output.txt",
            UseShellExecute = false
        };
        
        Process.Start(psi)?.WaitForExit();
        
        string extractedText = File.ReadAllText("output.txt");
        Console.WriteLine(extractedText);
    }
}
C#

After (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");
        
        // Extract text from all pages
        string allText = pdf.ExtractAllText();
        Console.WriteLine("Extracted Text:");
        Console.WriteLine(allText);
        
        // Extract text from specific page
        string pageText = pdf.ExtractTextFromPage(0);
        Console.WriteLine($"\nFirst Page Text:\n{pageText}");
    }
}

Sumatra PDF 是一个阅读器,而不是一个文本提取库。 要提取文本,您必须使用外部命令行工具如 pdftotext.exe,生成一个进程,等待其完成,读取输出文件,并处理所有相关的文件 I/O 和清理。

IronPDF 提供本地文本提取功能,可对整个文档使用 ExtractAllText() 或对特定页面使用 ExtractTextFromPage(0)。 无外部进程、无临时文件、无需清理。


功能对比

特征苏门答腊 PDFIronPDF
创造
URL 至 PDF
文本到 PDF
图像到 PDF
操纵
拆分 PDF
旋转页面
删除页面
重新排序页面
内容
添加页眉/页脚
印章文本
图章图像
安全
数字签名
加密
权限设置
提取
提取图片
平台
Linux
MacOS
网络应用程序
Azure/AWS

迁移后的新功能

迁移到IronPDF后,您将获得苏门答腊 PDF无法提供的功能:

从 HTML 创建 PDF.

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(@"
    <html>
    <head><style>body { font-family: Arial; }</style></head>
    <body>
        <h1>Invoice #12345</h1>
        <p>Thank you for your purchase.</p>
    </body>
    </html>");

pdf.SaveAs("invoice.pdf");

PDF 合并

var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var pdf3 = PdfDocument.FromFile("chapter3.pdf");

var book = PdfDocument.Merge(pdf1, pdf2, pdf3);
book.SaveAs("complete_book.pdf");

水印

var pdf = PdfDocument.FromFile("document.pdf");

pdf.ApplyWatermark(@"
    <div style='
        font-size: 60pt;
        color: rgba(255, 0, 0, 0.3);
        transform: rotate(-45deg);
    '>
        CONFIDENTIAL
    </div>");

pdf.SaveAs("watermarked.pdf");

密码保护

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Sensitive Data</h1>");

pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;

pdf.SaveAs("protected.pdf");

迁移清单

迁移前

  • 识别所有 Sumatra 进程启动(Process.Start("SumatraPDF.exe", ...)
  • 记录打印工作流程(-print-to-default 参数)
  • 注意所使用的任何 Sumatra 命令行参数。
  • ironpdf.com获取IronPDF许可证密钥

代码更新

  • 安装 IronPdf NuGet 包
  • 删除苏门答腊进程代码
  • 替换 Process.Start("SumatraPDF.exe", pdfPath)PdfDocument.FromFile(pdfPath)
  • ChromePdfRenderer.RenderHtmlAsPdf() 替换外部 wkhtmltopdf.exe 调用
  • pdf.ExtractAllText() 替换外部 pdftotext.exe 调用
  • pdf.Print() 替换 -print-to-default 进程调用
  • 在应用程序启动时添加许可证初始化

测试

  • 测试PDF生成质量
  • 验证打印功能
  • 在所有目标平台上进行测试
  • 确认不再存在对苏门答腊的依赖。

清理

  • 从安装程序中移除 Sumatra
  • 更新文档
  • 从系统要求中移除 Sumatra

请注意: Sumatra PDF 和 wkhtmltopdf 是其各自所有者的注册商标。 本网站与苏门答腊 PDF项目或 wkhtmltopdf 项目无关联、无背书、无赞助。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映撰写时公开可用的信息。
Curtis Chau
技术作家

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

...
阅读更多

相关文章

Key in blue circle

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

Your trial license will be sent to your email address

无任何限制。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 天试用密钥
无需信用卡或创建账户