普通视图

发现新文章,点击刷新页面。
昨天以前首页

我踩了 72 小时的 Electron webview PDF 灰色坑,只为告诉你:别写这行代码!

作者 梦鱼
2025年12月11日 09:57

这辈子都不想再看到那个该死的灰色背景了!

症状(你绝对中过)

  • 背景是经典 PDF 灰色,但内容永远不显示
  • 连最干净的 dummy.pdf 都只给灰色
  • plugins: true、webSecurity: false、sandbox: false、contextIsolation: false 全开了也没用
  • 甚至加了 app.commandLine.appendSwitch('enable-pdf-extension') 这发核弹都不行
  • 你已经快疯了

终极元凶(就是它!)

JavaScript

// 主进程里偷偷出现过这行代码,就是它毒死了你整个应用!
session.fromPartition('nocache', { cache: false })

只要这行代码执行过一次,整个默认 session 就被永久污染,PDF Viewer 插件直接原地去世,永不翻身!

正确做法(三步永绝后患)

第一步:立刻删除这行毒代码(必须删,别注释!)

JavaScript

// 删掉!删掉!删掉!重要的事情说三遍
// session.fromPartition('nocache', { cache: false })

第二步:重启软件(必须重启!不清毒永远灰)

被污染的默认 session 只有重启才能清掉。

第三步:以后这样写就天下太平

HTML



  style="width:100%; height:100vh;"
>



>

为什么加 partition 就活了?

因为 partition="persist:pdfviewer" 给 webview 开了一个全新的、从未被 { cache: false } 污染过的、持久化的独立 session,PDF 插件终于能正常加载了!

亲测有效的终极配置(直接抄)

JavaScript

// main.js(主窗口随便怎么安全都行)
new BrowserWindow({
  webPreferences: {
    webviewTag: true,
    // contextIsolation: true 全开也没事,随便玩
  }
})

HTML



验证链接(随便点都亮)

  1. 国际标准:
  2. 国内防盗链:
  3. 企业内网签名链接:随便多长都行

删掉那行毒代码 + 加好 partition → 全部秒显示!

总结(只记这三句话)

  1. 永远不要在主进程写 session.fromPartition('xxx', { cache: false })
  2. PDF webview 必须加 partition="persist:pdfviewer"
  3. 想禁用缓存的 webview 单独加 partition="nocache"

做完这三步,从此与灰色背景永别!

把这篇文章收藏起来,半年后你会含着泪点开它,然后感谢现在的自己

(已救无数后来人,包括半年后的你)

❌
❌