我一直在尝试使用ITextSharp创建Pdf文件。我能够通过ajax传递html内容,但pdf包含一些在数据库中保存为base64编码数据的图像。
我如何获取这些数据并将其转换为图像并插入到表格行中。
我想实现这样的目标:
<table>
<tr>
<td>{image 1} </td><pre><td>{image 1} </td>
</tr>
</table>
我能够创建pdf文件但不是图像我得到base64数据
这是我的代码:
public ActionResult CreatePdf(string htmlData)
{
string mytblhtml = htmlData;
mytblhtml += GetImage();
string fileName = "MyPdf.pdf";
using(var ms = new MemoryStream())
{
using(var doc = new Document(PageSize.A4, 25, 25, 25, 25))
{
using(var writer = PdfWriter.GetInstance(doc, ms))
{
doc.Open();
using(var srHtml = new StringReader(mytblhtml))
{
iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, srHtml);
}
doc.Close();
}
}
// bPDF = ms.ToArray();
TempData[fileName] = ms;
return Json(new { success = true, fileName }, JsonRequestBehavior.AllowGet);
}
}
private string GetImage()
{
string imgHtml = "<table><tr>";
using(EmpDb db = new EmpDb())
{
var emps = db.Employees.ToList();
foreach(var e in emps)
{
if(!String.IsNullOrWhiteSpace(e.Image))
{
imgHtml += $@"<td>data:{e.Image}</td>";
}
}
imgHtml += "</tr></table>";
}
return imgHtml;
}
public ActionResult DownloadCertPdf(string fileName)
{
var ms = TempData[fileName] as MemoryStream;
if(ms == null)
{
return new EmptyResult();
}
TempData[fileName] = null;
return File(ms.ToArray(), "application/pdf", fileName);
}
答案 0 :(得分:0)
在HTML页面中,您可以在td标记中插入类似的内容
<img width="16" height="16" alt="star" src="data:image/png;base64,YOURBASE64CODEDIMAGE" />
答案 1 :(得分:0)
在html中有很多其他使用内联base64数据作为图像的例子 Embedding Base64 Images
在html中插入图像的两种方法是直接使用标记和css中的背景图像。
对于图像标记,您需要使用图像的元数据填充src,然后填充base64字符串。对于CSS,你需要做类似的事情。 iText应该允许PDF中的图像: https://developers.itextpdf.com/fr/content/itext-7-converting-html-pdf-pdfhtml/chapter-7-frequently-asked-questions-about-pdfhtml/can-pdfhtml-render-base64-images-pdf
<img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAV4AAACWBAMAAABkyf1EAAAAG1BMVEXMzMyWlpbFxcWqqqqcnJyxsbG3t7e+vr6jo6OVuynYAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADG0lEQVR4nO2YzW/aQBDFF2PjHBkwCUfTSOEKUaRecRpFPeKqX0eo1KZHnFx6xFWV/tud2V3DsiJEPdi+vN/BC/aL9mV2PDuLUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgP/jMkuueYhIWPCn4CZ5+4I2Jj3kIk1OS+tC+1wq1d35LXhcvSTWw7zye0JaF2uZe6TUWeU3lvH8uDg0fkvr95S0LrLk8SqjVIXjH8xGPP2dlkl6VJwbv9kzSx9OS2uiR1uZd6k6VZzWiQR7eUQb/CLjt8qBl6W10aWNrOtWTS7snZI/BDqRfTIyfgP5m9PS2tAZKXMWA3uH+uJkcERL1m/M6fOKtDY6uixxfNd9cyOmGV9zkx0TWflIUkb4c5dpvz06Im2I3oOdOF+YG5FOzmJovyzE9KZSm/oQJUekTXLGE8+3X5NnZRNaTcb6QZBxpZvvDRm/3XFUvl950gaZljxlecfZeSvexUTHhnBNaUD7BDV+zxJ+87iMHUobg3er3+blNyZSx0RIM7dgGb+h3lpuPWmTfq/l5f8wnXMeGxPh7pUaFI4fc7tDozdPNPSkTfrluMqq9/hShdA+LIel8/5XflOdKZ60MTiuC/VJcrEc+UGbkLsf2PrwRel9raX4yqrbGBZjPym5bdvshY433hNbyl8mtyWL5/Ze+oDccuXGkhYt1Qel41r58Ypqj9z+y/Wb9duovx/v5bovX/6mFZLbfx36bWN/W4/kOhn3Pusx0b2a0xTkibNdWL/fV0r3SJ60EUx0iqF5d+TbQdMV0EXpxM/41Q+l52ijP9M+y3OztlJrD5raLs2cdsf61RGVnqOF/rcr6RnRIJZlj+RycGiYUNqt2smd30L+x5wvLZwvYho+XpU8Z5Z8i+cytz6UVR05J0PgnCirHe0+fZIz6oG0IfTZfGyO5rrWuodeHfV8X2BDe74Qtu2cj/U5fiaF1ozmhL+q/M0kJ3YrbuuZKIaetDF+ZuY3mks7uj/arGWxo31Fs36DG3q38aQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4FX+AcL6c1W3I+QxAAAAAElFTkSuQmCC' />
示例代码使用PNG,但您可以使用其他mime类型(如jpeg)解码数据。
此站点可以帮助您尝试编码或解码各种mime类型的图像。 http://freeonlinetools24.com/base64-image