我正在开发一个Meteor项目,我需要从页面生成一个部分的PDF导出。 我使用webshot来生成导出。 最近的要求是在导出中使用公共静态资产 - 徽标图像。 我通过阅读所有css文件并将其内容复制到我让webshot使用的HTML文档中的样式标记,努力使css资产可用于phantomjs。这很好。 对于图像,我使用
替换HTML中的“./images/”模式和服务器上images文件夹的完整路径。const buildPath = path.resolve('.').split(path.sep + 'server')[0];
const imagePath = buildPath + '/web.browser/app/images/';
在服务器上运行。图像没有显示出来。 当我在我的开发机器上的任何地方打开生成的HTML(我保存它以进行调试)时,图像路径被解析得很好,我得到了图像。
在phantomjs中访问这些静态资产的正确方法是什么?
答案 0 :(得分:0)
我想出来了 - 我在img标签的src属性中缺少一个完全限定的协议。虽然Chrome很聪明且宽容,但phantomjs并非如此。 所以基本上我必须添加' file:///'在图像的完整路径之前。 它现在看起来像:
const buildPath = path.resolve('.').split(path.sep + 'server')[0].replace(/\\/g, '/');
const imagePath = buildPath + '/web.browser/app/images/';
html = html.replace(/src="\.\/images\//g, 'src="file:///' + imagePath);
至于关于时间的评论,我确实给出了1秒的延迟渲染时间,但没有检查它是否有效。