HTMLからPDFへのgolang

王林
王林オリジナル
2023-05-15 15:22:081420ブラウズ

実際の開発プロジェクトでは、印刷や配布のために一部のページを PDF ファイルとして保存するなど、HTML を PDF に変換する必要がある場合があります。 Golang 言語を使用してこの要件を実現することも非常に簡単ですので、Golang を使用して HTML から PDF への変換機能を実現する方法を順を追って説明しましょう。

まず、いくつかの概念を明確にする必要があります。

HTML (ハイパー テキスト マークアップ言語) はハイパーテキスト マークアップ言語であり、ブラウザーからアクセスできる構造化ドキュメントと Web ページを作成するために使用されます。 。

PDF (Portable Document Format) はポータブル ドキュメント形式であり、複数のオペレーティング システムに適しており、異なるデバイスで同じ外観を表示できます。

次に、いくつかの重要なライブラリを使用する必要があります。

  1. gofpdf ライブラリは、Golang で PDF ファイルを生成するために使用されます。次のコマンドでインストールできます:

    go get -u github.com/jung-kurt/gofpdf

  2. wkhtmltopdf、1 つは HTML/ の変換用です。 CSS を PDF に変換するためのコマンド ライン ツールは、次の URL からダウンロードできます: https://wkhtmltopdf.org/downloads.html

これら 2 つのライブラリをインストールした後、HTML 変換 PDF の実装を開始できます。関数を使用する場合の具体的な手順は次のとおりです。

  1. HTML ファイルのコンテンツを読み取る

まずローカルで変換する HTML ファイルのコンテンツを読み取る必要があります。使用することができます。 os パッケージの Open メソッドを使用してファイルを開き、ioutil パッケージの ReadFile メソッドを使用してファイルのコンテンツを読み取ります。具体的なコードは次のとおりです:

content, err := ioutil.ReadFile("path/to/html")
if err != nil {
    log.Fatalf("Could not read html file: %v", err)
}
  1. HTML コンテンツを PDF に変換する

exec パッケージを使用して wkhtmltopdf コマンド ライン ツールを呼び出し、HTML コンテンツを PDF ファイルに変換できます。具体的なコードは次のとおりです:

cmd := exec.Command("wkhtmltopdf", "-", "path/to/pdf")
stdin, err := cmd.StdinPipe()
if err != nil {
    log.Fatalf("Could not get stdin pipe: %v", err)
}
go func() {
    defer stdin.Close()
    _, _ = io.WriteString(stdin, string(content))
}()
out, err := cmd.CombinedOutput()
if err != nil {
    log.Fatalf("Could not convert html to pdf: %v: %s", err, out)
}

その中で、cmd.StdinPipe() はコマンドの標準入力に書き込むことができるパイプを返します。コマンドの標準入力として HTML コンテンツを使用できます。 cmd.CombinedOutput() はコマンドが完了するまで待機し、コマンド出力を返します。エラーがある場合は、エラー メッセージを返します。

  1. 変換が成功したことをユーザーに通知する

最後に、HTML ファイルが PDF ファイルに正常に変換されたことをユーザーに通知する必要があります。コードは次のとおりです:

fmt.Println("Convert completed.")

完全なコードは次のとおりです:

package main

import (
    "fmt"
    "io"
    "io/ioutil"
    "log"
    "os/exec"
)

func main() {
    content, err := ioutil.ReadFile("path/to/html")
    if err != nil {
        log.Fatalf("Could not read html file: %v", err)
    }

    cmd := exec.Command("wkhtmltopdf", "-", "path/to/pdf")
    stdin, err := cmd.StdinPipe()
    if err != nil {
        log.Fatalf("Could not get stdin pipe: %v", err)
    }
    go func() {
        defer stdin.Close()
        _, _ = io.WriteString(stdin, string(content))
    }()
    out, err := cmd.CombinedOutput()
    if err != nil {
        log.Fatalf("Could not convert html to pdf: %v: %s", err, out)
    }

    fmt.Println("Convert completed.")
}

上記のコードでは、gofpdf ライブラリを使用して、Golang コードを通じて PDF ファイルを生成します。 gofpdf ライブラリの関連メソッドを使用して、テキスト、画像、表などを追加し、PDF ファイルを生成できます。コードは次のとおりです:

package main

import (
    "fmt"
    "github.com/jung-kurt/gofpdf"
    "log"
)

func main() {
    pdf := gofpdf.New("P", "mm", "A4", "")

    pdf.AddPage()

    pdf.SetFont("Arial", "B", 16)
    pdf.Cell(40, 10, "Hello, World!")

    pdf.Image("path/to/image", 10, 20, 30, 0, false, "", 0, "")

    pdf.OutputFileAndClose("path/to/pdf")

    fmt.Println("PDF created.")
}

上記のコードでは、PDF を作成しますファイルを作成し、Hello, World! と画像を追加します。最後に、PDF ファイルをローカルに保存し、PDF ファイルが正常に作成されたことをユーザーに通知します。

概要: HTML から PDF への変換は非常に一般的な要件であり、コマンド ライン ツールや Golang 言語の関連ライブラリを通じても実現できます。この記事を通じて、読者がこのプロセスを包括的かつ深く理解し、実際の開発で柔軟に活用できるようになることを願っています。

以上がHTMLからPDFへのgolangの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。