您是什么意思?这是一个 desktop 组件。
为了澄清一下——我知道 Discourse 中仍然支持内联 PDF 预览。
我的问题是专门针对主题组件本身——它在最近的 Discourse 版本中目前会在控制台中抛出弃用警告。
这是否需要一个 PR 来更新已弃用的 API 用法(例如插件 API / Ember 钩子),或者是否已经有正在进行的工作来使其现代化?
由于它被标记为 official,可以合理地假设它会在为时已晚之前得到更新。
一个帖子被拆分到新主题:类似于 Scribd 的门禁系统
是的,我上面的功能 PR 修复了已弃用的 API。但是,它还需要更多工作,而且我一直太忙了,没时间再看它了。
我对在移动设备上不允许查看 PDF 感到失望。我希望将我的 phpBB 站点迁移到 Discourse,因为 phpBB 很笨重——但我使用 pdf.js 破解了一个功能到我的论坛中,它允许我嵌入 PDF。pdf.js 允许您缩放和平移——虽然它不如桌面上的功能强大,但在车库里扫描手册而无需跑回屋子里很有用。这个例子不是手册,但它演示了这个原理:Bulletin #361 - A Diesel in America
Facebook 正在抢占我的市场,主要是在移动设备上——我希望通过 Discourse 集成赢回用户。但对于我来说,在手持设备上丢失 PDF 功能不是一个胜利。
-Dan
控制台弹discourse.static-viewport-initialization 弃用警告。
log_manager.js:98 [Gemini Nexus] Background Service Worker Started
index.js:4 Gemini Nexus v4.2.3 Ready
runtime.ts:81 DEPRECATION: Importing `inject` from `@ember/service` is deprecated. Please import `service` instead. [deprecation id: importing-inject-from-ember-service] This will be removed in ember-source 7.0.0. See https://deprecations.emberjs.com/id/importing-inject-from-ember-service for more details.
(匿名) @ deprecate.js:72
s.<computed> @ handlers.js:10
(匿名) @ deprecate.js:108
s.<computed> @ handlers.js:10
(匿名) @ deprecate.js:116
s.<computed> @ handlers.js:10
(匿名) @ index.js:75
(匿名) @ index.js:110
s.<computed> @ handlers.js:10
(匿名) @ index.js:115
s.<computed> @ handlers.js:10
r @ handlers.js:19
l @ deprecate.js:189
k @ index.js:31
p @ index.js:126
o @ index.js:31
n @ runtime.ts:81
<static_initializer> @ external-link-confirm.gjs:18
(匿名) @ external-link-confirm.gjs:18
app.js:297 ℹ️ Discourse v2026.1.0-latest — https://github.com/discourse/discourse/commits/1c90b0dd85 — Ember v6.6.0
deprecated.js:52 DEPRECATION NOTICE: Accessing `site.mobileView` or `site.desktopView` during the site initialization can lead to errors and inconsistencies when the browser window is resized. Please move these checks to a component, transformer, or API callback that executes during page rendering. [deprecated since Discourse 3.5.0.beta9-dev] [deprecation id: discourse.static-viewport-initialization] [info: https://meta.discourse.org/t/367810]
d @ deprecated.js:52
get mobileView @ site.js:123
(匿名) @ compat.js:22
X @ index.js:416
i.get @ compat.js:21
(匿名) @ initialize-for-pdf-preview.js:10
eH @ plugin-api.gjs:3363
initialize @ initialize-for-pdf-preview.js:9
i.initialize @ app.js:265
(匿名) @ index.js:379
e.each @ index.js:183
e.walk @ index.js:112
e.each @ index.js:59
e.topsort @ index.js:65
_runInitializer @ index.js:392
runInstanceInitializers @ index.js:377
_bootSync @ instance.js:116
didBecomeReady @ index.js:784
invoke @ index.js:262
flush @ index.js:180
flush @ index.js:334
_end @ index.js:762
_boundAutorunEnd @ index.js:499
Promise.then
(匿名) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_ensureInstance @ index.js:919
schedule @ index.js:618
f @ index.js:343
waitForDOMReady @ index.js:512
init @ index.js:412
_ @ core.js:97
create @ core.js:599
(匿名) @ start-app.js:18
await in (匿名)
(匿名) @ discourse-boot.js:13
(匿名) @ discourse-boot.js:1
loader.js:46 Lazy dependencies loading...
我提交了一个 PR,在 5 周多前添加了对移动设备的支持和 PDF.js 集成到此组件中,但尚未收到任何反馈。由于其他人可能会觉得有用,我正在分享我增强的分支:
https://github.com/shortmort37/discourse-pdf-previews
主要改进:
- 移动设备支持(移除移动端限制)
- PDF.js 渲染,带有页面导航和缩放控件
- “新标签页”模式下的缩略图预览
- 可用于缺少
.attachment类的 PDF 文件(非常适合迁移) - 移动端捏合缩放
我已经在这台 59plymouth.net 上运行了 2 个多月,并转换了 phpBB 内容——在桌面和移动设备上运行良好。
安装:管理员 → 外观 → 主题 → 从 Git 安装 → 粘贴上述 URL
如果维护者想进行审查,PR 仍然是开放的:Add PDF.js integration with mobile support by shortmort37 · Pull Request #49 · discourse/discourse-pdf-previews · GitHub
大家好,
我正在使用该组件,并注意到以管理员身份登录时出现以下情况:
![]()
那个 GitHub 上的 PR 描述看起来太棒了!
我在许多 Discourse 站点上都依赖这个组件来完成各种任务,非常希望它在移动端的体验能像桌面端一样出色。希望团队能尽快审查这个 PR。
(另外,我看到了管理员的通知,暂时禁用了该组件)
@tpetrov 这个问题现在已经修复了 ![]()
嗨 @tobiaseigen —— 你看到的管理员通知几乎可以肯定是上述讨论中提到的弃用警告;它来自原始组件中较旧的移动设备检测调用。我的分支采用了不同的方法:不是修补该调用,而是完全移除了移动设备限制(整个目的就是为了允许在移动设备上渲染 PDF),因此该弃用代码路径已完全移除。我随后也将最新的上游更改合并到了我的分支中,因此它是最新的。
如果你想尝试一下,可以通过以下 Git 地址安装:
https://github.com/shortmort37/discourse-pdf-previews
—— 使用 feature/pdfjs-mobile-support 分支(在安装对话框的“高级”选项下有一个分支字段)。
根据我自己的测试提供一个小技巧:安装后,在组件上运行一次“检查更新”,然后强制刷新——Discourse 会缓存编译后的主题 JS,这一步可以确保你运行的是当前代码。
公平地说,这是我的个人分支,添加了额外功能(PDF.js 渲染、页面导航、缩放、新标签页模式下的缩略图),而不是官方组件,我将这些更改合并到上游的 PR(#49)仍处于打开状态,等待审核。很乐意回答任何问题。

