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

如何设置Mozilla PDF.js打印对话框中的文件名?

解决PDF.js v3.5.141打印时默认文件名固定为“PDF.js viewer.pdf”的问题

你遇到的问题是因为setTitleUsingUrl仅修改了浏览器标题,而PDF.js的打印功能依赖内部的documentFileName属性生成默认打印文件名,而非页面标题。以下是两种可行的解决方法:

方法一:直接设置documentFileName属性

在你现有代码中添加对documentFileName的赋值,PDF.js打印时会优先使用这个值作为默认文件名:

setTimeout(() => {
  const pdfFileName = "你的PDF文件名.pdf"; // 替换为实际文件名
  // 设置浏览器标题
  PDFViewerApplication.setTitleUsingUrl(pdfFileName);
  // 设置打印时的默认文件名
  PDFViewerApplication.documentFileName = pdfFileName;
}, 1000);

这个方法直接修改PDF.js应用实例的核心属性,适配v3.5.141版本的API逻辑,是最直接的解决方案。

方法二:重写打印方法(兜底方案)

如果方法一未生效,可以重写PDF.js的打印函数,确保触发打印前强制设置正确的文件名:

setTimeout(() => {
  const pdfFileName = "你的PDF文件名.pdf"; // 替换为实际文件名
  PDFViewerApplication.setTitleUsingUrl(pdfFileName);
  
  // 保存原打印方法
  const originalPrint = PDFViewerApplication.print;
  // 重写打印方法
  PDFViewerApplication.print = function() {
    this.documentFileName = pdfFileName;
    // 调用原打印逻辑
    originalPrint.call(this);
  };
}, 1000);

这种方式通过拦截打印操作,确保每次打印时都注入正确的文件名,避免因异步加载或其他逻辑覆盖documentFileName的情况。

注意事项

  • 确保setTimeout的延迟足够覆盖PDFViewerApplication的初始化,若1000ms不够,可适当调整时长;
  • 文件名需包含.pdf后缀,避免打印对话框自动补全错误的扩展名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:40:06