C# 使用ITextsharp将Html导出为PDF

C# 使用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>

我已经尝试了下面的代码,我也面临着一个错误。我正在使用最新的DLL

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?