asp.Netmvc html PDF転送を実現
2984 ワード
説明:伝達されたパラメータ文字が多すぎる場合、getの要求を行うために圧縮する必要がある. _domainはプロファイルの構成です:; _hqPdfFilePathは同様にプロファイルのPDF保存パスである. HtmlToPdf.exeはダウンロード、ダウンロードアドレスにアクセスできるプログラムです.https://download.csdn.net/download/qq_35481871/12197661 はasp.Netmvcでreturn Fileでダウンロードファイルを実現するには、ダウンロードファイル名をエンコードUrlに注意する必要がある.Encode(downName)エラーまたはファイル名の文字化けしが発生する可能性があります
protected static readonly string _domain = ConfigurationManager.AppSettings["Domain"];
///
/// Pdf
///
///
///
///
///
[HttpPost]
public ActionResult DownSchedulePdf(string RouteBase, string RouteList, string DownName)
{
var downName = DownName + ".pdf";//
var pdfname = "hq" + DateTime.Now.ToString("HHmmssffff") + ".pdf";// pdf
var _pdfFilePath = _hqPdfFilePath + pdfname;//pdf
try
{
#region
byte[] b1 = Compress(RouteBase);
var routeBase = Convert.ToBase64String(b1);
byte[] b2 = Compress(RouteList);
var routeList = Convert.ToBase64String(b2);
#endregion
var pageUrl = "";
if (_mvcTest == "Y")
{
pageUrl = "http://localhost" + Url.Action("SchedulePdf", "DownLoad", new { RouteBase = routeBase, RouteList = routeList });
}
else
{
pageUrl = _domain + Url.Action("SchedulePdf", "DownLoad", new { RouteBase = routeBase, RouteList = routeList });
}
//
if (!Directory.Exists(_hqPdfFilePath))
{
Directory.CreateDirectory(_hqPdfFilePath);
}
#region html pdf
//
string str = Server.MapPath("~/Exes/HtmlToPdf.exe");
//
var arguments = " \"" + pageUrl + "\" " + _pdfFilePath;
Process p = Process.Start(str, arguments);
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.WaitForExit();//
p.Close();
#endregion
}
catch (Exception e)
{
Log.InfoFormat("error:{0}", e.Message);
}
return File(_pdfFilePath, "text/plain", Url.Encode(downName));
}