如何将PDF转换为具有与原始PDF相同分辨率的图像

时间:2019-10-22 16:08:39

标签: pdf aspose aspose.pdf

我正在使用Aspose.Pdf将PDF转换为Image,然后将Image转换回Pdf。我想保持新Pdf的分辨率,宽度和高度与原始Pdf相同。

        using (var newDocument = new Document())
            {
                using (var originalDocument = new Document("c:\\source.pdf"))
                {
                    foreach (Aspose.Pdf.Page page in originalDocument.Pages)
                    {
                        if (page.Rotate != Aspose.Pdf.Rotation.None)
                        {
                            using (var ms = new MemoryStream())
                            {

                                // Create Jpegdevice with specified attributes
                                // Width, Height, Resolution, Quality
                                // Quality [0-100], 100 is Maximum
                                // Create Resolution object
                                Resolution resolution = new Resolution(Convert.ToInt32(page.ArtBox.Width), Convert.ToInt32(page.ArtBox.Height));
                                JpegDevice device = new JpegDevice(resolution, 100);

                                // Convert a particular page and save the image to stream
                                device.Process(page, ms);                                    

                                var newPage = newDocument.Pages.Add();
                                // Set margins so image will fit, etc.
                                newPage.PageInfo.Margin.Bottom = 0;
                                newPage.PageInfo.Margin.Top = 0;
                                newPage.PageInfo.Margin.Left = 0;
                                newPage.PageInfo.Margin.Right = 0;


                                // Create an image object
                                Aspose.Pdf.Image image1 = new Aspose.Pdf.Image();

                                // Set the image file stream
                                image1.ImageStream = ms;

                                // Add the image into paragraphs collection of the section
                                newPage.Paragraphs.Add(image1);

                                // YES, save after every page otherwise we get out of memory exception
                                newDocument.Save(txtFolder.Text + "\\out.pdf");
                            }                                
                        }
                        else
                        {
                            newDocument.Pages.Add(page);
                            newDocument.Save(txtFolder.Text + "\\out.pdf");
                        }
                    }
                }
            }

问题

1>原始PDF大小为18MB,但是上面的代码创建了163MB的大文件。我想通过保持相同的分辨率来保持原样的大小,或者至少接近原始文件的大小。

2> Resolution类也使用int valueXint valueY参数。并且JpegDevice类接受int widthint height参数。但是,它没有指定unit,以点,像素,英寸等为单位吗?

根据Aspose.Pdf文档

  

从点到像素的转换取决于图像的DPI(每点   英寸)属性。例如,如果图片的DPI为96(对于   每英寸),它的高度为100点,其像素高度为(100 /   72)* 96 = 133.3。通用公式为:像素=(点/ 72)*   DPI。

但是,这不能回答API要求的单位吗?

原始问题
我们从客户那里获得PDF。我们收到的某些PDF的旋转角度为90度或270度。但是,当您在Adobe或任何其他PDF查看器中打开它们时,页面的方向是正确的(不是横向或横向)。由于将Aspose.Pdf更改为“无”时,Aspose.Pdf无法保持相同的方向,因此我不得不做所有这些混乱。因此建议的方法是将PDF转换为Image,然后将Image转换回Pdf

https://forum.aspose.com/t/cannot-set-cropbox-on-rotated-page/201659/3
https://forum.aspose.com/t/remove-rotation-from-a-document-and-set-it-upright/29170

0 个答案:

没有答案