我将Phantomjs在将html文件转换为pdf时遇到了一个奇怪的问题。我的html,生成的pdf和rasterize.js文件如下:
你会注意到在PDF文件中,在第6页,内容被截断,然后在第7页,内容被重复,然后一直纠正到文档的末尾。
html文件包含一系列 标记,其 src 属性设置为 data:image / png; base64 ...
对幻像库的应用程序调用如下:
phantomJS.Run("C:\path\to\directory\rasterize.js"),
new[] { webpath, outFilePdf, "A4", "1", "portrait"}, null, null);
请注意,有时渲染的pdf文件会在文档中的不同位置显示中断/重复行为,例如:第7页而不是6)但始终会出现同样的问题。
此外,我在整个应用程序中使用phantomjs(使用相同的rasterize.js脚本),没有其他问题。这仅在此导出时发生,并且仅在存在多个图像时才会发生。
我的理论是image.onload事件正在发生,特别是base64数据,但我不知道如何解决这个问题。
这都在.Net MVC应用程序中。我正在使用此处找到的PhantomJS nuget包:https://www.nuget.org/packages/PhantomJS/
非常感谢帮助。
答案 0 :(得分:0)
更新:当通过命令行在本地运行phantomjs时,我收到以下错误:
[CRITICAL] QNetworkReplyImpl: backend error: caching was enabled after some bytes had been written
libpng error: Read Error
我通过将html文件中的cdn引用替换为本地托管版本的font-awesome.css和weather-icons.css文件解决了这个问题(虽然我不知道如何/为什么)。之后,不再有错误,也不再有重复的内容。