配置选项参考

配置选项参考

大多数在 Aspose.PDF FOSS for .NET 中的加载、保存和转换操作接受一个 *Options 用于配置该操作行为的对象。 LoadOptions and SaveOptions 是此族的两个抽象根基:每个特定格式的加载器(HtmlLoadOptions, MdLoadOptions, TxtLoadOptions, SvgLoadOptions)派生自 LoadOptions,以及每个特定格式的写入器(PdfSaveOptions, HtmlSaveOptions, SvgSaveOptions)派生自 SaveOptions。此页面解释了该族如何协同工作,并记录了尚未在 转换和优化 指南。


使用 LoadOptions 加载文档

每个 *LoadOptions 子类都继承自 LoadOptions 基类的 WarningHandler、WarningHandlerName、DisableFontLicenseVerifications 和 LoadFormat,随后添加其源格式特有的属性。

// HTML: resolve relative images/CSS against a base path
var htmlOptions = new HtmlLoadOptions("assets/");
htmlOptions.IsEmbedFonts = true;
using var htmlDoc = new Document("input.html", htmlOptions);

// Markdown: apply custom CSS while rendering to PDF
var mdOptions = new MdLoadOptions();
mdOptions.CssStyles = "body { font-family: sans-serif; }";
using var mdDoc = new Document("input.md", mdOptions);

// Plain text: control the rendered font size
var txtOptions = new TxtLoadOptions();
txtOptions.FontSize = 11;
using var txtDoc = Document.Open("input.txt", txtOptions);

// SVG: let the page size follow the artwork dimensions
var svgOptions = new SvgLoadOptions();
svgOptions.AdjustPageSize = true;
using var svgDoc = new Document("input.svg", svgOptions);

使用 PdfSaveOptions 保存为 PDF

PdfSaveOptions 在将 Document 导出为 PDF 时控制字体处理和临时文件位置。它从共享的 SaveOptions 基类继承了 CloseResponse、SaveFullPath、WarningHandler、CacheGlyphs 和 SaveFormat。

using var doc = Document.Open("input.pdf");

var pdfOptions = new PdfSaveOptions();
pdfOptions.DefaultFontName = "Arial";
pdfOptions.TempPath = "temp/";

doc.Save("output.pdf", pdfOptions);

导出为 HTML 和 SVG

HtmlSaveOptions 和 SvgSaveOptions 都派生自 UnifiedSaveOptions。除了转换指南中涉及的图像/字体/布局控制之外,HtmlSaveOptions 还允许您选择文档类型和分页策略,而 SvgSaveOptions 完全依赖继承的 SaveOptions/UnifiedSaveOptions 成员。

using var doc = Document.Open("input.pdf");

// Fixed-layout HTML5 output, split one file per page
var htmlOptions = new HtmlSaveOptions(HtmlDocumentType.Html5, fixedLayout: true);
htmlOptions.SplitIntoPages = true;
htmlOptions.ImageResolution = 150;
htmlOptions.Title = "Converted Document";
doc.Save("output.html", htmlOptions);

// SVG export configured through the shared SaveOptions members
var svgOptions = new SvgSaveOptions();
svgOptions.SaveFullPath = false;
doc.Save("output.svg", svgOptions);

使用 Document.Convert 的一步转换

Document.Convert 接受源 LoadOptions 和目标 SaveOptions,在一次静态调用中一起处理,这样您就可以在格式之间转换,而无需手动打开、转换和释放 Document。

var loadOptions = new HtmlLoadOptions();
var saveOptions = new PdfSaveOptions();

Document.Convert("input.html", loadOptions, "output.pdf", saveOptions);

文本提取选项

TextExtractionOptions 控制 TextAbsorber(以及 TextDevice)格式化提取的文本,独立于执行提取的吸收器或设备类。

using var doc = Document.Open("input.pdf");

var extractionOptions = new TextExtractionOptions(TextFormattingMode.Raw);
extractionOptions.ScaleFactor = 1.0;
extractionOptions.IgnoreResourceFontErrors = true;

var absorber = new TextAbsorber(extractionOptions);
doc.Pages[1].Accept(absorber);

string text = absorber.Text;

使用 OptimizationOptions 优化输出

OptimizationOptions 是一种独立的、与格式无关的文件大小压缩机制。它通过 Document.OptimizeResources 应用,而不是通过 *SaveOptions 类,因此可以与任何保存路径结合使用。

using var doc = Document.Open("input.pdf");

var optimizationOptions = new OptimizationOptions();
optimizationOptions.RemoveUnusedObjects = true;
optimizationOptions.CompressObjects = true;
optimizationOptions.SubsetFonts = true;
optimizationOptions.ImageCompressionOptions.CompressImages = true;
optimizationOptions.ImageCompressionOptions.ImageQuality = 80;

doc.OptimizeResources(optimizationOptions);
doc.Save("optimized.pdf");

技巧与最佳实践

  • 每个 *LoadOptions 和 *SaveOptions 子类都继承 WarningHandler/WarningHandlerName——将两者一起设置以捕获可恢复的诊断信息。
  • 优先使用特定格式的 *LoadOptions/*SaveOptions 实例,而不是依赖基于扩展名的格式推断,尤其在处理流而非文件路径时。
  • 使用 Document.Convert(srcFileName, loadOptions, dstFileName, saveOptions) 进行一次性转换,而不是手动打开并重新保存 Document。
  • OptimizationOptions 与 *SaveOptions 系列无关——在调用 Save 之前先调用 OptimizeResources,即可在不论目标格式的情况下压缩输出。
  • 在相同设置适用的多个文档之间复用同一个选项实例,而不是每次都重新构建。

常见问题

问题原因修复
加载 HTML 时未解析相对 image/CSS 路径HtmlLoadOptions.BasePath 从未设置通过 HtmlLoadOptions(basePath) 构造函数传递基础路径
生成了错误的输出格式针对目标扩展名使用了不匹配的 *SaveOptions 子类或 SaveFormat使用匹配目标格式的 *SaveOptions 子类
OptimizeResources 不会减小文件大小OptimizationOptions 保持默认设置,未启用任何减小标志显式设置 RemoveUnusedObjects、CompressObjects 和 SubsetFonts
加载/保存期间产生的警告会被静默丢弃在未指定处理程序的情况下设置了 WarningHandler将 WarningHandler 和 WarningHandlerName 一起设置

FAQ

LoadOptions 与 SaveOptions 有何区别?

LoadOptions 配置文档从非 PDF 源格式(HTML、Markdown、文本、SVG)读取的方式;SaveOptions 配置 Document 写入输出格式(PDF、HTML、SVG)的方式。每个特定格式的选项类只继承自这两个根类中的一个。

打开原生 PDF 时,我需要指定 LoadOptions 吗?

不需要。Document.Open 和 Document 构造函数接受普通文件路径或流来读取原生 PDF 输入。只有在导入非 PDF 源格式(例如 HTML、Markdown、文本或 SVG)时才需要使用 *LoadOptions 子类。

我可以在多个 Save 调用中复用同一个 SaveOptions 实例吗?

可以。选项实例只是一个普通的配置对象;它不保存每个文档的状态,因此相同的 PdfSaveOptions 或 HtmlSaveOptions 实例可以传递给 Save,用于多个共享相同设置的文档。

OptimizationOptions 与特定格式的 SaveOptions 类有什么区别?

OptimizationOptions 由 Document.OptimizeResources 消费,是保存之外的独立步骤。它会删除未使用的对象/流并在原位重新压缩图像,并且可以在调用 Save 之前,对任何 *SaveOptions 子类应用。

每种源/目标格式都有 LoadOptions 和 SaveOptions 两个类吗?

不一定是对称的。例如,Markdown 和纯文本当前提供 MdLoadOptions/TxtLoadOptions 用于导入,但没有相匹配的 *SaveOptions 对应项,反映了每种格式支持转换的方向。


API Reference 摘要

类 / 方法描述
LoadOptions所有文档加载选项类型的基类
SaveOptions所有文档保存选项类型的基类
HtmlLoadOptions将 HTML 导入为 PDF 文档的选项
MdLoadOptions将 Markdown 导入为 PDF 文档的选项
TxtLoadOptions将纯文本导入为 PDF 文档的选项
SvgLoadOptions将 SVG 导入为 PDF 文档的选项
PdfSaveOptions将文档保存为 PDF 的选项
HtmlSaveOptions将文档另存为 HTML 的选项
SvgSaveOptions将文档另存为 SVG 的选项
UnifiedSaveOptions用于 HtmlSaveOptions 和 SvgSaveOptions 的共享基础
Document.Convert使用 LoadOptions/SaveOptions 对进行的静态一步转换
TextExtractionOptions用于 TextAbsorber 文本提取的格式化配置
OptimizationOptions与格式无关的文档大小/资源优化设置
Document.OptimizeResources将 OptimizationOptions 实例应用于文档

另请参阅

 中文