デジタル時代の到来に伴い、電子文書の利用がますます普及しており、学術論文、契約書、電子書籍など、さまざまなシーンでPDFファイルが広く利用されています。ただし、場合によっては、後続の処理または表示のために PDF ファイルを画像形式に変換する必要があります。この記事では、Golangを使ってPDFファイルを画像形式に変換する方法を紹介します。
PDF を画像に変換する機能を実現するには、サードパーティ ライブラリ GoPdf を使用する必要があります。 GoPdf は、Go 言語で PDF ファイルを処理するためのライブラリで、PDF ファイルの生成と編集をサポートし、PDF から画像形式への変換もサポートします。 GoPdf のインストールは非常に簡単です。ターミナルで次のコマンドを入力するだけです:
go get github.com/signintech/gopdf/...
インストールが完了したら、PDF ファイルを画像に変換するプログラムの作成を開始できます。サンプル プログラムを以下に示します。
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") }
このサンプル プログラムでは、コマンド ライン パラメーター -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
などの名前で保存されます。
要約すると、Go 標準ライブラリの GoPdf と image/png
および image/jpeg
を使用すると、PDF ファイルを画像形式に簡単に変換し、独自の実装を行うことができます。 PDF 処理が必要です。
以上がgolang pdf 変換画像の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。