Javascript 使用casperjs从Slideify(HTML5)幻灯片生成pdf时缺少图像 概述
我正在尝试从R markdown文档生成pdf文档(使用ramnathv的slidify库和io2012框架)。简要描述了该过程 他提供的一行代码非常有效,只是我在pdf文档中看不到图像 然而,在上面给出的链接到jtleek存储库(可用)的示例中,图像似乎成功地包含在生成的PDF中 我不确定问题是出在我的javascript上,还是出在slidify/R生成的HTML代码上 复制问题 该问题可以复制如下:Javascript 使用casperjs从Slideify(HTML5)幻灯片生成pdf时缺少图像 概述,javascript,r,pdf-generation,casperjs,slidify,Javascript,R,Pdf Generation,Casperjs,Slidify,我正在尝试从R markdown文档生成pdf文档(使用ramnathv的slidify库和io2012框架)。简要描述了该过程 他提供的一行代码非常有效,只是我在pdf文档中看不到图像 然而,在上面给出的链接到jtleek存储库(可用)的示例中,图像似乎成功地包含在生成的PDF中 我不确定问题是出在我的javascript上,还是出在slidify/R生成的HTML代码上 复制问题 该问题可以复制如下: casperjs makepdf.js http://jburos.github.io/t
casperjs makepdf.js http://jburos.github.io/test-slidify-to-pdf/index.html index.pdf 1000
[注意:为了使示例正常工作,您必须安装casperjs和phantomjs。]
其中makepdf.js的内容包括:
var casper = require('casper').create({viewportSize:{width:1500,height:1000}});
var args = casper.cli.args;
var imgfile = (args[1] || Math.random().toString(36).slice(2))
casper.start(args[0], function() {
this.wait(args[2], function(){
this.captureSelector(imgfile, "slides");
});
});
casper.run();
或者,您可以通过克隆我的git存储库来复制问题
git clone git@github.com:jburos/test-slidify-to-pdf.git
cd test-slidify-to-pdf
casperjs makepdf.js index.pdf 1000
同样,问题是index.pdf文档不包含任何由index.html呈现的图像
背景
我要指出,整个过程有几个步骤:
- .Rmd文件->.md文件
- .md文件->.html文件
- .html文件->.pdf文件
pandoc index.md-t beamer-o index_beamer.pdf
- 产量
!LaTeX错误:找不到文件“%iflutex.sty”。
- 产生左截断的图像文件,如上面的文章所述
- 生成也不包含图像的pdf(非幻灯片样式)
非常感谢您的帮助。谢谢您提出的详细问题。起初,我认为这是一个参考问题,所以我跑了
casperjs makepdf.js index.html index.pdf 3000 --verbose=true --log-level=info
这没有提供任何有用的信息,所以我用base64编码的图像替换了一个imagesrc
es。这仍然没有显示,所以我知道它一定是Javascript或CSS。实际上,除去img
标记之外的所有内容都会产生正确的结果。对标题中的标签进行二进制搜索(例如,删除一半,然后查看图像是否显示)将问题缩小到libraries/frameworks/io2012/css/default.css
。另一个二进制搜索(每次删除一半文件并重新生成PDF)将其缩小到以下两行:
margin-left: -450px;
margin-top: -350px;
在幻灯片>幻灯片的CSS中(本文件第246-247行)。我可以通过添加
<style type="text/css">
slides > slide {
margin-left:0;
margin-top:0;
}
</style>
幻灯片>幻灯片{
左边距:0;
边际上限:0;
}
最后,我想解决这个问题
由于是自动生成的,您可能希望添加一个中间处理步骤,将此CSS注入.html
文件,或者——如果您的default.CSS
预期是静态的,并且不会重新生成——直接从过期的CSS文件中删除这两个边距
样式
你说得对——谢谢你——这确实创造了一个完美的PDF文档。但是,经过此更改后,HTML就不那么漂亮了;)至少不是在铬上。与…相比。我可能会使用两个不同的index.html文档,一个生成pdf,另一个显示为html。