gpt4 book ai didi

javascript - 使用 wkhtmltopdf 创建 pdf 并渲染 javascript

转载 作者:可可西里 更新时间:2023-11-01 02:57:36 24 4
gpt4 key购买 nike

我正在尝试创建模型窗口中的 javascript 图表的 PDF(我的图表是 .aspx View 中 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;
}

关于如何获取 javascript 图表的任何想法?也许 .Net 版本会更合适,或者我必须将生成的页面保存到文件中并将其传递到工具中。

谢谢。

最佳答案

在我们的项目中,我们做了类似的事情,并取得了成功。我们将 wkhtmltopdf 0.9.9 与 Highcharts 结合使用在这一刻。通过 jQuery flot,我们在稍作调整后也取得了成功。在我们的项目中,我们首先将 View 呈现为字符串,然后使用它的标准输入将其传递给 wkhtml。然后我们捕获 wkhtml 的标准输出并将其传递回浏览器。

您的 wkhtml 设置似乎是正确的,除了我们使用 stdin 和 stdout。不知道这是否会成为问题。

如果您使用其中一张图表,我想我可以为您提供帮助。您使用的是什么图表?

最后一点:当使用不同于端口 80 的端口号时,Wkhtmltopdf 0.10rc2 从本地主机加载外部资源(js/css)似乎有一些问题。

关于javascript - 使用 wkhtmltopdf 创建 pdf 并渲染 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6949685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com