如何用 C# 从 IronPdfium 迁移到 IronPDF
从 IronPdf 迁移到 IronPDF:完整的 C# 迁移指南。
从 IronPdf.NET 迁移到 IronPDF,可以将您的 .NET PDF 工作流程从具有本地二进制依赖关系的、以渲染为重点的库转变为一个全面的 PDF 解决方案,该解决方案可以处理创建、操作和渲染,而不会产生特定平台的复杂性。 本指南提供了一个完整的、循序渐进的迁移路径,消除了本地依赖性管理,同时增加了 Pdfium 无法提供的功能。
为什么要从 IronPdf 迁移到 IronPDF.
了解 Pdfium.NET.
Pdfium.NET 是 Google PDFium 库的 .NET 封装程序,该库以高效、快速地渲染 PDF 文档而闻名。 它已成为开发人员在 C# 应用程序中钻研错综复杂的 PDF 渲染的重要库,可在 .NET 环境中高保真地复制 PDF 内容。
然而,尽管 Pdfium.NET 擅长渲染,但其创建和处理 PDF 文档的能力有限。 它主要适用于需要准确显示 PDF 内容的应用程序,而不太强调修改或创建新的 PDF。
关键软件限制
1.仅关注渲染:无法通过 HTML、图像或编程创建 PDF。 Pdfium 的功能仅限于查看和渲染 PDF。
2.无 PDF 操作:不能合并、分割或修改 PDF 内容。 本机不支持 PDF 合并,您需要使用 iTextSharp 或 PdfSharp 等其他库。
3.本地二进制依赖性:需要特定平台的 PDFium 二进制文件。 开发人员需要管理本地 PDFium 二进制文件,这增加了部署和分发过程中的复杂性。
4.部署复杂性:必须捆绑和管理每个平台的本地 DLL,包括 x86、x64 和运行时文件夹。
5.有限文本提取:无格式化的基本文本提取。 文本提取需要使用 Pdfium.NET 进行额外工作。
6.No HTML to PDF:无法将网页内容转换为 PDF。 Pdfium.NET 本身不支持 HTML 到 PDF 的转换。
7.无页眉/页脚:不能添加页码或重复内容。
8.无水印:不能在文档上覆盖印记。
9.无表单支持:无法填写或读取 PDF 表单。
10.无安全功能:无法对 PDF 进行加密或密码保护。
Pdfium 与IronPDF对比
| 方面 | Pdfium.NET | IronPDF |
|---|---|---|
| 主要关注点 | 渲染/查看 | 完整的 PDF 解决方案 |
| 渲染保真度 | 高保真渲染 | 高,尤其是 HTML/CSS/JS。 |
| PDF 创建 | ✗ | ✓ (HTML、URL、图片) |
| PDF 操作 | ✗ | ✓(合并、拆分、编辑) |
| HTML 到 PDF | ✗ | ✓(Chromium 引擎) |
| 水印。 | ✗ | ✓ |
| 页眉/页脚 | ✗ | ✓ |
| 表格填写 | ✗ | ✓ |
| 安全性 | ✗ | ✓ |
| 本地依赖关系 | 要求 | 无(完全托管) |
| 跨平台 | 复杂的设置 | 自动翻译 |
| 易于部署 | 因本地依赖性而复杂 | 更简单; 减少依赖复杂性 |
对于计划在 2025 年和 2026 年之前采用 .NET 10 和 C# 14 的团队来说,IronPDF 提供了一个完全可管理的基础,消除了本地二进制管理,同时增加了全面的 PDF 创建和操作功能。
开始之前
前提条件
1..NET环境:.NET Framework 4.6.2+ 或 .NET Core 3.1+ / .NET 5/6/7/8/9+ 2.NuGet 访问:安装 NuGet 软件包的能力 3.IronPDF 许可证:从 ironpdf.com 获取许可证密钥
NuGet 软件包变更
# Remove Pdfium packages
dotnet remove package Pdfium.NET
dotnet remove package Pdfium.Net.SDK
dotnet remove package PdfiumViewer
# Install IronPDF
dotnet add package IronPdf# Remove Pdfium packages
dotnet remove package Pdfium.NET
dotnet remove package Pdfium.Net.SDK
dotnet remove package PdfiumViewer
# Install IronPDF
dotnet add package IronPdf许可配置
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";IRON VB CONVERTER ERROR developers@ironsoftware.com确定 Pdfium 的用法
# Find Pdfium usage
grep -r "Pdfium\|PdfDocument\.Load\|\.Render\(" --include="*.cs" .
# Find native binary references
grep -r "pdfium\.dll\|pdfium\.so\|pdfium\.dylib" --include="*.csproj" --include="*.config" .
# Find platform-specific code
grep -r "#if.*64\|WIN32\|WIN64\|LINUX\|OSX" --include="*.cs" .# Find Pdfium usage
grep -r "Pdfium\|PdfDocument\.Load\|\.Render\(" --include="*.cs" .
# Find native binary references
grep -r "pdfium\.dll\|pdfium\.so\|pdfium\.dylib" --include="*.csproj" --include="*.config" .
# Find platform-specific code
grep -r "#if.*64\|WIN32\|WIN64\|LINUX\|OSX" --include="*.cs" .完整的 API 参考
命名空间变更
// Pdfium.NET
using Pdfium;
using Pdfium.Net;
using PdfiumViewer;
// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;// Pdfium.NET
using Pdfium;
using Pdfium.Net;
using PdfiumViewer;
// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;IRON VB CONVERTER ERROR developers@ironsoftware.com核心类映射
| Pdfium.NET | IronPDF | 备注 |
|---|---|---|
| <代码>PDF 文档</代码 | <代码>PDF 文档</代码 | 名称相同,功能不同 |
| <代码>PDF 页</代码 | <代码>PDF 页</代码 | 类似界面 |
| <代码>PDF页面集合</代码 | <代码>PDF页面集合</代码 | 类似界面 |
| (不可用)_ | <代码>ChromePdfRenderer</代码 | PDF 创建 |
| (不可用)_ | <代码>HtmlHeaderFooter</代码 | 页眉/页脚 |
文档加载映射
| Pdfium.NET | IronPDF | 备注 |
|---|---|---|
| <代码>PdfDocument.Load(path)</代码 | <代码>PdfDocument.FromFile(路径)</代码 | 从文件加载 |
| <代码>PdfDocument.Load(stream)</代码 | <代码>PdfDocument.FromStream(流)</代码 | 从流加载 |
| <代码>PdfDocument.Load(bytes)</代码 | <代码>PdfDocument.FromBinaryData(字节)</代码 | 从字节加载 |
| <代码>新建 PdfDocument(path)</ 代码 | <代码>PdfDocument.FromFile(路径)</代码 | 构造模式 |
文档属性映射
| Pdfium.NET | IronPDF | 备注 |
|---|---|---|
| <代码>document.PageCount</代码 | <代码>document.PageCount</代码 | 相同 |
| <代码>document.Pages</代码 | <代码>document.Pages</代码 | 类似文集 |
| <代码>document.Pages[index]</代码 | <代码>document.Pages[index]</代码 | 零基础 |
| <代码>document.GetPageSize(index)</代码 | <代码>document.Pages[index].Width/Height</代码 | 直接属性 |
文本提取映射
| Pdfium.NET | IronPDF | 备注 |
|---|---|---|
| <代码>document.GetPdfText(pageIndex)</代码 | <代码>document.Pages[index].Text</代码 | 每页 |
| (手动循环) | <代码>document.ExtractAllText()</代码 | 同时翻译所有页面 |
| <代码>page.GetTextBounds()</代码 | <代码>page.Text</代码 | 简化 |
保存文档映射
| Pdfium.NET | IronPDF | 备注 |
|---|---|---|
| <代码>document.Save(路径)</代码 | <代码>document.SaveAs(路径)</代码 | 不同的方法名称 |
| <代码>document.Save(流)</代码 | <代码>document.Stream</代码 | 访问流 |
| (不可用)_ | <代码>document.BinaryData</代码 | 获取字节 |
页面渲染映射
| Pdfium.NET | IronPDF | 备注 |
|---|---|---|
| <代码>page.Render(宽度,高度)</代码 | <代码>pdf.RasterizeToImageFiles(path, dpi)</ 代码 | 光栅化 |
| <代码>page.Render(width, height, flags)</代码 | DPI 参数 | 质量控制 |
| <代码>document.Render(index, width, height)</代码 | <代码>pdf.RasterizeToImageFiles()</代码 | 批量渲染 |
| <代码>page.RenderToScale(scale)</代码 | DPI:<代码>72*比例尺</代码 | 比例尺到 DPI 的转换 |
Pdfium 中没有的新功能
| IronPdf 特点 | 说明 |
|---|---|
| <代码>ChromePdfRenderer.RenderHtmlAsPdf()</代码 | 从 HTML 创建 |
| <代码>ChromePdfRenderer.RenderUrlAsPdf()</代码 | 从 URL 创建 |
| <代码>ChromePdfRenderer.RenderHtmlFileAsPdf()</代码 | 从 HTML 文件创建 |
| <代码>PdfDocument.Merge()</代码 | 合并 PDF |
| <代码>pdf.CopyPages()</代码 | 提取页面 |
| <代码>pdf.RemovePages()</代码 | 删除页面 |
| <代码>pdf.InsertPdf()</代码 | 在位置处插入 PDF |
| <代码>pdf.ApplyWatermark()</代码 | 添加水印 |
| <代码>pdf.AddHtmlHeaders()</代码 | 添加页眉 |
| <代码>pdf.AddHtmlFooters()</代码 | 添加页脚 |
| <代码>pdf.SecuritySettings</代码 | 密码保护 |
| <代码>pdf.SignWithDigitalSignature()</代码 | 数字签名 |
| <代码>pdf.Form</代码 | 表格填写 |
代码迁移示例
示例 1:从 PDF 中提取文本
之前 (Pdfium):
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
string pdfPath = "document.pdf";
using (var document = PdfDocument.Load(pdfPath))
{
StringBuilder text = new StringBuilder();
for (int i = 0; i < document.PageCount; i++)
{
// Note: PdfiumViewer has limited text extraction capabilities
// Text extraction requires additional work with Pdfium.NET
string pageText = document.GetPdfText(i);
text.AppendLine(pageText);
}
Console.WriteLine(text.ToString());
}
}
}// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
string pdfPath = "document.pdf";
using (var document = PdfDocument.Load(pdfPath))
{
StringBuilder text = new StringBuilder();
for (int i = 0; i < document.PageCount; i++)
{
// Note: PdfiumViewer has limited text extraction capabilities
// Text extraction requires additional work with Pdfium.NET
string pageText = document.GetPdfText(i);
text.AppendLine(pageText);
}
Console.WriteLine(text.ToString());
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comAfter (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string pdfPath = "document.pdf";
var pdf = PdfDocument.FromFile(pdfPath);
string text = pdf.ExtractAllText();
Console.WriteLine(text);
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string pdfPath = "document.pdf";
var pdf = PdfDocument.FromFile(pdfPath);
string text = pdf.ExtractAllText();
Console.WriteLine(text);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com这里的差异非常大。 Pdfium 要求使用 GetPdfText(pageIndex) 手动循环浏览每个页面,构建 StringBuilder 并管理 using 语句以进行正确处理。 代码指出,"PdfiumViewer 的文本提取功能有限","文本提取需要额外的工作"。
IronPDF 将此简化为三行:使用 PdfDocument.FromFile() 加载,使用 ExtractAllText() 提取,以及输出。 ExtractAllText() 方法可自动处理所有页面,并具有更高级的文本提取功能。 如果您需要按页提取,可以使用 pdf.Pages[index].Text. 有关其他选项,请参阅 文本提取文档。
示例 2:PDF 合并
之前 (Pdfium):
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.IO;
using System.Collections.Generic;
// Note: PdfiumViewer does not have native PDF merging functionality
// You would need to use additional libraries or implement custom logic
class Program
{
static void Main()
{
List<string> pdfFiles = new List<string>
{
"document1.pdf",
"document2.pdf",
"document3.pdf"
};
// PdfiumViewer is primarily for rendering/viewing
// PDF merging is not natively supported
// You would need to use another library like iTextSharp or PdfSharp
Console.WriteLine("PDF merging not natively supported in PdfiumViewer");
}
}// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.IO;
using System.Collections.Generic;
// Note: PdfiumViewer does not have native PDF merging functionality
// You would need to use additional libraries or implement custom logic
class Program
{
static void Main()
{
List<string> pdfFiles = new List<string>
{
"document1.pdf",
"document2.pdf",
"document3.pdf"
};
// PdfiumViewer is primarily for rendering/viewing
// PDF merging is not natively supported
// You would need to use another library like iTextSharp or PdfSharp
Console.WriteLine("PDF merging not natively supported in PdfiumViewer");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comAfter (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<string> pdfFiles = new List<string>
{
"document1.pdf",
"document2.pdf",
"document3.pdf"
};
var pdf = PdfDocument.Merge(pdfFiles);
pdf.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<string> pdfFiles = new List<string>
{
"document1.pdf",
"document2.pdf",
"document3.pdf"
};
var pdf = PdfDocument.Merge(pdfFiles);
pdf.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com这个例子凸显了一个基本的能力差距。Pdfium 无法合并 PDF--代码明确指出 "PdfiumViewer 本身不支持 PDF 合并 "和 "您需要使用 iTextSharp 或 PdfSharp 等其他库"。
IronPDF 通过静态<代码>PdfDocument.Merge()</代码方法提供本地合并功能,该方法可直接接受文件路径列表。 结果是一个新的<代码>PDF 文档</代码文件,您可以使用 SaveAs() 保存该文件。 了解有关 合并和拆分 PDF 的更多信息。
示例 3:HTML 到 PDF 的转换
之前 (Pdfium):
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System.IO;
using System.Drawing.Printing;
// Note: PdfiumViewer is primarily for viewing/rendering PDFs, not creating them from HTML
// For HTML to PDF with Pdfium.NET, you would need additional libraries
// This example shows a limitation of Pdfium.NET
class Program
{
static void Main()
{
// Pdfium.NET does not have native HTML to PDF conversion
// You would need to use a separate library to convert HTML to PDF
// then use Pdfium for manipulation
string htmlContent = "<h1>Hello World</h1>";
// This functionality is not directly available in Pdfium.NET
Console.WriteLine("HTML to PDF conversion not natively supported in Pdfium.NET");
}
}// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System.IO;
using System.Drawing.Printing;
// Note: PdfiumViewer is primarily for viewing/rendering PDFs, not creating them from HTML
// For HTML to PDF with Pdfium.NET, you would need additional libraries
// This example shows a limitation of Pdfium.NET
class Program
{
static void Main()
{
// Pdfium.NET does not have native HTML to PDF conversion
// You would need to use a separate library to convert HTML to PDF
// then use Pdfium for manipulation
string htmlContent = "<h1>Hello World</h1>";
// This functionality is not directly available in Pdfium.NET
Console.WriteLine("HTML to PDF conversion not natively supported in Pdfium.NET");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comAfter (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string htmlContent = "<h1>Hello World</h1>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string htmlContent = "<h1>Hello World</h1>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com本例展示了最显著的能力差异。 Pdfium 明确指出 "Pdfium.NET 不支持 HTML 到 PDF 的转换 "和 "您需要使用单独的库将 HTML 转换为 PDF"。
IronPDF 通过<代码>ChromePdfRenderer</代码提供原生 HTML 到 PDF 的转换,其内部使用 Chromium 引擎来准确呈现 HTML、CSS 和 JavaScript。 RenderHtmlAsPdf() 方法可将 HTML 字符串直接转换为 PDF 文档。IronPDF还可以使用 RenderUrlAsPdf() 渲染 URL,使用 RenderHtmlFileAsPdf() 渲染 HTML 文件。 请参阅 HTML 转 PDF 文档,了解全面的示例。
本地依赖关系移除
从 IronPdf 迁移到IronPDF的最大好处之一是消除了本地二进制管理。
之前 (Pdfium) - 复杂部署
MyApp/
├─── bin/
│ ├─── MyApp.dll
│ ├── Pdfium.NET.dll
│ ├── x86/
│ │ └── pdfium.dll
│ └── x64/
│ └── pdfium.dll
运行时
│ ├─── win-x86/native/
│ │ └── pdfium.dll
│ └───-win-x64/native/
│ └── pdfium.dll后 (IronPDF) - 清洁部署
MyApp/
├─── bin/
│ ├─── MyApp.dll
│ └─── IronPdf.dll # 包含的所有内容移除本地二进制引用
# Delete native PDFium binaries
rm -rf x86/ x64/ runtimes/
# Remove from .csproj
# Delete any <Content Include="pdfium.dll" /> entries
# Delete any <None Include="x86/pdfium.dll" /> entries# Delete native PDFium binaries
rm -rf x86/ x64/ runtimes/
# Remove from .csproj
# Delete any <Content Include="pdfium.dll" /> entries
# Delete any <None Include="x86/pdfium.dll" /> entries关键迁移说明
缩放比例到 DPI 转换
Pdfium 使用比例系数; IronPdf 使用 DPI:
// Formula:IronPDFDPI = 72 × Pdfium scale
// Pdfium scale 2.0 →IronPDFDPI 144
pdf.RasterizeToImageFiles("*.png", DPI: 144);// Formula:IronPDFDPI = 72 × Pdfium scale
// Pdfium scale 2.0 →IronPDFDPI 144
pdf.RasterizeToImageFiles("*.png", DPI: 144);IRON VB CONVERTER ERROR developers@ironsoftware.com文档加载方法更改
// Pdfium
PdfDocument.Load(path)
// IronPDF
PdfDocument.FromFile(path)// Pdfium
PdfDocument.Load(path)
// IronPDF
PdfDocument.FromFile(path)IRON VB CONVERTER ERROR developers@ironsoftware.com保存方法更改
// Pdfium
document.Save(path)
// IronPDF
pdf.SaveAs(path)// Pdfium
document.Save(path)
// IronPDF
pdf.SaveAs(path)IRON VB CONVERTER ERROR developers@ironsoftware.com处置模式简化
// Pdfium:要求explicit disposal
using (var document = PdfDocument.Load(path))
using (var page = document.Pages[0])
using (var bitmap = page.Render(1024, 768))
{
bitmap.Save("output.png");
}
// IronPDF: Simplified
var pdf = PdfDocument.FromFile(path);
pdf.RasterizeToImageFiles("output.png");// Pdfium:要求explicit disposal
using (var document = PdfDocument.Load(path))
using (var page = document.Pages[0])
using (var bitmap = page.Render(1024, 768))
{
bitmap.Save("output.png");
}
// IronPDF: Simplified
var pdf = PdfDocument.FromFile(path);
pdf.RasterizeToImageFiles("output.png");IRON VB CONVERTER ERROR developers@ironsoftware.com删除特定平台的代码
// Pdfium:要求platform detection
#if WIN64
// Load x64 pdfium.dll
#else
// Load x86 pdfium.dll
#endif
// IronPDF: Remove all platform-specific code
// Just use the API directly// Pdfium:要求platform detection
#if WIN64
// Load x64 pdfium.dll
#else
// Load x86 pdfium.dll
#endif
// IronPDF: Remove all platform-specific code
// Just use the API directlyIRON VB CONVERTER ERROR developers@ironsoftware.com功能对比摘要
| 特征 | Pdfium.NET | IronPDF |
|---|---|---|
| 加载 PDF | ✓ | ✓ |
| 渲染为图像 | ✓ | ✓ |
| 提取文本 | ✓ (基本) | ✓(高级) |
| 页面信息 | ✓ | ✓ |
| 从 HTML 创建 | ✗ | ✓ |
| 从 URL 创建 | ✗ | ✓ |
| 合并 PDF | ✗ | ✓ |
| 拆分 PDF | ✗ | ✓ |
| 添加水印 | ✗ | ✓ |
| 页眉/页脚 | ✗ | ✓ |
| 表格填写 | ✗ | ✓ |
| 数字签名 | ✗ | ✓ |
| 密码保护 | ✗ | ✓ |
| 本地依赖性 | 要求 | 无 |
| 跨平台 | 复杂 | 自动翻译 |
| 内存管理 | 手册处理 | 简化 |
迁移清单
迁移前
- [ ] 确定代码库中 Pdfium 的所有用法
- [ ] 记录当前使用的渲染尺寸/比例
- [ ] 列出项目中的本地二进制位置
- [ ] 检查特定平台的加载代码
- [ ] 确定 PDF 创建需求(目前是否使用单独的工具?)
- [ ] 审查转换的处置模式
- [ ] 获取 IronPdf 许可证密钥
软件包变更
- [ ] 删除
Pdfium.NET,Pdfium.Net.SDK,PdfiumViewerNuGet 软件包 - [ ] 从 x86/、x64/、runtimes/ 文件夹中删除本地 pdfium.dll 二进制文件
- [ ] 删除特定平台的条件编译
- [ ] 更新 .csproj 以移除本地二进制引用
- [ ] 安装
IronPDFNuGet 软件包:<代码>dotnet 添加软件包 IronPdf
代码更改
- [ ] 在启动时添加许可证密钥配置
- [ ] 将
PdfDocument.Load()替换为PdfDocument.FromFile()。 - [ ] 将
document.Save()替换为pdf.SaveAs()。 - [ ] 将
document.GetPdfText(i)循环替换为pdf.ExtractAllText()循环 - [ ] 将比例因子转换为 DPI 值(DPI = 72 × 比例)
- [ ] 简化处置模式(删除嵌套的 using 语句)
- [ ] 删除特定平台代码
后迁移
- [ ] 测试渲染输出质量
- [ ] 比较文本提取结果
- [ ] 测试跨平台部署
- [ ] 添加新功能(HTML 到 PDF、合并、水印、安全性)
- [ ] 更新文档
结论
从 IronPdf 迁移到IronPDF可将您的 PDF 工作流程从具有本地依赖性复杂性的以渲染为重点的库转变为具有创建、操作和渲染功能的综合 PDF 解决方案。
本次迁移的主要变化有 1.范围:仅渲染 → 完整的 PDF 解决方案 2.依赖关系:需要本地二进制文件 → 完全托管 3.加载:<代码>PdfDocument.Load()</代码> → <代码>PdfDocument.FromFile()</代码 4.保存:<代码>Save()</代码> → <代码>SaveAs()</代码 5.文本提取:使用 GetPdfText() 的手动循环 → 单个 ExtractAllText() 调用 6.渲染:基于比例 → 基于 DPI(DPI = 72 × 比例) 7.新功能:HTML 转 PDF、合并、水印、安全性、表单等功能






