Niko.K Niko.K - 1 month ago 23
C# Question

Get original Size of PDF

I want to get the same image quality as if I would use the export pdf to png from Adobe Acrobat.

But somehow this does not work for me. The dimensions that I get if I export the pdf to a png with help of the Adobe Acrobat tool are:
Width:11264 pix
Height:15940 pix


As you may see I provide you the method that I use to read the pdf an create per page a image. The possibilities that I have are to use the .Render Method which needs a int page(index) float dpiX, float dpiY, bool forPrinting

But some how it has no effect on the image saved ?

using (var document = PdfiumViewer.PdfDocument.Load(file))
{
//This int is used to get the page count for each document
int pagecount = document.PageCount;

//With the int pagecount we can create as may screenshots as there are pages in the document
for (int index = 0; index < pagecount; index++)
{
//render the image created
var image = document.Render(index,8448,11955, true);

//savde the created screenshot temporerlay as a png + number (count)
image.Save(@"C:\Users\chnikos\Desktop\Test\output" + index.ToString("000") + ".png",ImageFormat.Png);
application.Selection.InlineShapes.AddPicture(@"C:\Users\chnikos\Desktop\Test\output" + index.ToString("000") + ".png");
}
}

Answer

This might be a better example: Library files

using System.Drawing.Imaging;

string Desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

//This one is with Spire.Pdf
void PDF_To_Image(string pdf)
{
   var doc = new Spire.Pdf.PdfDocument();
   doc.LoadFromFile(pdf);

   //This int is used to get the page count for each document 
   int pagecount = doc.Pages.Count;

   //With the int pagecount we can create as many screenshots as there are pages in the document
   for (int index = 0; index < pagecount; index++)
   {
      //render the image created
      var dpiX = 75;
      var dpiY = 75;
      var image = doc.SaveAsImage(index, Spire.Pdf.Graphics.PdfImageType.Bitmap, dpiX, dpiY);

      //save the created screenshot temporerlay as a png + number (count)
      image.Save(Desktop + @"\Test\output\" + index.ToString("000") + ".png", ImageFormat.Png);
   }
}

//This one is with Aspose.Pdf & xps2img.
//Aspose.Pdf converts the Pdf document to Xps format..
//xps2img creates images from the xps file..
void PDF_To_Image2(string pdf)
{
   var doc = new Aspose.Pdf.Document(pdf);
   var saveOptions = new Aspose.Pdf.XpsSaveOptions();
   doc.Save("Preview.xps", saveOptions);

   xps2img.Parameters pp = new xps2img.Parameters();
   pp.Dpi = 300;
   pp.ImageType = xps2img.ImageType.Png;
   pp.RequiredSize = new System.Drawing.Size((int)doc.PageInfo.Width, (int)doc.PageInfo.Height);
   pp.ImageOptions = xps2img.ImageOptions.Default;
   var img3 = xps2img.Xps2Image.ToBitmap("Preview.xps", pp).ToList();


   //This int is used to get the page count for each document 
   int pagecount = img3.Count;

   //With the int pagecount we can create as many screenshots as there are pages in the document
   for (int index = 0; index < pagecount; index++)
   {
      img3[index].Save(Desktop + @"\Test\Output\" + index.ToString("000") + ".png", ImageFormat.Png);
   }
}
Comments