データベースの画像バイトデータを画像に変換するiTextSharp Image
関数を使用して作成したWebページに2つの画像があります。今私は、両方の画像を1つのPDFに変換してPDFを印刷したいと考えています。 PDFの変換は機能していますが、印刷ダイアログボックスは開きません。私のコードは以下の通りです。ここでimage1
とimage2
は、2つの画像が表示されているWebページのasp:Images
です。バイト配列から生成された画像を含むC#でのPDF文書の印刷
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 [email protected]", 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
のようなものをいくつか試しましたが、その仕組みはよくわかりません。誰かが、すべてのWebブラウザとすべてのプリンタで動作するPDFドキュメントを印刷するためのより良い方法を提案できますか?可能であれば、PDF文書を印刷するコードを使用してください。
私のケースではどうしますか?私はイメージをコンピュータに保存していません。画像はWebページ上にあり、ボタンをクリックすると自動的にプリンタに移動します。そのため、私はWebページ上の画像を使って自分でPDFを作成しています。 –
あなたは、PDFの変換が機能していたので、画像が入っていると思ったので、あなたの質問は印刷する方法ではなく、PDFの画像を正しい方法で取得する方法です。 –
いいえいいえ。画像をPDFに変換しています。しかし、PDFに変換した後は、PDFをコンピュータに保存せずに、印刷ダイアログで自動的に開きます。 –