C# 如何将unicode字符传递给stdin或以其他方式传递给PDF
ASP.NET/Mono MVC4 C#应用程序使用WkHtmlToPdf将html转换为pdf:C# 如何将unicode字符传递给stdin或以其他方式传递给PDF,c#,.net,asp.net-mvc,pdf-generation,wkhtmltopdf,C#,.net,Asp.net Mvc,Pdf Generation,Wkhtmltopdf,ASP.NET/Mono MVC4 C#应用程序使用WkHtmlToPdf将html转换为pdf: public ActionResult WkHtmlToPdf() { byte[] result = ConvertHtmlToPdf("<html><body>Testöäüõ</body></html>"); var ms = new MemoryStream(result); r
public ActionResult WkHtmlToPdf()
{
byte[] result = ConvertHtmlToPdf("<html><body>Testöäüõ</body></html>");
var ms = new MemoryStream(result);
return new FileStreamResult(ms, "application/pdf");
}
static byte[] ConvertHtmlToPdf(string html)
{
var p = new Process
{
StartInfo =
{
CreateNoWindow = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
RedirectStandardInput = true,
UseShellExecute = false,
FileName = Environment.OSVersion.Platform == PlatformID.Win32NT ?
@"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe" : "/usr/bin/wkhtmltopdf"
}
};
p.StartInfo.Arguments = "- -";
p.Start();
StreamWriter myStreamWriter = p.StandardInput;
myStreamWriter.Write(html);
myStreamWriter.Close();
var buffer = new byte[32768];
byte[] file;
using (var ms = new MemoryStream())
{
while (true)
{
var read = p.StandardOutput.BaseStream.Read(buffer, 0, buffer.Length);
if (read <= 0)
{
break;
}
ms.Write(buffer, 0, read);
}
file = ms.ToArray();
}
p.WaitForExit(60000);
var returnCode = p.ExitCode;
p.Close();
return returnCode == 0 ? file : null;
}
public ActionResult WkHtmlToPdf()
{
byte[]result=ConvertHtmlToPdf(“Testöäüõ”);
var ms=新的内存流(结果);
返回新文件streamresult(ms,“application/pdf”);
}
静态字节[]转换HTMLTOPDF(字符串html)
{
var p=新流程
{
StartInfo=
{
CreateNoWindow=true,
重定向标准输出=真,
RedirectStandardError=true,
重定向标准输入=真,
UseShellExecute=false,
FileName=Environment.OSVersion.PlatformID==PlatformID.Win32NT?
@“C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe”:“/usr/bin/wkhtmltopdf”
}
};
p、 StartInfo.Arguments=“-”;
p、 Start();
StreamWriter myStreamWriter=p.StandardInput;
myStreamWriter.Write(html);
myStreamWriter.Close();
var buffer=新字节[32768];
字节[]文件;
使用(var ms=new MemoryStream())
{
while(true)
{
var read=p.StandardOutput.BaseStream.read(缓冲区,0,缓冲区,长度);
如果(读取您是否尝试在对wkhtmltopdf的命令行调用中指定编码
wkhtmltopdf --encoding utf-8
和/或将其添加到html:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">