You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将System.Drawing.Image写入PDF时转换iTextSharp.text.Image报错如何解决

错误根因

System.Drawing.Image与iTextSharp.text.Image是不同命名空间下的完全独立类型,无隐式转换规则,因此直接赋值会触发编译错误。

修复方案

将生成的二维码图片写入内存流后,通过iTextSharp提供的静态方法iTextSharp.text.Image.GetInstance()加载为iTextSharp兼容的图片对象即可。

核心修改代码

将原来的报错行:

Image jpg = qrcodeimage;

替换为以下代码:

using (MemoryStream ms = new MemoryStream())
{
    // 将System.Drawing.Image对象写入内存流,格式可根据需求调整为Png/Jpeg等
    qrcodeimage.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    // 加载为iTextSharp可用的Image对象
    iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(ms.ToArray());
    // 可选:调整图片尺寸、对齐方式等属性
    jpg.ScaleToFit(200, 200);
    jpg.Alignment = iTextSharp.text.Element.ALIGN_CENTER;
    doc.Add(jpg);
}

完整修改后的button1_Click方法代码

private void button1_Click(object sender, EventArgs e)
{
    Zen.Barcode.BarcodeDraw qrcode = Zen.Barcode.BarcodeDrawFactory.CodeQr;
    System.Drawing.Image qrcodeimage = qrcode.Draw(richTextBox1.Text, 50);


    using (SaveFileDialog sfd = new SaveFileDialog() { Filter = "PDF file|*.pdf", ValidateNames = true })
    {
        if (sfd.ShowDialog() == DialogResult.OK)
        {
            iTextSharp.text.Document doc = new iTextSharp.text.Document(PageSize.A4.Rotate());
            try
            {
                PdfWriter.GetInstance(doc, new FileStream(sfd.FileName, FileMode.Create));
                doc.Open();
                doc.Add(new iTextSharp.text.Paragraph(richTextBox1.Text));
                
                // 替换原来的直接赋值代码
                using (MemoryStream ms = new MemoryStream())
                {
                    qrcodeimage.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                    iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(ms.ToArray());
                    jpg.ScaleToFit(200, 200);
                    doc.Add(jpg);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Messege", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                doc.Close();
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者Konstantinos K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:57:02