ホームページ > バックエンド開発 > Golang > golang pdf 変換画像

golang pdf 変換画像

王林
リリース: 2023-05-14 20:27:36
オリジナル
2733 人が閲覧しました

デジタル時代の到来に伴い、電子文書の利用がますます普及しており、学術論文、契約書、電子書籍など、さまざまなシーンで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.jpegoutput_2.jpegoutput_3.jpeg などの名前で保存されます。

要約すると、Go 標準ライブラリの GoPdf と image/png および image/jpeg を使用すると、PDF ファイルを画像形式に簡単に変換し、独自の実装を行うことができます。 PDF 処理が必要です。

以上がgolang pdf 変換画像の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート