我们很高兴宣布 GroupDocs.Conversion for .NET v26.10 已于 2026年10月 发布。此版本重点在于控制文档允许加载的内容:您的代码现在可以决定文档请求的每个外部资源,默认设置对未知来源的文档安全。它还使转换遵循请求的输出格式和页面选择,修复了一系列转换失败和 .NET Framework 加载问题,并更新了一个安全敏感的依赖项——共计 60 项功能、改进和错误修复。

亮点

决定每个文档可以加载的内容

文档经常指向外部资源:CDN 上的图片、样式表、脚本、3D 纹理、XBRL 分类法等。在 26.10 中,您可以查看这些请求并在代码中决定如何处理。实现 IExternalResourceHandler 并通过加载选项的 ExternalResourceHandler 属性进行设置。处理程序会收到每个资源以及已填充的默认决策,您可以允许、跳过,或——对大多数格式而言——自行提供内容,例如从自己的缓存中获取,从而根本不发起请求。

此处理程序在默认允许的基础上,加载来自受信任主机的 JPEG 图像:

public class TrustedJpegHandler : IExternalResourceHandler
{
    public void OnLoading(ExternalResourceLoadingArgs args)
    {
        Uri uri;
        if (Uri.TryCreate(args.Uri, UriKind.Absolute, out uri)
            && uri.Scheme == Uri.UriSchemeHttps
            && string.Equals(uri.Host, "cdn.example.com", StringComparison.OrdinalIgnoreCase)
            && (uri.AbsolutePath.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase)
                || uri.AbsolutePath.EndsWith(".jpeg", StringComparison.OrdinalIgnoreCase)))
        {
            args.Skipped = false;
        }
    }
}
WebLoadOptions loadOptions = new WebLoadOptions
{
    ExternalResourceHandler = new TrustedJpegHandler()
};
using (Converter converter = new Converter("sample.html", (LoadContext loadContext) => loadOptions))
{
    converter.Convert("converted.pdf", new PdfConvertOptions());
}

该处理程序适用于 Web、XML、文字处理、电子表格、CSV 与 TSV、演示文稿、电子邮件、SVG、金融和 3D 文档的加载选项。

对不受信任文档的安全默认设置

转换用户上传的文件时,不应让服务器读取其他文件或访问任意主机。使用默认设置,26.10:

  • 仅从文档自身文件夹加载本地文件,绝不从 UNC 路径加载;
  • 不在 HTML、MHTML、XHTML 和 SVG 文档中运行脚本,也不请求脚本文件;
  • 对 SVG、3D 模型、XBRL、XSL-FO、Markdown 和电子邮件转电子表格的转换应用相同规则。

当您的文档确实需要外部资源时,可按需允许:在 WhitelistedResources 中列出受信任位置,使用处理程序逐个资源决定,或对您信任的文档将 SkipExternalResources = false。仅当在 WebLoadOptions 或 SvgLoadOptions 上将 ExecuteScripts = true 时才会运行脚本。无论设置如何,UNC 路径以及 javascript: 或 vbscript: 引用都永不加载。

您请求的输出

部分转换曾忽略请求的部分内容。以前总是写入 DOCX、XLSX、PPTX 或多帧 TIFF,无论目标格式为何;页面选择在电子邮件、Web 和多页 TIFF 转文字处理、Word Flat OPC 文档、以及 Project 转 PS 与 PCL 时被忽略。现在所有这些都会按照转换选项生成所需的输出。水印现在在将非图像文档转换为图像时也会出现,CSV 与 TSV、MHT 与 MHTML 页面在转换为图像时会渲染而不是显示其 MIME 源,透明背景在 J2K、JP2、WMF 与 WMZ 输出时不再变黑。

更少的转换失败

PostScript 文件在 .NET Framework 上使用 run 或 file 操作符、PSD、PSB 与 AI 文档逐页转换、整个 CAD 图纸转 TeX、带内联 SVG 的 XHTML、PDF、XPS 与 SVG 转 EPUB、以及 Visio 与 SVG 转电子表格,现在都能成功转换,而不再失败。在电子邮件、邮箱和归档文件中,无法转换为目标格式的附件不再导致整个转换失败,无法加载的嵌入文档现在通过 ConversionEvents.OnDocumentFailed 报告。

安全、授权和 .NET Framework

  • System.Security.Cryptography.Pkcs 升级至 8.0.2(在 .NET 10 上为 10.0.13),修复 CVE-2026-84008 与 CVE-2026-70162。
  • .NET Framework 项目不再因加载 RuntimeInformation 或 ValueTuple 而失败,EML、HTML 与 CAD 转换在 .NET Framework 4.6.2 至 4.7.0 上也不再失败。
  • 带有效授权的 WebP 转换不再显示试用徽章。评估模式下,3 页限制同样适用于 SVG、SVGZ、PS 与 PCL 输出。

本次发布的新功能

  • [Feature] 为每个外部资源添加回调,以检查、允许、拒绝或提供资源内容
  • [Improvement] 为 SVG 与 SVGZ 文档提供 SvgLoadOptions 作为加载选项
  • [Improvement] 按文件夹和位置为没有主题的 OLM 与 NSF 项目命名,并避免在邮箱项目名称中使用 Windows 保留设备名
  • [Improvement] 将无法加载的归档、电子邮件和邮箱项目报告给文档失败处理程序,而不仅仅记录日志
  • [Bug] 在使用有效授权时,从 Webp 转换仍会应用试用徽章
  • [Bug] 特定 VSDX 文件转换——文本超出框体边界
  • [Bug] ODT 转 PDF 时双删除线文本未保留
  • [Bug] VCF 转 Excel 转换问题
  • [Bug] 修复在使用 PackageReference 的旧式 .NET Framework 4.7.1+ 项目中加载 RuntimeInformation 失败的转换
  • [Bug] 修复在 packages.config 项目中加载 RuntimeInformation 或 ValueTuple 失败的转换
  • [Bug] 修复在 .NET Framework 4.6.2 至 4.7.0 运行时 EML、HTML 与 CAD 转换失败的问题
  • [Bug] 将 WordProcessing、Pdf 与 ProjectManagement 文档转换为任何电子表格格式时始终生成 XLSX
  • [Bug] 将 WordProcessing、Pdf 与 Diagram 文档转换为任何演示文稿格式时始终生成 PPTX
  • [Bug] 修复 PST、OST 与 MBOX 转换在没有主题的项目上失败,以及 PST 便签转换为不可读文本的问题
  • [Bug] 将单页文档转换为非 TIFF 图像格式时始终生成多帧 TIFF
  • [Bug] [GroupDocs.Conversion for .NET] 将 System.Security.Cryptography.Pkcs 更新至 8.0.2(CVE-2026-84008 / CVE-2026-70162)
  • [Bug] 将文本或图像水印应用于将非图像文档转换为图像时未生效
  • [Bug] 将页面背景设为透明时,转换为 J2K、JP2、WMF 与 WMZ 会变黑
  • [Bug] Word 基础文档的 WMZ 输出包含 gzipped PNG,图像的 EMZ 输出被压缩两次
  • [Bug] 将 MHT 与 MHTML 页面转换为图像时显示 MIME 源而非页面
  • [Bug] Publisher 文档的文档信息始终报告为一页
  • [Bug] 将 CSV 与 TSV 文档转换时水印未应用
  • [Bug] 仅从精确的白名单 URL 前缀和文档自身文件夹加载外部资源,绝不从 UNC 路径加载
  • [Bug] 修复 CAD、图像、图表、DjVu、VCF 与 Email 转 WordProcessing 时除 DOC 之外的所有目标均保存为 DOCX
  • [Bug] 修复 Email 转 WordProcessing 时忽略页面选择和页面范围
  • [Bug] 修复多页 TIFF 转 WordProcessing 时忽略页面选择
  • [Bug] 在转换 Markdown 与 CHM 文档时尊重 SkipExternalResources 与 WhitelistedResources
  • [Bug] 在 email 转电子表格、电子表格和页面范围转换时尊重 SkipExternalResources 与 WhitelistedResources
  • [Bug] 将 HTML 转电子表格时默认不加载文档文件夹外的图像
  • [Bug] 将 SVG 转演示文稿、文字处理、电子表格、XPS 或 EPS 时默认不加载外部资源
  • [Bug] 将 3D 文档转换时默认不加载模型文件夹外的材质库、纹理和缓冲区
  • [Bug] 将 XML 通过 XSL-FO 样式表转换时默认不加载外部图像
  • [Bug] 修复 HTML 与 MHTML 转 WordProcessing 时始终保存为 DOCX 的问题
  • [Bug] 将 XBRL 与内联 XBRL 分类法默认不从文档文件夹外加载
  • [Bug] 转换 HTML、XHTML 与 SVG 文档时停止运行脚本并下载脚本文件
  • [Bug] 修复 Web 转 WordProcessing 时忽略页面选择和页面范围
  • [Bug] 修复 Word Flat OPC 文档忽略页面选择和页面范围
  • [Bug] 将 3D 文档转换时默认不嵌入模型文件夹外的纹理
  • [Bug] 修复单流压缩归档在转换时文件没有名称的问题
  • [Bug] 修复在允许外部资源时仍会获取 javascript: 与 vbscript: 引用的问题
  • [Bug] 修复带内联 SVG 的 XHTML 文档转换失败
  • [Bug] 修复 HTML 转 HTML 时相对 CSS @import 无法加载导致的失败
  • [Bug] 修复 Visio 与 SVG 转电子表格在空白页面上失败的问题
  • [Bug] 修复 PDF、XPS 与 SVG 转 EPUB 时超链接未覆盖文本导致的失败
  • [Bug] 修复电子邮件、邮箱和归档转换中附件无法转换为目标格式导致的整体失败
  • [Bug] 修复 PCL 转换在 PDF 已转换后替换 Courier New 及其他已安装字体的问题
  • [Bug] GroupDocs.Conversion.LowCode 26.9.0:Linux 上 DOCX 转 PDF 忽略字体替换,使用字母顺序第一的字体
  • [Bug] 修复 GroupDocs.Conversion.LowCode 26.9.0 中的 XML 文档错误
  • [Bug] 修复在 .NET Framework 上使用 run 或 file 操作符的 PostScript 转换失败
  • [Bug] 修复未授权的转换在页面描述语言格式上忽略试用页数限制
  • [Bug] 修复 PSD、PSB 与 Illustrator AI 文档逐页转换时抛出异常
  • [Bug] 修复将视频转换为音频格式时即使设置了视频连接器仍失败的问题
  • [Bug] 修复 ProjectManagement 转 PS 与 PCL 时产生额外页面并忽略页面选择
  • [Bug] 修复 ProjectManagement 转 SVG 时写入没有字节顺序标记的 UTF-16
  • [Bug] 修复 3D 转 glTF 与 OBJ 时将缓冲区和材质文件写入工作目录
  • [Bug] 修复 MHT 与 MHTML 转 PDF、XPS、TeX 与 WordProcessing 时显示 MIME 源而非页面
  • [Bug] 修复 CAD 转 TeX 时整个图纸因 FileTypeNotSupported 而失败
  • [Bug] 修复 PDL 与 XML/JSON 转 PS 与 PCL 时添加额外页面
  • [Bug] 修复 CAD 转 PS 与 PCL 时仅保留多页 DWF 图纸的第一页
  • [Bug] 修复 MBOX 转换在邮件主题看起来像文件名时失败或丢失邮件头

公共 API 更改

新 API

  • IExternalResourceHandler 与 ExternalResourceLoadingArgs(Uri、Skipped、Data)位于 GroupDocs.Conversion.Options.Load 命名空间。
  • IResourceLoadingOptions 以及实现该接口的加载选项上新增 ExternalResourceHandler。
  • WebLoadOptions 与 SvgLoadOptions 上新增 ExecuteScripts。
  • FinanceLoadOptions 与 ThreeDLoadOptions 上新增 SkipExternalResources、WhitelistedResources 与 ExternalResourceHandler,并实现 IResourceLoadingOptions。

⚠️ 升级前检查

  • 外部资源: 依赖于文件夹外本地文件、UNC 路径或脚本的文档现在在没有这些资源的情况下仍能转换。请按照 对不受信任文档的安全默认设置 中的描述,允许您信任的资源。

  • 白名单条目: 每个 WhitelistedResources 条目必须是绝对 URI 前缀,例如 https://cdn.example.com/assets/ 或 file:///C:/assets/。类似 jpg 或 example.com 的条目(旧版本会在 URL 任意位置匹配)现在会导致加载失败并抛出 InvalidLoadOptionsException。

  • XBRL 与内联 XBRL: 分类法位于文件夹外或从流加载的申报文件现在会因 InvalidLoadOptionsException 而加载失败。请按如下方式加载您信任的申报文件:

    using (Converter converter = new Converter("filing.xbrl", (LoadContext loadContext) => new FinanceLoadOptions { SkipExternalResources = false }))
    {
        converter.Convert("filing.xlsx", new SpreadsheetConvertOptions());
    }
    
  • SVG 与 SVGZ: 未使用加载选项进行转换时,现在会使用 SvgLoadOptions,且 PossibleConversions.LoadOptions 返回 SvgLoadOptions 而非 PageDescriptionLanguageLoadOptions。

  • 输出格式与页面: 转换现在遵循请求的格式和页面选择,因此相同选项在不同版本之间的输出可能不同。PublisherDocumentInfo.PagesCount 现在返回真实的页数。

  • 自定义 IResourceLoadingOptions 实现 必须添加新的 ExternalResourceHandler 属性。

[发行说明](https://releases.groupdocs.com/conversion/net/release-notes/2026/groupdocs-conversion-for-net-26-10-release-notes/#public-api-and-backward-incompatible-changes)列出了每项更改及其精确的异常信息。

如何获取更新

NuGet

通过 NuGet 将最新的 GroupDocs.Conversion 包升级至最新版本:GroupDocs.Conversion 26.10.0

dotnet add package GroupDocs.Conversion --version 26.10.0

直接下载

从 GroupDocs.Conversion for .NET 26.10 页面下载程序集

资源