我們很高興宣布 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());
}

此處理程式適用於網頁、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,無論目標格式為何;以及在電子郵件、網頁與多頁 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] 修正舊版 .NET Framework 4.7.1+ 專案使用 PackageReference 時載入 RuntimeInformation 失敗的問題
  • [Bug] 修正 .NET Framework 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 時被 gzip 兩次
  • [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 命名空間。
  • ExternalResourceHandler 屬於 IResourceLoadingOptions 以及實作該介面的載入選項。
  • ExecuteScripts 屬於 WebLoadOptions 與 SvgLoadOptions。
  • SkipExternalResources、WhitelistedResources 與 ExternalResourceHandler 屬於 FinanceLoadOptions 與 ThreeDLoadOptions,這兩者現在實作 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 屬性。

發行說明 列出所有變更與精確的例外訊息。

如何取得更新

NuGet

透過 NuGet 升級至最新的 GroupDocs.Conversion 套件:GroupDocs.Conversion 26.10.0

dotnet add package GroupDocs.Conversion --version 26.10.0

直接下載

從 GroupDocs.Conversion for .NET 26.10 頁面下載組件

資源