如何在不保存图像的情况下将 Base 64 编码图像数据作为图像插入 table?
How do i insert Base 64 encoded image data as an image in table without saving the image?
我一直在尝试使用 ITextSharp 创建 Pdf 文件。我可以通过 ajax 传递 html 内容,但 pdf 包含一些图像,这些图像在数据库中保存为 base64 编码数据。
我如何才能获取这些数据并将它们转换为图像并插入到我的 table 行中。
我想实现这样的目标:
<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);
}
在 HTML 页面中,您可以在 td 标签中插入类似这样的内容
<img width="16" height="16" alt="star" src="data:image/png;base64,YOURBASE64CODEDIMAGE" />
在 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
我一直在尝试使用 ITextSharp 创建 Pdf 文件。我可以通过 ajax 传递 html 内容,但 pdf 包含一些图像,这些图像在数据库中保存为 base64 编码数据。
我如何才能获取这些数据并将它们转换为图像并插入到我的 table 行中。
我想实现这样的目标:
<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);
}
在 HTML 页面中,您可以在 td 标签中插入类似这样的内容
<img width="16" height="16" alt="star" src="data:image/png;base64,YOURBASE64CODEDIMAGE" />
在 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