简体   繁体   English

获取 PDF 的原始大小

[英]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.我想获得与使用从 Adob​​e Acrobat 导出 pdf 到 png 相同的图像质量。

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如果我在 Adob​​e Acrobat 工具的帮助下将 pdf 导出为 png,我得到的尺寸是:宽度:11264 pix 高度:15940 pix

As you may see I provide you the method that I use to read the pdf an create per page a image.如您所见,我为您提供了用于阅读 pdf 并为每页创建图像的方法。 The possibilities that I have are to use the .Render Method which needs a int page(index) float dpiX, float dpiY, bool forPrinting我所拥有的可能性是使用 .Render 方法,它需要一个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");
    }
}
try
{
    using (var document = PdfiumViewer.PdfDocument.Load(@"C:\Users\ohernandez\Pictures\img\descarga.pdf"))
    {
        for (int index = 0; index < document.PageCount; index++)
        {
            var image = document.Render(index, 300, 300, PdfRenderFlags.CorrectFromDpi);
            image.Save(@"C:\Users\ohernandez\Pictures\img\output.Jpeg" + index.ToString("000") + ".Jpeg", ImageFormat.Jpeg);
        }

    //    var image = document.Render(0, 300, 300, true);
     //   image.Save(@"C:\Users\ohernandez\Pictures\img\output.png", ImageFormat.Png);
    }
}
catch (Exception ex)
{
    // handle exception here;
}

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);
   }
}

Use PDFSharp & Migradocs使用 PDFSharp 和 Migradocs

// Create a new PDF document
PdfDocument document = new PdfDocument();

// Create a font
XFont font = new XFont("Times", 25, XFontStyle.Bold);

PageSize[] pageSizes = (PageSize[])Enum.GetValues(typeof(PageSize));
foreach (PageSize pageSize in pageSizes)
{
  if (pageSize == PageSize.Undefined)
    continue;

  // One page in Portrait...
  PdfPage page = document.AddPage();
  page.Size = pageSize;
  XGraphics gfx = XGraphics.FromPdfPage(page);
  gfx.DrawString(pageSize.ToString(), font, XBrushes.DarkRed,
    new XRect(0, 0, page.Width, page.Height),
    XStringFormat.Center);

  // ... and one in Landscape orientation.
  page = document.AddPage();
  page.Size = pageSize;
  page.Orientation = PageOrientation.Landscape;
  gfx = XGraphics.FromPdfPage(page);
  gfx.DrawString(pageSize.ToString() + " (landscape)", font,
    XBrushes.DarkRed, new XRect(0, 0, page.Width, page.Height),
    XStringFormat.Center);
}

// Save the document...
string filename = "PageSizes.pdf";
document.Save(filename);
// ...and start a viewer.
Process.Start(filename);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM