【发布时间】:2018-02-10 05:55:57
【问题描述】:
我的网页上有两个图像,我使用iTextSharp Image 函数将数据库中的图像字节数据转换为图像。现在我想将两个图像转换为一个 PDF,然后打印 PDF。 PDF 的转换工作正常,但打印对话框未打开。我的代码如下。这里image1 和image2 是显示两个图像的网页中的asp:Images。
protected void button_print_Click(object sender, EventArgs e)
{
try
{
byte[] img1 = null;
byte[] img2 = null;
try
{
SqlCommand select = new SqlCommand("select Image1, Image2 from Images where ID=@id", con);
select.Parameters.AddWithValue("@id", ViewState["ImageID"].ToString());
if (con.State != ConnectionState.Open)
{
con.Open();
}
using (SqlDataReader da = select.ExecuteReader())
{
while (da.Read())
{
img1 = (byte[])da["Image1"];
img2 = (byte[])da["Image2"];
}
}
}
catch
{
// throws exception
}
finally
{
if (con.State == ConnectionState.Open || con.State == ConnectionState.Broken)
{
con.Close();
}
}
image1.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(img1, 0, img1.Length);
image2.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(img2, 0, img2.Length);
iTextSharp.text.Image imageOne = iTextSharp.text.Image.GetInstance(CreateThumbnail(img1));
iTextSharp.text.Image imageTwo = iTextSharp.text.Image.GetInstance(CreateThumbnail(img2));
Document document = new Document(PageSize.A4, 0f, 0f, 0f, 0f);
using (System.IO.MemoryStream memoryStream = new System.IO.MemoryStream())
{
PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);
document.Open();
document.Add(imageOne);
Paragraph line = new Paragraph("----------------------------------------------------------------------------------------------------------------------------------------------------");
line.Alignment = Element.ALIGN_CENTER;
document.Add(line);
document.Add(imageTwo);
document.Close();
byte[] bytes = memoryStream.ToArray();
memoryStream.Close();
}
// CODE FOR PRINTING THE PDF DOCUMENT
}
catch
{
// throws exception
}
}
我不确定打开打印对话框使用什么功能。我尝试了一些,例如PrintDialog,但不确定它是如何工作的。有人可以建议我一种更好的方法来打印适用于所有网络浏览器和所有打印机的 PDF 文档吗?如果可能的话,使用打印 PDF 文档的代码。
【问题讨论】:
标签: c# asp.net image pdf printing