Как конвертировать PDF в изображение с тем же разрешением, что и в оригинальном PDF - PullRequest
0 голосов
/ 22 октября 2019

Я использую Aspose.Pdf для преобразования PDF в изображение, а затем конвертировать изображение обратно в 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");
                        }
                    }
                }
            }

Qustions

1> Исходный размер PDF составляет 18 МБ, ноПриведенный выше код создает большой файл размером 163 МБ. Я хотел бы сохранить размер, как он есть или, по крайней мере, несколько ближе к исходному размеру файла, сохраняя то же разрешение. Класс

2> Resolution также принимает параметры int valueX и int valueY. И JpegDevice класс принимает параметры int width и int height. Однако он не указывает unit, выдерживает ли его в пунктах, пикселях, дюймах и т. Д.?

Согласно документации Aspose.Pdf

Преобразование из точки в пиксель зависит от свойства DPI (точек на дюйм) изображения. Например, если DPI изображения составляет 96 (96 пикселей на каждый дюйм), а его высота составляет 100 точек, его высота в пикселях составляет (100/72) * 96 = 133,3. Общая формула выглядит следующим образом: пиксели = (точек / 72) * DPI.

Однако это не отвечает на вопрос, какую единицу измерения задает API?

Оригинальный выпуск
Мы получаем PDF от наших клиентов. Некоторые из PDF-файлов, которые мы получаем, имеют поворот на 90 или 270 градусов. Однако, когда вы открываете их в Adobe или любом другом средстве просмотра PDF, ориентация страницы является правильной (она не горизонтальная или горизонтальная). Весь этот беспорядок, который я должен сделать, потому что Aspose.Pdf не может сохранять ту же самую ориентацию, когда изменяют вращение на Нет. Таким образом, предлагаемый подход заключается в преобразовании PDF в изображение и последнем преобразовании изображения обратно в 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

...