Javascript 使用PhantomJS和节点phantom模块进行PNGs半渲染?

Javascript 使用PhantomJS和节点phantom模块进行PNGs半渲染?,javascript,phantomjs,Javascript,Phantomjs,我在使用PhantomJS和将网页呈现为PDF时遇到了一个问题 我注意到的是,虽然SVG和JPG“完全”加载到生成的PDF中,但PNG图像并没有加载,只是第一次出现在文档中。换句话说,第一个图像部分褪色,然后后续图像根本不褪色 我已经检查了onResourceLoaded回调,并且图像已从服务器正确加载。我试着交换http和https,看看这是否有什么不同。尝试从本地静态文件夹加载,以查看是否是网络延迟。我尝试过包装页面。在setTimeout中呈现(正如许多人在其他问题中所建议的那样),但没有

我在使用PhantomJS和将网页呈现为PDF时遇到了一个问题

我注意到的是,虽然SVG和JPG“完全”加载到生成的PDF中,但PNG图像并没有加载,只是第一次出现在文档中。换句话说,第一个图像部分褪色,然后后续图像根本不褪色

我已经检查了
onResourceLoaded
回调,并且图像已从服务器正确加载。我试着交换http和https,看看这是否有什么不同。尝试从本地静态文件夹加载,以查看是否是网络延迟。我尝试过包装
页面。在
setTimeout
中呈现
(正如许多人在其他问题中所建议的那样),但没有效果


这是一个已知的问题吗?是否有更好的解决方案来解决褪色的PNG?不幸的是,在这个项目中,我无法控制进入我的图像类型。

我遇到了完全相同的问题,并意外地发现在所有元素上强制使用边框颜色可以解决这个问题。在我的例子中,受影响/褪色的元素是图像(jpg)和图表

比如

*{
边框颜色:黑色!重要;
}

JPGs也会出现此问题。我使用PhantomJS(通过HTMLPDF包)和wkhtmltopdf将HTML文件转换为PDF时遇到了这个问题

对于PhantomJS,我注意到问题与在其他元素的边框中使用透明颜色有关。我只是用十六进制代码替换了那些透明的颜色,透明度问题就消失了


简而言之,删除任何
rgba()
表达式,特别是如果它们使用透明度的话。

您能提供一个示例(图像)来说明“褪色”的含义吗?是否仅部分装载(例如,仅装载顶部)?模糊?或者实际褪色(好像有不透明度设置)?这是特定于一个网站,还是发生在所有网站上?你能提供你正在捕获的页面的URL吗?抱歉,它还没有上线,因为我正在测试一个可能的功能以备将来使用-所以没有URL。然而,这里是正在发生的事情的一个例子。对于你所说的,就好像不透明度已经被设置为
0.5
或者在第一个实例中的某个值。这个站点是否真的使用了不透明度?例如,在加载图像时,或作为加载后的动画?不。我专门将其编写为PDF格式,因此其样式非常简单。没有过渡、动画等。您是否尝试过使用不同的PhantomJS版本?尝试升级或降级。PhantomJS 1.x与Chrome 13相当。如果您使用的是PhantomJS不支持的某种CSS,这可能会导致未定义的行为。如果将其渲染为JPG或PNG会发生什么情况?我必须尝试一下。我目前的解决方案是将它们全部加载到1x1像素框中,以便后续使用全分辨率。然而,我的问题是PNG文件。我猜是自然。。。UH找到一条路。这确实奏效了!我可以使用任何颜色——只要不是半透明的。