Конвертировать PDF в изображение с высоким разрешением - PullRequest
286 голосов
/ 07 июля 2011

Я пытаюсь использовать программу командной строки convert, чтобы вставить PDF в изображение (JPEG или PNG).Вот один из PDF , который я пытаюсь конвертировать.

Я хочу, чтобы программа обрезала лишние пробелы и вернула изображение достаточно высокого качества, чтобы верхние индексы можно было легко прочитать.

Это моя текущая лучшая попытка .Как видите, обрезка работает нормально, мне просто нужно немного повысить разрешение.Я использую эту команду:

convert -trim 24.pdf -resize 500% -quality 100 -sharpen 0x1.0 24-11.jpg

Я пытался принять следующие сознательные решения:

  • изменить его размер больше (не влияет на разрешение)
  • сделать качество как можно выше
  • использовать -sharpen (я пробовал диапазон значений)

Любые предложения, пожалуйста, при получении разрешенияизображение в финальном PNG / JPEG выше будет с благодарностью!

Ответы [ 15 ]

0 голосов
/ 14 июня 2019

Обратите внимание, что это решение для Gimp, использующего графический интерфейс, а не для ImageMagick, использующего командную строку, но оно отлично работало для меня в качестве альтернативы

Выполните следующие простые действия для извлечения изображений в любом формате из PDF-документов

  1. Скачать Программа управления изображениями GIMP
  2. Открыть программу после установки
  3. Откройте PDF-документ, который вы хотите извлечь Изображения
  4. Выберите только те страницы документа PDF, с которых вы хотите извлечь изображения. N / B: если вам нужны только обложки, выберите только первую страницу.
  5. Нажмите «Открыть» после выбора страниц, из которых вы хотите извлечь изображения из
  6. Нажмите Файл меню, когда GIMP, когда страницы открываются
  7. Выберите Экспортировать как в меню Файл
  8. Выберите предпочитаемый тип файла по расширению (скажем, png) под всплывающим диалоговым окном.
  9. Нажмите ** Экспорт *, чтобы экспортировать изображение в нужное место.
  10. Затем вы можете проверить проводник для экспортированного изображения.

Вот и все.

Надеюсь, это поможет.

Подпишите этот ответ как полезный, если он поможет, или прокомментируйте ниже ответ для получения дополнительных разъяснений.

0 голосов
/ 28 апреля 2019

Следующий скрипт на python будет работать на любом Mac (Snow Leopard и выше). Его можно использовать в командной строке с последовательными PDF-файлами в качестве аргументов, или вы можете вставить действие Run Shell Script в Automator и создать службу (Quick Action in Mojave).

Вы можете установить разрешение выходного изображения в сценарии.

Сценарий и Quick Action можно загрузить с github.

#!/usr/bin/python
# coding: utf-8

import os, sys
import Quartz as Quartz
from LaunchServices import (kUTTypeJPEG, kUTTypeTIFF, kUTTypePNG, kCFAllocatorDefault) 

resolution = 300.0 #dpi
scale = resolution/72.0

cs = Quartz.CGColorSpaceCreateWithName(Quartz.kCGColorSpaceSRGB)
whiteColor = Quartz.CGColorCreate(cs, (1, 1, 1, 1))
# Options: kCGImageAlphaNoneSkipLast (no trans), kCGImageAlphaPremultipliedLast 
transparency = Quartz.kCGImageAlphaNoneSkipLast

#Save image to file
def writeImage (image, url, type, options):
    destination = Quartz.CGImageDestinationCreateWithURL(url, type, 1, None)
    Quartz.CGImageDestinationAddImage(destination, image, options)
    Quartz.CGImageDestinationFinalize(destination)
    return

def getFilename(filepath):
    i=0
    newName = filepath
    while os.path.exists(newName):
        i += 1
        newName = filepath + " %02d"%i
    return newName

if __name__ == '__main__':

    for filename in sys.argv[1:]:
        pdf = Quartz.CGPDFDocumentCreateWithProvider(Quartz.CGDataProviderCreateWithFilename(filename))
        numPages = Quartz.CGPDFDocumentGetNumberOfPages(pdf)
        shortName = os.path.splitext(filename)[0]
        prefix = os.path.splitext(os.path.basename(filename))[0]
        folderName = getFilename(shortName)
        try:
            os.mkdir(folderName)
        except:
            print "Can't create directory '%s'"%(folderName)
            sys.exit()

        # For each page, create a file
        for i in range (1, numPages+1):
            page = Quartz.CGPDFDocumentGetPage(pdf, i)
            if page:
        #Get mediabox
                mediaBox = Quartz.CGPDFPageGetBoxRect(page, Quartz.kCGPDFMediaBox)
                x = Quartz.CGRectGetWidth(mediaBox)
                y = Quartz.CGRectGetHeight(mediaBox)
                x *= scale
                y *= scale
                r = Quartz.CGRectMake(0,0,x, y)
        # Create a Bitmap Context, draw a white background and add the PDF
                writeContext = Quartz.CGBitmapContextCreate(None, int(x), int(y), 8, 0, cs, transparency)
                Quartz.CGContextSaveGState (writeContext)
                Quartz.CGContextScaleCTM(writeContext, scale,scale)
                Quartz.CGContextSetFillColorWithColor(writeContext, whiteColor)
                Quartz.CGContextFillRect(writeContext, r)
                Quartz.CGContextDrawPDFPage(writeContext, page)
                Quartz.CGContextRestoreGState(writeContext)
        # Convert to an "Image"
                image = Quartz.CGBitmapContextCreateImage(writeContext) 
        # Create unique filename per page
                outFile = folderName +"/" + prefix + " %03d.png"%i
                url = Quartz.CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, outFile, len(outFile), False)
        # kUTTypeJPEG, kUTTypeTIFF, kUTTypePNG
                type = kUTTypePNG
        # See the full range of image properties on Apple's developer pages.
                options = {
                    Quartz.kCGImagePropertyDPIHeight: resolution,
                    Quartz.kCGImagePropertyDPIWidth: resolution
                    }
                writeImage (image, url, type, options)
                del page
0 голосов
/ 08 июля 2018

Это довольно легко сделать с помощью Preview на Mac.Все, что вам нужно сделать, это открыть файл в режиме предварительного просмотра и сохранить как (или экспортировать) файл в формате png или jpeg, но убедитесь, что в нижней части окна используется разрешение не менее 300 dpi, чтобы получить изображение высокого качества.

0 голосов
/ 21 июля 2015

Используйте эту командную строку:

convert -geometry 3600x3600 -density 300x300 -quality 100 TEAM\ 4.pdf team4.png

Это должно правильно преобразовать файл, как вы просили.

0 голосов
/ 13 октября 2014

PNG-файл, который вы вложили, выглядит очень размытым.В случае, если вам нужно использовать дополнительную постобработку для каждого изображения, сгенерированного вами для предварительного просмотра PDF, вы снизите производительность своего решения.

2JPEG может конвертировать PDF-файл, который вы прикрепили, в хорошийзаострите JPG и обрежьте пустые поля одним вызовом:

2jpeg.exe -src "C:\In\*.*" -dst "C:\Out" -oper Crop method:autocrop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...