我目前正在使用Rails 4.2和pandoc-ruby将我的HTML文档转换为DOCX以供用户下载。不幸的是,服务器创建的docx不显示图像。它在当地确实如此。
编辑:我在本地运行pandoc 1.19(在Mac上)。我让docker安装了新版本的pandoc而没有问题。运行pandoc -v
或pandoc --version
会从docker中获得以下输出:
root@3dd9b57878f1:~# pandoc -v
pandoc 1.19.2.1
Compiled with pandoc-types 1.17.0.4, texmath 0.9, skylighting 0.1.1.4
这是我在我的mac上得到的东西(由brew安装):
~ ❯❯❯ pandoc -v
pandoc 1.19
Compiled with pandoc-types 1.17.0.4, texmath 0.9, highlighting-kate 0.6.3
我的rails应用创建了一个包含从S3下拉的图片的预览页面,因此img src是标准的s3网址,例如“https://xyz.s3.amazonaws.com/xyz/xyz/image.jpg?1234567890”
在我的机器上,当我将pandoc-ruby转换为docx时,所有图像都会被拉下来而没有问题,而docx看起来就像预览页面。图像不存储在rails目录中 - 仅通过s3。在码头工人身上,情况并非如此。它改为引用我的图像的ID。根据生成的XML,docker甚至没有相同的XML:
本地:
<w:pPr><w:pStyle w:val="Compact" /></w:pPr><w:r><w:drawing><wp:inline><wp:extent cx="3048000" cy="2286000" />
<wp:effectExtent b="0" l="0" r="0" t="0" /><wp:docPr descr="4" title="" id="1" name="Picture" />
<a:graphic><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture">
<pic:pic>
<pic:nvPicPr>
<pic:cNvPr descr="http://xyz.s3.amazonaws.com/development/assets/xyz/2345585/4.jpg?123456789" id="0 ...
docker版本:
<w:r><w:t xml:space="preserve">Image</w:t></w:r></w:p><w:p><w:pPr>
<w:pStyle w:val="Compact" /></w:pPr><w:r><w:t xml:space="preserve">475</w:t></w:r></w:p><w:sectPr /></w:body></w:document>
(475是图像的id)
根据this SO question以及this SO question,可能是URL未指向磁盘上的图像。对于旧版本的Pandoc来说,这似乎是一个问题。它没有解释为什么它在本地工作,因为XML使用的是URL。
尽管我手动安装了1.19.x,但是docker容器仍然在运行1.16版本吗?