Zer*_*ool 9 javascript asp.net wkhtmltopdf asp.net-mvc-3 extjs4
我正在尝试在模型窗口中创建一个javascript图表的PDF(我的图表是.aspx视图中javascript和css的组合).渲染的PDF文件中唯一的东西是窗口中的静态内容,实际的javascript图表不存在.
我打电话来创建PDF如下:
public byte[] WKHtmlToPdf(string url)
{
var fileName = " - ";
var wkhtmlDir = "C:\\Temp\\wkhtml";
var wkhtml = "C:\\Temp\\wkhtml\\wkhtmltopdf.exe";
var p = new Process();
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.FileName = wkhtml;
p.StartInfo.WorkingDirectory = wkhtmlDir;
string switches = "";
switches += "--print-media-type ";
switches += "--margin-top 0mm --margin-bottom 0mm --margin-right 0mm --margin-left 0mm ";
switches += "--page-size Letter ";
p.StartInfo.Arguments = switches + " " + url + " " + fileName;
p.Start();
//read output
byte[] buffer = new byte[32768];
byte[] file;
using (var ms = new MemoryStream())
{
while (true)
{
int read = p.StandardOutput.BaseStream.Read(buffer, 0, buffer.Length);
if (read <= 0)
{
break;
}
ms.Write(buffer, 0, read);
}
file = ms.ToArray();
}
// wait or exit
p.WaitForExit(60000);
// read the exit code, close process
int returnCode = p.ExitCode;
p.Close();
return returnCode == 0 ? file : null;
}
Run Code Online (Sandbox Code Playgroud)
关于如何获取javascript图表的任何想法?也许.Net版本更合适,或者我必须将生成的页面保存到文件中并将其传递给工具.
谢谢.
小智 9
在我们的项目中,我们做了类似的事情,并取得了成功 我们目前使用wkhtmltopdf 0.9.9与Highcharts结合使用.有了jQuery flot,我们在经过一些调整之后也取得了成功.在我们的项目中,我们首先将视图呈现为字符串,并使用它的标准输入将其传递给wkhtml.然后我们捕获wkhtml的标准输出并将其传递回浏览器.
你的wkhtml设置似乎是正确的,除了我们使用stdin和stdout.不知道那可能是个问题.
如果您使用其中一个图表,我想我可以帮助您.你用的是什么图表?
最后一点:当使用与端口80不同的端口号时,Wkhtmltopdf 0.10rc2似乎在从localhost加载外部资源(js/css)时遇到一些问题.
看起来你正试图得到一个图表的输出,由标签判断来自Extjs 4脚本.
ext脚本可能正在使用一些图表的动画,并且肯定会等待javascript事件执行并呈现图表.因此,默认时间(200毫秒)完成时可能无法完成.
快速修复是将javascript-delay页面选项添加到命令行:
wkhtmltopdf http://dev.sencha.com/deploy/ext-4.0.2a/examples/charts/Mixed.html --javascript-delay=2000 test.pdf
肯定会在*nix上工作,类似的东西应该适用于Windows.
归档时间: |
|
查看次数: |
18791 次 |
最近记录: |