You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PdfSharp.PdfReader打开PDF时遇资源缺失异常求助

解决PdfSharp资源缺失导致的PDF打开异常

我之前处理过好几个类似的PdfSharp资源加载问题,给你几个针对性的排查和解决步骤:

  • 先确认NuGet包的正确性
    如果你是通过NuGet安装的PdfSharp-gdi,先检查版本是否和你的项目框架兼容(比如.NET Framework版本是否匹配)。有时候旧版本或者安装过程中出现损坏,会导致资源文件没正确嵌入。可以尝试卸载后重新安装:

    Uninstall-Package PdfSharp-gdi
    Install-Package PdfSharp-gdi
    
  • 验证资源文件是否嵌入到程序集
    如果是手动引用的PdfSharp-gdi.dll,可以用ILSpy这类工具打开程序集,看看里面有没有PdfSharp.Resources.Messages.resources这个资源文件。要是你自己编译PdfSharp源码,一定要确保资源文件的生成操作设置为「嵌入的资源」,不然编译后资源不会被包含进去。

  • 处理区域性不匹配的问题
    异常提示明确提到了区域性,你可以在调用PdfReader.Open之前,强制把当前线程的区域性设为中性,避开区域性资源的加载问题:

    // 放在PDF读取代码之前
    System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(string.Empty);
    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(string.Empty);
    

    要是你的系统用的是比较特殊的区域性,也可以临时切换到en-US测试看看。

  • 检查附属程序集和签名
    确保PdfSharp-gdi的所有附属资源程序集(比如对应不同语言的zh-CN文件夹下的dll)都和主程序集签名一致,而且放在主程序集的同一目录下。Web项目的话,要确认bin目录里这些文件都存在。

  • 尝试切换到PCL版本(备选方案)
    如果GDI版本的资源问题一直搞不定,可以试试PdfSharp的PCL版本,安装不带-gdi后缀的PdfSharp包,调整代码适配一下,PCL版本的资源管理通常更稳定。

另外,给你个调试小技巧:捕获异常时打印完整的堆栈信息,能帮你更快定位到底是哪个环节出了问题:

try
{
    pdfDocument1 = PdfReader.Open(stream1, PdfDocumentOpenMode.Import);
}
catch (System.Resources.MissingManifestResourceException ex)
{
    Console.WriteLine($"详细错误信息:{ex.ToString()}");
}

内容的提问来源于stack exchange,提问作者LIvanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:08:41