public JsonResult HtmlToPdf(string url)
{
bool success = true;
string dname = url.Split('?')[1].Split('|')[0].Split('=')[1];
string dindex = url.Split('?')[1].Split('|')[1].Split('=')[1];
string xhbh = url.Split('?')[1].Split('|')[2].Split('=')[1];
string dwbh = url.Split('?')[1].Split('|')[3].Split('=')[1];
url = url.Split('?')[0] + "?dname=" + dname + "&dindex=" + dindex + "&xhbh=" + xhbh + "&dwbh=" + dwbh;
url = Request.Url.Host + ":" + Request.Url.Port + "/office/xm/" + url;
//url = Request.Url.Host + "/html/" + url;
string guid = DateTime.Now.ToString("yyyyMMddhhmmss");
string pdfName = guid + ".pdf";
string path = "D:\\Temp\\" + pdfName;
try
{
if (string.IsNullOrEmpty(url) || string.IsNullOrEmpty(path))
success = false;
string str = Server.MapPath("~\\tools\\wkhtmltopdf\\bin\\wkhtmltopdf.exe");
//output PDF file Path
string filepath = path;
//variable to store pdf file content
byte[] fileContent = null;
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
//set the executable location
process.StartInfo.FileName = str;
//set the arguments to the exectuable
// wkhtmltopdf [OPTIONS]... <input fileContent> [More input fileContents] <output fileContent>
process.StartInfo.Arguments = " --footer-center 第[page]页/共[toPage]页 --orientation Landscape " + url + " " + filepath;
//--orientation <orientation> 设置方向为横向或纵向 横向:Landscape 纵向:Portrait
process.StartInfo.RedirectStandardOutput = false;
process.StartInfo.RedirectStandardError = false;
process.StartInfo.RedirectStandardInput = false;
//run the executable
process.Start();
//wait until the conversion is done
process.WaitForExit();
// read the exit code, close process
int returnCode = process.ExitCode;
process.Close();
//Process p = System.Diagnostics.Process.Start(str , url + " " + path);
//p.WaitForExit();
if (!System.IO.File.Exists(str))
success = false;
if (System.IO.File.Exists(path))
{
FileStream fs = new FileStream(path, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
if (Request.UserAgent != null)
{
string userAgent = Request.UserAgent.ToUpper();
if (userAgent.IndexOf("FIREFOX", StringComparison.Ordinal) <= 0)
{
Response.AddHeader("Content-Disposition",
"attachment; filename=" + HttpUtility.UrlEncode(pdfName, Encoding.UTF8));
}
else
{
Response.AddHeader("Content-Disposition", "attachment; filename=" + pdfName);
}
}
Response.ContentEncoding = Encoding.UTF8;
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
fs.Close();
System.IO.File.Delete(path);
}
else
{
Response.Write("文件未找到,可能已经被删除");
Response.Flush();
Response.End();
}
}
catch (Exception ex)
{
success = false;
}
var rlt = new { success = success };
return Json(rlt, JsonRequestBehavior.AllowGet);
}
使用wkhtmltopdf工具使html转成pdf
最新推荐文章于 2024-07-29 00:12:46 发布