Отображение изображения из базы данных в документе iTextSharp [дубликат]

В моем случае я получил сообщение об ошибке, потому что у меня были смешанные имена пакетов в верхнем и нижнем регистре в системе Windows 7. Изменение имен пакетов для всех нижних регистров разрешило проблему. Также обратите внимание, что в этом случае я не смог скомпилировать файл .java в файл .class; он просто не будет запускаться из того же каталога (под-под-под).

4
задан andrewfam 11 July 2013 в 22:41
поделиться

2 ответа

В чем именно проблема? Что происходит, когда вы используете свой проблемный код?

Попробуйте использовать одну из других перегрузок Image.GetInstance():

Вы можете передать массив байтов напрямую:

byte[] byt = (byte[])r[6];
Image img = Image.GetInstance(byt);

Или вы можете передать Stream:

byte[] byt = (byte[])r[6];
MemoryStream ms = new MemoryStream(byt);
Image img = Image.GetInstance(ms);

Или вы можете предоставить iTextSharp дополнительную информацию о формате изображения:

byte[] byt = (byte[])r[6];
MemoryStream ms = new MemoryStream(byt);
System.Drawing.Image sdi = System.Drawing.Image.FromStream(ms);
Image img = Image.GetInstance(sdi, ImageFormat.Png);

Если ваша колонка может быть переведена в System.Drawing.Image, вы можете использовать его напрямую:

Image img = Image.GetInstance((System.Drawing.Image)r[6], System.Drawing.Imaging.ImageFormat.Png);
6
ответ дан nekno 26 August 2018 в 12:30
поделиться

Я предложил шаги, как показано, как добавить изображение в PDF, приведенный ниже фрагмент кода показывает, как добавить логотип в ваш PDF-файл с помощью iTextsharp, выполните следующие шаги:

  1. Я предоставил ссылку для загрузки компонента «itextsharp» из данной ссылки http://sourceforge.net/projects/itextsharp/
  2. Вы должны добавить ссылку в свою заявку.
  3. Затем вам нужно добавить необходимые пространства имен «iTextsharp.text.html», «iTextsharp.text», чтобы использовать его лучшие свойства.
  4. Теперь вам нужно добавить фрагмент кода в ваше приложение, указанное в конце, добавить фрагмент кода под кнопкой «click» в коде.

Надеюсь, он сработает для вас !!!

protected void btnPDF_Click(object sender, ImageClickEventArgs e)
    {
        DataTable dtn = new DataTable();
        dtn = GetDataTable();
        dtPDF = dtn.Copy();
        for (int i = 0; i <= dtn.Rows.Count - 1; i++)
        {
            ExportToPdf(dtPDF);
        }
     }

public void ExportToPdf(DataTable myDataTable)
    {
        Document pdfDoc = new Document(PageSize.A4, 10, 10, 10, 10);
        try
        {
            PdfWriter.GetInstance(pdfDoc, System.Web.HttpContext.Current.Response.OutputStream);
            pdfDoc.Open();
            Chunk c = new Chunk("" + System.Web.HttpContext.Current.Session["CompanyName"] + "", FontFactory.GetFont("Verdana", 11));
            Paragraph p = new Paragraph();
            p.Alignment = Element.ALIGN_CENTER;
            p.Add(c);
            pdfDoc.Add(p);
            string clientLogo = Server.MapPath(".") + "/logo/tpglogo.jpg";
            string imageFilePath = Server.MapPath(".") + "/logo/tpglogo.jpg";
            iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(imageFilePath);
            //Resize image depend upon your need  
            jpg.ScaleToFit(80f, 60f);
            //Give space before image  
            jpg.SpacingBefore = 0f;
            //Give some space after the image  
            jpg.SpacingAfter = 1f;
            jpg.Alignment = Element.HEADER;
            pdfDoc.Add(jpg);
            Font font8 = FontFactory.GetFont("ARIAL", 7);
            DataTable dt = myDataTable;
            if (dt != null)
            {
                //Craete instance of the pdf table and set the number of column in that table 
                PdfPTable PdfTable = new PdfPTable(dt.Columns.Count);
                PdfPCell PdfPCell = null;
                for (int rows = 0; rows < dt.Rows.Count; rows++)
                {
                    for (int column = 0; column < dt.Columns.Count; column++)
                    {
                        PdfPCell = new PdfPCell(new Phrase(new Chunk(dt.Rows[rows][column].ToString(), font8)));
                        PdfTable.AddCell(PdfPCell);
                    }
                }
                //PdfTable.SpacingBefore = 15f; // Give some space after the text or it may overlap the table           
                pdfDoc.Add(PdfTable); // add pdf table to the document  
            }
            pdfDoc.Close();
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "attachment; filename= SampleExport.pdf");
            System.Web.HttpContext.Current.Response.Write(pdfDoc);
            Response.Flush();
            Response.End();
            //HttpContext.Current.ApplicationInstance.CompleteRequest(); 
        }
        catch (DocumentException de)
        {
            System.Web.HttpContext.Current.Response.Write(de.Message);
        }
        catch (IOException ioEx)
        {
            System.Web.HttpContext.Current.Response.Write(ioEx.Message);
        }
        catch (Exception ex)
        {
            System.Web.HttpContext.Current.Response.Write(ex.Message);
        }
    }    
3
ответ дан Brad Larson 26 August 2018 в 12:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: