Преобразование PDF в JPG, как и качество Photoshop - Коммерческая библиотека С++/Delphi

Для реализации приложения с флип-страницей на базе Windows мне нужно иметь возможность конвертировать большое количество PDF-страниц в хорошее качество JPG, а не только миниатюр.

Целью является достижение наилучшего качества/размера файла для этого, как это делает Photoshops Save for Web.

В настоящее время я использую Datalogics Adobe PDF Library SDK, который, похоже, не способен выполнить эту задачу. Таким образом, я ищу альтернативную коммерческую библиотеку С++ или Delphi, которая обеспечивает хорошее качество/размер/скорость.

После некоторого поиска здесь я заметил, что большинство сообщений посвящены GS и Imagekick, которые я также тестировал, но меня не устраивают выходные данные и скорость.

Целью является импорт файлов PDF с разрешением 300 точек на дюйм и преобразование их с качеством JPG 50, 1500 пикселей и размером вывода 300-500 кб.

Если бы кто-нибудь мог указать хорошую библиотеку для этой задачи, я был бы очень любезен.

Ответ 1

Gnostice PDFtoolKit VCL может быть кандидатом. Преобразование в JPEG является одним из вариантов.

Ответ 2

Я всегда рекомендую Graphics32 для всех ваших потребностей в обработке изображений; у вас есть несколько resamplers для выбора. Тем не менее, я не думаю, что он может читать PDF файлы в виде изображений. Но если вы можете создать большое изображение самостоятельно, это может быть хорошим выбором.

Ответ 3

Atalasoft DotImage (с дополнением к PDF-растеризатору) сделает это (я работаю над технологиями PDF там). Вы будете работать на языке С# (или другом .NET):

ConvertToJpegs(string outfileStem, Stream pdf)
{
    JpegEncoder encoder = new JpegEncoder();
    encoder.Quality = 50;

    int page = 1;
    PdfImageSource source = new PdfImageSource(pdf);
    source.Resolution = 300; // sets the rendering resolution to 200 dpi
    // larger numbers means better resolution in the image, but will cost in
    // terms of output file size - as resolution increases, memory used increases
    // as a function of the square of the resolution, whereas compression only
    // saves maybe a flat 30% of the total image size, depending on the Quality
    // setting on the encoder.

    while (source.HasMoreImages()) {
        AtalaImage image = source.AcquireNext();
        // this image will be in either 8 bit gray or 24 bit rgb depending
        // on the page contents.

        try {
            string path = String.Format("{0}{1}.jpg", outFileStem, page++);
            // if you need to resample the image, this is the place to do it
            image.Save(path, encoder, null);
        }
        finally {
            source.Release(image);
        }
    }
}

Ответ 5

Посмотрите DynaPDF. Я знаю, что это довольно дорого, но вы можете попробовать стартовый пакет.

P.S.: перед покупкой продукта убедитесь, что он соответствует вашим потребностям.