Ошибка: при преобразовании данных изображения в pdf из таблицы DataGridView, отфильтрованной из базы данных - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь преобразовать данные DataGridView с помощью столбца изображения, отфильтрованного из моей базы данных SQL, в файл PDF в C#. Я написал этот код с помощью iTextSharp, но получаю ошибку

Невозможно привести объект типа System.Drawing.bitmap к системному байту []

Может кто-нибудь любезно помогите мне?

Спасибо.

Вот мой код:

foreach (DataGridViewCell cell in row.Cells)  
{  
    if(row.Cells[0].Value!= null)  
    {  
        pdfTable.AddCell(row.Cells[0].Value.ToString());  
    }  

    if (row.Cells[1].Value != null)  
    {  
        byte[] img = (byte[])row.Cells[1].Value;  
        pdfTable.AddCell(iTextSharp.text.Image.GetInstance(img));  
   }  
}  

1 Ответ

1 голос
/ 27 февраля 2020

Ошибка возникает из-за неудачного приведения. В соответствии с этим Преобразование растрового изображения в байтовый массив вам может потребоваться добавить метод для выполнения преобразования.

private byte[] ImageToByte(Image img)
{
    ImageConverter converter = new ImageConverter();
    return (byte[])converter.ConvertTo(img, typeof(byte[]));
}

Таким образом, ваш код может выглядеть примерно так.

foreach (DataGridViewCell cell in row.Cells)  
{  
    //... extra code
    if (row.Cells[1].Value != null)  
    {  
        byte[] img = ImageToByte(row.Cells[1].Value);  
        pdfTable.AddCell(iTextSharp.text.Image.GetInstance(img));  
   }  
}  

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...