从HTML文件动态转换PDF [英] Convert PDF dynamically from HTML file
本文介绍了从HTML文件动态转换PDF的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何从html文件动态转换pdf
How to convert pdf dynamically from html file
推荐答案
priate void ConvertHtmlToPdf()
{
string htmlText = ReadHtmlFile(Request.PhysicalApplicationPath+"\\sampleHTML.html");
string pdfName = Guid.NewGuid().ToString()+".pdf";
Document document = new Document();
PdfWriter.GetInstance(document, new FileStream(Request.PhysicalApplicationPath + pdfName, FileMode.Create));
document.Open();
iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(document);
hw.Parse(new StringReader(htmlText));
document.Close();
}
public string ReadHtmlFile(string htmlFilePath)
{
string htmlText = string.Empty;
try
{
using (StreamReader template = new StreamReader(htmlFilePath))
{
htmlText = ConvertHtmlToString(template, false);
template.Close();
}
}
catch(Exception E)
{
}
return htmlText;
}
public string ConvertHtmlToString(TextReader streamToRead, bool isHtml)
{
StringBuilder body = new StringBuilder();
StringBuilder nextTag = new StringBuilder();
bool inTag = false;
char nextCharacter = char.MinValue;
char tagStart = '
';
while(streamToRead.Peek()> = 0)
{
nextCharacter = Convert.ToChar(streamToRead.Peek());
if(nextCharacter.Equals(tagStart))inTag =!inTag;
if(inTag)
{
nextTag.Append(Convert.ToChar(streamToRead.Read()));
if(nextTag.Length> = 50)
{
body.Append(nextTag.ToString());
nextTag.Length = 0;
inTag = false;
}
}
else if(nextTag.Length> 0)
{
if(nextCharacter.Equals(tagStart))nextTag.Append(Convert.ToChar( streamToRead.Read()));
body.Append(ReplaceHtmlValues(nextTag.ToString(),isHtml));
nextTag.Length = 0;
}
其他
{
body.Append(Convert.ToChar(streamToRead.Read()));
}
}
返回body.ToString();
}
private string ReplaceHtmlValues(string tag,bool isHtml)
{
string returnValue = string.Empty;
tag = tag.Trim();
switch(tag)
{
case
'; while (streamToRead.Peek() >= 0) { nextCharacter = Convert.ToChar(streamToRead.Peek()); if (nextCharacter.Equals(tagStart)) inTag = !inTag; if (inTag) { nextTag.Append(Convert.ToChar(streamToRead.Read())); if (nextTag.Length >= 50) { body.Append(nextTag.ToString()); nextTag.Length = 0; inTag = false; } } else if (nextTag.Length > 0) { if (nextCharacter.Equals(tagStart)) nextTag.Append(Convert.ToChar(streamToRead.Read())); body.Append(ReplaceHtmlValues(nextTag.ToString(), isHtml)); nextTag.Length = 0; } else { body.Append(Convert.ToChar(streamToRead.Read())); } } return body.ToString(); } private string ReplaceHtmlValues(string tag, bool isHtml) { string returnValue = string.Empty; tag = tag.Trim(); switch (tag) { case "
Employee
这篇关于从HTML文件动态转换PDF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文