Home > database >  how create pdf after image Draw c#
how create pdf after image Draw c#

Time:11-12

I'm working with PdfSharp to create some pdf files I am trying to write an image after that save pdf and force download user but after show box to download and open file, pdf was empty

var foo = new PrivateFontCollection();
    foo.AddFontFile(HttpContext.Current.Server.MapPath("~/assets/css/base/fonts/Coustom.ttf"));
    var Font_6 = new Font((FontFamily)foo.Families[0], 6f);
    StringFormat rf = new StringFormat();
    rf.LineAlignment = StringAlignment.Far;
    rf.Alignment = StringAlignment.Far;

    Brush _RedColor = new SolidBrush(Color.FromArgb(63, 110, 123));
    System.Drawing.Image imgBackground = System.Drawing.Image.FromFile(Server.MapPath("../assets/EmptyDoc/Letterhead-FA-A4.jpg"));

    int _X = 2300;
    int _Y = 450;

    using (Graphics graphics = Graphics.FromImage(imgBackground))
    {
        graphics.DrawString("TEST", Font_6, _RedColor, new PointF((_X - 40), (_Y)), rf);
    }
    imgBackground.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);
    PdfDocument document = new PdfDocument();
    PdfPage page = document.AddPage();
    XGraphics gfx = XGraphics.FromPdfPage(page);



    byte[] fileContents = null;
    MemoryStream memoryStream = new MemoryStream();

    document.Save(memoryStream, true);
    fileContents = memoryStream.ToArray();

    Response.Clear();
    Response.ContentType = "application/force-download";
    Response.AddHeader("content-disposition", "attachment;    filename=TEST.pdf");
    Response.BinaryWrite(fileContents);

CodePudding user response:

With PdfSharp, you can add an image as the following :

using (FileStream stream = new FileStream(pngFile, FileMode.Open, FileAccess.ReadWrite, FileShare.Read))
   {
       XImage image = XImage.FromStream(stream);
       XGraphics graphics = XGraphics.FromPdfPage(this.currentPage);
       graphics.DrawImage(image, 0 , 0, 200, 100);
   }

you just need to replace pngFile by the full path of your drawing file.

Edit :

After reading your code, you could try to add this after the line XGraphics gfx = XGraphics.FromPdfPage(page); :

XImage image = XImage.FromStream(strm);
XGraphics graphics = XGraphics.FromPdfPage(page);
graphics.DrawImage(image, 0 , 0, 200, 100);

Then replace

imgBackground.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);

by

MemoryStream strm = new MemoryStream();
imgBackground.Save(strm, System.Drawing.Imaging.ImageFormat.Png);

Seems the function doesn't accept your Stream, so try with a MemoryStream

  • Related