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

Odoo从Chatter查看Alfresco外部服务器PDF报错求助

Odoo迁移PDF至Alfresco后Chatter无法预览的解决办法

问题背景

将Odoo中的PDF附件迁移至Alfresco服务器后,修改ir.attachment记录(type改为url、填写Alfresco文件链接、删除store_fname和checksum),Chatter中预览PDF时出现以下错误:

An error occurred while loading the PDF.
PDF.js v2.16.105 (build: 172ccdbe5)
Message: file origin does not match viewer's

但直接下载PDF文件正常,该问题由PDF.js的同源策略限制导致。

解决方案

1. 配置Alfresco允许跨域访问(CORS)

浏览器同源策略会阻止Odoo域名下的PDF.js加载Alfresco域名的文件,需在Alfresco的web服务器中配置CORS,允许Odoo域名的请求:

  • 以Tomcat为例,在Alfresco的web.xml文件中添加以下配置:
    <filter>
        <filter-name>CorsFilter</filter-name>
        <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
        <init-param>
            <param-name>cors.allowed.origins</param-name>
            <param-value>https://你的Odoo域名.com</param-value>
        </init-param>
        <init-param>
            <param-name>cors.allowed.methods</param-name>
            <param-value>GET,POST,HEAD,OPTIONS</param-value>
        </init-param>
        <init-param>
            <param-name>cors.allowed.headers</param-name>
            <param-value>Content-Type,Authorization</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CorsFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
  • 将https://你的Odoo域名.com替换为实际Odoo域名,多域名用逗号分隔。
  • 重启Alfresco服务器使配置生效。

2. 调整Odoo的PDF预览器配置(可选)

若CORS配置后仍有问题,可通过自定义模块修改PDF.js的初始化参数:

  • 创建自定义模块,在static/src/js/pdf_viewer.js中添加以下代码:
    odoo.define('custom_pdf_preview.PDFViewer', function (require) {
        'use strict';
        var PDFViewer = require('web.PDFViewer');
        PDFViewer.include({
            _renderPreview: function ($url) {
                var self = this;
                return this._super.apply(this, arguments).then(function () {
                    if (self.viewer) {
                        self.viewer.disableFetch = false;
                        self.viewer.corsEnabled = true;
                    }
                });
            }
        });
        return PDFViewer;
    });
    
  • 在模块的__manifest__.py中声明资源加载:
    'assets': {
        'web.assets_backend': [
            'custom_pdf_preview/static/src/js/pdf_viewer.js',
        ],
    },
    
  • 重启Odoo并升级该模块。

3. 验证附件记录正确性

  • 确认ir.attachment的url字段是Alfresco的直接文件访问链接(而非Alfresco的页面链接)。
  • 若Alfresco需要认证,确保URL包含有效的访问令牌,或Odoo请求时携带认证信息(如请求头中的Authorization)。

验证

完成配置后刷新Odoo页面,尝试在Chatter中预览PDF。若仍有问题,查看浏览器控制台的网络请求日志,排查是否存在CORS或认证相关错误,调整对应配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 07:16:07