我正在做一个ASP.NET网站来预订门票,然后下载它们。我有一个预定义的付款凭单和这张票,我已经转换成图像。在预订机票期间,名称,数量等详细信息将写在这些图像上,并保存在数据库中的字节"字节" (varbinary)格式。我正在使用以下代码。
StringFormat stringformat = new StringFormat();
stringformat.Alignment = StringAlignment.Near;
stringformat.LineAlignment = StringAlignment.Near;
Color StringColor = System.Drawing.ColorTranslator.FromHtml("#000000");
System.Drawing.Image creditBitmap = (System.Drawing.Image)Bitmap.FromFile(Server.MapPath("~/Images/voucher.jpg"));
Graphics creditImage = Graphics.FromImage(creditBitmap);
creditImage.DrawString(name, new Font("arial", 12,
FontStyle.Bold), new SolidBrush(StringColor), new Point(160, 519),
stringformat);
creditImage.DrawString(amount, new Font("arial", 12,
FontStyle.Bold), new SolidBrush(StringColor), new Point(320, 181),
stringformat);
Response.ContentType = "~/Images/voucher1.jpg";
byte[] credit = (byte[])(new ImageConverter()).ConvertTo(creditBitmap, typeof(byte[]));
然后我将此值插入SQL表" UploadedFiles"在栏目内"凭证"。同样,我也使用相同的流程为故障单生成另一个图像,并将其插入列名称" Ticket"。
现在我想将凭证和票证合并为一张PDF。我使用以下代码从数据库中获取它们并在按钮单击时将它们转换为字节数组。
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString);
con.Open();
SqlCommand select = new SqlCommand("select * from UploadedFiles where BookingID=@id", con);
select.Parameters.AddWithValue("@id", bookingID);
SqlDataReader data = select.ExecuteReader();
data.Read();
byte[] voucher = (byte[])data["Voucher"];
byte[] ticket = (byte[])data["Ticket"];
image_voucher.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(voucher, 0, voucher.Length);
image_ticket.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(ticket, 0, ticket.Length);
con.Close();
这两张图片将显示在网页中。但现在我想将它们作为单个PDF文件下载。两个图像的分辨率都是800 x 480,我想将它们放在PDF的单个页面中。生成PDF后,我应该同时选择下载或使用两个不同的按钮直接打印。我怎样才能做到这一点?有什么简单的方法吗?
我想要两个按钮用于下载,另一个用于打印。当我点击下载按钮时,应该从数据库中提取图像,将其转换为单个PDF并自动下载。在单击打印按钮时,应从数据库中提取图像,将其转换为单个PDF,并且应提示此PDF进行打印。