422 Stimmen

PDF in Bilder mit hoher Auflösung konvertieren

Ich versuche, das Kommandozeilenprogramm zu verwenden convert um ein PDF in ein Bild (JPEG oder PNG) umzuwandeln. Hier ist eine der PDFs die ich zu konvertieren versuche.

Ich möchte, dass das Programm den überschüssigen weißen Raum abschneidet und ein Bild mit ausreichender Qualität liefert, damit die hochgestellten Buchstaben problemlos gelesen werden können.

Dies ist meine aktuelle bester Versuch . Wie Sie sehen können, funktioniert das Beschneiden gut, ich muss nur die Auflösung ein wenig schärfen. Dies ist der Befehl, den ich verwende:

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

Ich habe versucht, die folgenden Entscheidungen bewusst zu treffen:

  • Vergrößern (hat keinen Einfluss auf die Auflösung)
  • die Qualität so hoch wie möglich zu halten
  • verwenden Sie die -sharpen (Ich habe eine Reihe von Werten ausprobiert)

Für Vorschläge, wie die Auflösung des Bildes im endgültigen PNG/JPEG-Format erhöht werden kann, wäre ich sehr dankbar!

0voto

Promise Preston Punkte 15324

Bitte beachten Sie, bevor Sie Ihre Stimme abgeben, dass diese Lösung für Gimp mit einer grafischen Oberfläche gedacht ist und nicht für ImageMagick mit einer Kommandozeile, aber sie hat für mich als Alternative perfekt funktioniert, und deshalb fand ich es notwendig, sie hier zu teilen.

Folgen Sie diesen einfachen Schritten, um Bilder in jedem Format aus PDF-Dokumenten zu extrahieren

  1. Herunterladen GIMP Bildbearbeitungsprogramm
  2. Öffnen Sie das Programm nach der Installation
  3. Öffnen Sie das PDF-Dokument, aus dem Sie Bilder extrahieren möchten
  4. Wählen Sie nur die Seiten des PDF-Dokuments aus, aus denen Sie Bilder extrahieren möchten. Hinweis: Wenn Sie nur die Umschlagbilder benötigen, wählen Sie nur die erste Seite aus.
  5. Klicken Sie auf Öffnen, nachdem Sie die Seiten ausgewählt haben, aus denen Sie Bilder extrahieren möchten
  6. Klicken Sie auf Datei Menü, wenn GIMP beim Öffnen der Seiten
  7. Wählen Sie Exportieren als im Menü Datei
  8. Wählen Sie Ihren bevorzugten Dateityp anhand der Erweiterung (z. B. png) unter dem Dialogfeld aus, das sich daraufhin öffnet.
  9. Klicken Sie auf Exportieren um Ihr Bild an den gewünschten Ort zu exportieren.
  10. Sie können dann in Ihrem Datei-Explorer nach dem exportierten Bild suchen.

Das ist alles.

Ich hoffe, das hilft

0voto

Mikhael Punkte 1

Die von Ihnen angehängte PNG-Datei sieht sehr unscharf aus. Wenn Sie für jedes Bild, das Sie als PDF-Vorschau erstellt haben, eine zusätzliche Nachbearbeitung vornehmen müssen, wird die Leistung Ihrer Lösung beeinträchtigt.

2JPEG kann die angehängte PDF-Datei in ein schönes, geschärftes JPG konvertieren und leere Ränder mit einem Aufruf beschneiden:

2jpeg.exe -src "C:\In\*.*" -dst "C:\Out" -oper Crop method:autocrop

-1voto

benwiggy Punkte 1218

Das folgende Python-Skript funktioniert auf jedem Mac (Snow Leopard und aufwärts). Es kann auf der Kommandozeile mit aufeinanderfolgenden PDF-Dateien als Argumente verwendet werden, oder Sie können es in eine Shell-Skript ausführen-Aktion in Automator einfügen und einen Dienst erstellen (Quick Action in Mojave).

Sie können die Auflösung des Ausgabebildes im Skript festlegen.

Le Skript und eine Schnelles Handeln kann von github heruntergeladen werden.

#!/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

-1voto

Jagveer Singh Punkte 2417

Get Image from Pdf in iOS Swift Beste Lösung

func imageFromPdf(pdfUrl : URL,atIndex index : Int, closure:@escaping((UIImage)->Void)){

    autoreleasepool {

        // Instantiate a `CGPDFDocument` from the PDF file's URL.
        guard let document = PDFDocument(url: pdfUrl) else { return }

        // Get the first page of the PDF document.
        guard let page = document.page(at: index) else { return }

        // Fetch the page rect for the page we want to render.
        let pageRect = page.bounds(for: .mediaBox)

        let renderer = UIGraphicsImageRenderer(size: pageRect.size)
        let img = renderer.image { ctx in
            // Set and fill the background color.
            UIColor.white.set()
            ctx.fill(CGRect(x: 0, y: 0, width: pageRect.width, height: pageRect.height))

            // Translate the context so that we only draw the `cropRect`.
            ctx.cgContext.translateBy(x: -pageRect.origin.x, y: pageRect.size.height - pageRect.origin.y)

            // Flip the context vertically because the Core Graphics coordinate system starts from the bottom.
            ctx.cgContext.scaleBy(x: 1.0, y: -1.0)

            // Draw the PDF page.
            page.draw(with: .mediaBox, to: ctx.cgContext)
        }
        closure(img)

    }

}

//Verwendung

    let pdfUrl = URL(fileURLWithPath: "PDF URL")
    self.imageFromPdf2(pdfUrl: pdfUrl, atIndex: 0) { imageIS in

    }

-1voto

Verwenden Sie diese Befehlszeile:

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

Dadurch sollte die Datei wie gewünscht konvertiert werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X