Heim >Backend-Entwicklung >Golang >Golang PDF-Bild konvertieren
Mit dem Aufkommen des digitalen Zeitalters wird die Verwendung elektronischer Dokumente immer weiter verbreitet, und PDF-Dateien werden häufig in verschiedenen Szenarien verwendet, z. B. in wissenschaftlichen Arbeiten, Vertragsvereinbarungen, elektronischen Büchern usw. In einigen Fällen müssen wir jedoch PDF-Dateien zur späteren Verarbeitung oder Anzeige in ein Bildformat konvertieren. In diesem Artikel wird erläutert, wie Sie mit Golang PDF-Dateien in das Bildformat konvertieren.
Um die Funktion der Konvertierung von PDF in Bilder zu realisieren, müssen wir die Bibliothek eines Drittanbieters GoPdf verwenden. GoPdf ist eine Bibliothek zur Verarbeitung von PDF-Dateien in der Go-Sprache. Sie unterstützt das Generieren und Bearbeiten von PDF-Dateien sowie die Konvertierung von PDF-Dateien in Bildformate. Die Installation von GoPdf ist sehr einfach. Geben Sie einfach den folgenden Befehl in das Terminal ein:
go get github.com/signintech/gopdf/...
Nach Abschluss der Installation können wir mit dem Schreiben von Programmen zum Konvertieren von PDF-Dateien in Bilder beginnen. Nachfolgend finden Sie ein Beispielprogramm:
package main import ( "bufio" "flag" "fmt" "github.com/signintech/gopdf" "image" "image/jpeg" "image/png" "os" "path/filepath" "strings" ) var ( inputFile string // 输入的 PDF 文件名 outputFilePrefix string // 输出的图片文件名前缀 outputFormat string // 输出的图片格式 dpi int // 输出图片分辨率(DPI) ) func main() { flag.StringVar(&inputFile, "input", "", "Input PDF filename") flag.StringVar(&outputFilePrefix, "prefix", "", "Output image filename prefix") flag.StringVar(&outputFormat, "format", "png", "Output image format: png or jpeg") flag.IntVar(&dpi, "dpi", 72, "Output image resolution (DPI)") flag.Parse() if inputFile == "" { fmt.Println("Please specify input PDF filename using -input") return } if outputFilePrefix == "" { outputFilePrefix = strings.TrimSuffix(inputFile, filepath.Ext(inputFile)) } pdf, err := gopdf.Open(inputFile) if err != nil { fmt.Println("Failed to open PDF file:", err) return } defer pdf.Close() numPages := pdf.GetPageCount() if numPages == 0 { fmt.Println("PDF file contains no page") return } for i := 1; i <= numPages; i++ { page := pdf.GetPage(i) if page == nil { continue } defer page.Close() img := page.Render(dpi, dpi, nil) if img == nil { fmt.Println("Failed to render page", i) return } outputFile := fmt.Sprintf("%s_%d.%s", outputFilePrefix, i, outputFormat) file, err := os.Create(outputFile) if err != nil { fmt.Println("Failed to create output file:", err) return } defer file.Close() writer := bufio.NewWriter(file) if outputFormat == "png" { if err := png.Encode(writer, img); err != nil { fmt.Println("Failed to encode image:", err) return } } else { if err := jpeg.Encode(writer, img, &jpeg.Options{Quality: 95}); err != nil { fmt.Println("Failed to encode image:", err) return } } fmt.Println("Page", i, "saved to", outputFile) } fmt.Println("Done") }
In diesem Beispielprogramm geben wir den Namen der Eingabe-PDF-Datei über die Befehlszeilenparameter -input
, -prefix an. code> gibt das Präfix für den Namen der Ausgabebilddatei an, <code>-format
gibt das Ausgabebildformat an, -dpi
gibt die Ausgabebildauflösung (DPI) an. Wenn -prefix
nicht angegeben ist, wird standardmäßig der Name der Eingabedatei abzüglich der Erweiterung als Präfix verwendet. Das Programm öffnet zunächst die eingegebene PDF-Datei und ermittelt die Gesamtzahl der darin enthaltenen Seiten. Durchlaufen Sie dann jede Seite, rendern Sie sie als Bild und speichern Sie sie in der Ausgabedatei. Das Bildformat kann PNG oder JPEG sein, die mit image/png
bzw. image/jpeg
in der Go-Standardbibliothek codiert werden. -input
指定输入的 PDF 文件名,-prefix
指定输出的图片文件名前缀,-format
指定输出的图片格式,-dpi
指定输出图片的分辨率(DPI)。如果没有指定 -prefix
,则默认使用输入文件名去掉扩展名作为前缀。程序首先打开输入的 PDF 文件,获取其中页面总数。然后遍历每一页,将其渲染为图片,并保存到输出文件中。图片格式可以选择 PNG 或 JPEG,分别使用 Go 标准库中的 image/png
和 image/jpeg
进行编码。
使用示例程序非常简单,只需要在终端中输入以下命令即可:
go run pdf2img.go -input input.pdf
其中 input.pdf
是要转换的 PDF 文件名。如果需要指定输出文件的前缀、格式或分辨率,可以加上相应的命令行参数,例如:
go run pdf2img.go -input input.pdf -prefix output -format jpeg -dpi 300
这将把 input.pdf
转换为 JPEG 格式的图片,分辨率为 300 DPI,并以 output_1.jpeg
、output_2.jpeg
、output_3.jpeg
等命名保存。
综上所述,使用 GoPdf 和 Go 标准库中的 image/png
和 image/jpeg
input.pdf
das zu erstellende PDF ist konvertierter Dateiname. Wenn Sie das Präfix, das Format oder die Auflösung der Ausgabedatei angeben müssen, können Sie die entsprechenden Befehlszeilenparameter hinzufügen, zum Beispiel: #🎜🎜#rrreee#🎜🎜#Dadurch wird input.pdf
konvertiert ins JPEG-Format. Die Bilder haben eine Auflösung von 300 DPI und werden unter Namen wie output_1.jpeg
, output_2.jpeg
, output_3.jpeg
gespeichert , usw. #🎜🎜##🎜🎜#Zusammenfassend lässt sich sagen, dass mit GoPdf und image/png
und image/jpeg
in der Go-Standardbibliothek PDF-Dateien problemlos in das Bildformat konvertiert werden können um Ihre eigenen PDF-Verarbeitungsanforderungen zu erfüllen. #🎜🎜#Das obige ist der detaillierte Inhalt vonGolang PDF-Bild konvertieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!