You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
4.1 KiB
122 lines
4.1 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace CounsellorBL
|
|
{
|
|
public class PDFService : MessageBase
|
|
{
|
|
public string createPdfByHtml(string sHtml, string sFileName, string outputFolder)
|
|
{
|
|
string sRoot = System.Web.HttpContext.Current.Server.MapPath("/OutFiles");
|
|
ServiceCom.fnCreateDir(sRoot + "\\" + outputFolder);//如果沒有該目錄就創建目錄
|
|
string sOutputPath = sRoot + "\\" + outputFolder + "\\" + sFileName;
|
|
string sHtmlPath = sOutputPath + ".html";
|
|
string sPdfPath = sOutputPath + ".pdf";
|
|
|
|
string sContent = System.Web.HttpContext.Current.Server.HtmlDecode(sHtml);
|
|
if (System.IO.File.Exists(sHtmlPath))
|
|
{
|
|
System.IO.File.Delete(sHtmlPath);
|
|
}
|
|
using (FileStream fs = new FileStream(sHtmlPath, FileMode.Create))
|
|
{
|
|
using (StreamWriter w = new StreamWriter(fs, Encoding.UTF8))
|
|
{
|
|
w.WriteLine(sContent);
|
|
}
|
|
}
|
|
try
|
|
{
|
|
if (!string.IsNullOrEmpty(sHtmlPath) || !string.IsNullOrEmpty(sPdfPath))
|
|
{
|
|
string resource = sRoot + "\\Resoure";
|
|
string dllstr = string.Format(resource + "\\wkhtmltopdf.exe");
|
|
|
|
if (System.IO.File.Exists(dllstr))
|
|
{
|
|
string strParam = sHtmlPath + " " + sPdfPath;
|
|
ProcessStartInfo pInfo = new ProcessStartInfo();
|
|
pInfo.FileName = dllstr;
|
|
pInfo.Arguments = strParam.ToString();
|
|
pInfo.UseShellExecute = false;
|
|
pInfo.RedirectStandardOutput = true;
|
|
//pInfo.RedirectStandardError = true;
|
|
pInfo.RedirectStandardInput = true;
|
|
pInfo.CreateNoWindow = false;
|
|
|
|
using (Process p = new Process())
|
|
{
|
|
p.StartInfo = pInfo;
|
|
p.Start();
|
|
p.WaitForExit();
|
|
try
|
|
{
|
|
if (!p.HasExited)
|
|
{
|
|
p.Kill();
|
|
}
|
|
}
|
|
catch
|
|
{ }
|
|
}
|
|
}
|
|
}
|
|
System.IO.File.Delete(sHtmlPath);//刪除html文件
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.ToString());
|
|
}
|
|
return sPdfPath;
|
|
}
|
|
public bool delPdf(string sPath)
|
|
{
|
|
bool blRet = true;
|
|
try
|
|
{
|
|
if (System.IO.File.Exists(sPath))
|
|
{
|
|
System.IO.File.Delete(sPath);
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
blRet = false;
|
|
}
|
|
return blRet;
|
|
}
|
|
|
|
//字符串转流
|
|
public static MemoryStream StringToStream(string s)
|
|
{
|
|
// convert string to stream
|
|
byte[] byteArray = Encoding.Default.GetBytes(s);
|
|
MemoryStream stream = new MemoryStream(byteArray);
|
|
return stream;
|
|
}
|
|
|
|
//流转字符串
|
|
public static string StreamToString(Stream stream)
|
|
{
|
|
StreamReader reader = new StreamReader(stream);
|
|
string text = reader.ReadToEnd();
|
|
return text;
|
|
}
|
|
|
|
//字符串转字节数组
|
|
public static Byte[] StringToByteArray(string s)
|
|
{
|
|
return Encoding.Default.GetBytes(s);
|
|
}
|
|
|
|
//字节数组转字符串
|
|
public static string ByteArrayToString(Byte[] bytes)
|
|
{
|
|
return Encoding.Default.GetString(bytes);
|
|
}
|
|
}
|
|
}
|