C# 使用ITextsharp将Html导出为PDF
我已经尝试了下面的代码,我也面临着一个错误。我正在使用最新的DLLC# 使用ITextsharp将Html导出为PDF,c#,asp.net,.net,itext,html-to-pdf,C#,Asp.net,.net,Itext,Html To Pdf,我已经尝试了下面的代码,我也面临着一个错误。我正在使用最新的DLL String strSelectUserListBuilder = @"<html><body> <h1>My First Heading</h1> <p>My first paragraph.</p>
String strSelectUserListBuilder = @"<html><body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
</html>";
String htmlText = strSelectUserListBuilder.ToString();
List<IElement> htmlarraylist = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(new StringReader(htmlText), null);
String strSelectUserListBuilder=@”
我的第一个标题
我的第一段
";
字符串htmlText=strSelectUserListBuilder.ToString();
List htmlaraylist=iTextSharp.text.html.simpleparser.HTMLWorker.parsetList(新的StringReader(htmlText),null);
我得到了这个错误:
字典中不存在给定的键
让我们试试下面的代码,它将帮助您将HTML转换为PDF文件
String strSelectUserListBuilder = @"<html><body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
</html>";
String htmlText = strSelectUserListBuilder.ToString();
CreatePDFFromHTMLFile(htmlText , pdfFileName);
public void CreatePDFFromHTMLFile(string HtmlStream, string FileName)
{
try
{
object TargetFile = FileName;
string ModifiedFileName = string.Empty;
string FinalFileName = string.Empty;
/* To add a Password to PDF -test */
TestPDF.HtmlToPdfBuilder builder = new TestPDF.HtmlToPdfBuilder(iTextSharp.text.PageSize.A4);
TestPDF.HtmlPdfPage first = builder.AddPage();
first.AppendHtml(HtmlStream);
byte[] file = builder.RenderPdf();
File.WriteAllBytes(TargetFile.ToString(), file);
iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(TargetFile.ToString());
ModifiedFileName = TargetFile.ToString();
ModifiedFileName = ModifiedFileName.Insert(ModifiedFileName.Length - 4, "1");
string password = "password";
iTextSharp.text.pdf.PdfEncryptor.Encrypt(reader, new FileStream(ModifiedFileName, FileMode.Append), iTextSharp.text.pdf.PdfWriter.STRENGTH128BITS, password, "", iTextSharp.text.pdf.PdfWriter.AllowPrinting);ss
reader.Close();
if (File.Exists(TargetFile.ToString()))
File.Delete(TargetFile.ToString());
FinalFileName = ModifiedFileName.Remove(ModifiedFileName.Length - 5, 1);
File.Copy(ModifiedFileName, FinalFileName);
if (File.Exists(ModifiedFileName))
File.Delete(ModifiedFileName);
}
catch (Exception ex)
{
throw ex;
}
}
String strSelectUserListBuilder=@”
我的第一个标题
我的第一段
";
字符串htmlText=strSelectUserListBuilder.ToString();
创建PdfFromHtmlFile(htmlText,PdfielName);
public void CreatePDFFromHTMLFile(字符串HtmlStream,字符串文件名)
{
尝试
{
对象TargetFile=文件名;
string ModifiedFileName=string.Empty;
string FinalFileName=string.Empty;
/*将密码添加到PDF-test的步骤*/
TestPDF.HtmlToPdfBuilder builder=newtestpdf.HtmlToPdfBuilder(iTextSharp.text.PageSize.A4);
TestPDF.HtmlPdfPage first=builder.AddPage();
首先,添加HTML(HtmlStream);
字节[]文件=builder.RenderPdf();
File.writealBytes(TargetFile.ToString(),File);
iTextSharp.text.pdf.PdfReader=new iTextSharp.text.pdf.PdfReader(TargetFile.ToString());
ModifiedFileName=TargetFile.ToString();
ModifiedFileName=ModifiedFileName.Insert(ModifiedFileName.Length-4,“1”);
字符串password=“password”;
加密(读卡器,新文件流(ModifiedFileName,FileMode.Append),iTextSharp.text.pdf.PdfWriter.Strength128位,密码,“”,iTextSharp.text.pdf.PdfWriter.AllowPrinting);ss
reader.Close();
if(File.Exists(TargetFile.ToString()))
Delete(TargetFile.ToString());
FinalFileName=ModifiedFileName.Remove(ModifiedFileName.Length-5,1);
复制(修改文件名、最终文件名);
if(File.Exists(ModifiedFileName))
文件。删除(修改文件名);
}
捕获(例外情况除外)
{
掷骰子;
}
}
试试这个:
Document document = new Document();
PdfWriter.GetInstance(document, new FileStream(Request.PhysicalApplicationPath + "\\MySamplePDF.pdf", FileMode.Create));
document.Open();
iTextSharp.text.html.simpleparser.HTMLWorker hw =
new iTextSharp.text.html.simpleparser.HTMLWorker(document);
hw.Parse(new StringReader(htmlText));
document.Close();
HTMLWorker已弃用,不再受支持。由于您使用的是最新版本,您会发现它的替代品XMLWorker。在哪一行出现错误?@QaisarShabbirAwan您知道如何在PDF上放置图像了吗?可能尝试一个完整的
或
?出于好奇,PdfWriter.GetInstance调用对返回值不做任何处理,这是怎么回事?传递给它的文件是否有副作用?嗨@Kapil Khandelwal!这工作很好,但如果我添加图像和html这不会工作,它会给出错误。。。!有解决方案吗?但它不会解析HTML图像标记。你知道如何解析图像吗?&什么是TestPDF?