MVC - 将PdfPTable转换为Html

时间:2015-02-18 10:44:38

标签: c# asp.net-mvc pdf

我正在努力下载PDF document。我使用PdfPTable创建了一个表。以下是我缩短的代码。

var document = new Document(PageSize.A4, 50, 50, 25, 25);                
var output = new MemoryStream();
var writer = PdfWriter.GetInstance(document, output);

document.Open();

PdfPTable table = new PdfPTable(2);
table.WidthPercentage = 80;

PdfPCell cell = new PdfPCell(new Phrase("Description", fntTableFontBold));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);

......
document.Add(table);
document.Close();

Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}.pdf", "Journal"));
Response.BinaryWrite(output.ToArray());

一切正常。以上代码直接在浏览器中下载PDF。

现在我要添加预览功能,如果用户点击Preview,他应该会看到HTML输出。

如何将上述代码转换为HTML?有很多代码和用于创建PdfPTable

的查询

1 个答案:

答案 0 :(得分:0)

使用iTextSharp创建pdf涉及大量编码。您不能将PDF格式渲染为HTML代码(我知道),但您可以先创建HTML,将其转换为pdf,然后将pdf作为流呈现给浏览器。如果您先创建HTML,则可以使用html进行预览。

这是我曾经写过的将html转换为pdf的代码块。

protected void ConvertHTMLToPDF(String HTMLCode, String fileName)
{    
    //Create PDF document 
    iTextSharp.text.Document doc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4);
    PdfWriter.GetInstance(doc, new FileStream(HttpContext.Current.Server.MapPath("~") + "/Resources/Temp/" + fileName, FileMode.Create));
    doc.Open();

    foreach (IElement element in HTMLWorker.ParseToList(new StringReader(HTMLCode), null))                
    {
        doc.Add(element);
    }

    doc.Close();
    //Response.End();

}