从HTML文件动态转换PDF [英] Convert PDF dynamically from HTML file

查看:77
本文介绍了从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆