いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-445 (PDFをページごとに分割)(pdfcpu)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。忘れないうちにメモメモ。。。

ひょんなことからPDFをページごとに分割してほしいという作業があったので、ついでなのでGoでやってみました。

pdfcpu というライブラリを知ったので、それのメモです。

サンプル

package main

import (
    "flag"
    "fmt"
    "log"
    "os"

    "github.com/pdfcpu/pdfcpu/pkg/api"
)

type (
    Args struct {
        inFile string
        outDir string
    }
)

var (
    args Args
)

func init() {
    log.SetFlags(log.Lmicroseconds)

    flag.StringVar(&args.inFile, "in", "", "input file")
    flag.StringVar(&args.outDir, "out", "", "output dir")
}

func main() {
    flag.Parse()

    if args.inFile == "" || args.outDir == "" {
        flag.PrintDefaults()
        os.Exit(1)
    }

    if err := run(); err != nil {
        log.Fatal(err)
    }
}

func run() error {
    if err := api.SplitFile(args.inFile, args.outDir, 1, nil); err != nil {
        return fmt.Errorf("error splitting PDF: %w", err)
    }

    return nil
}

実行すると、ページごとに別々のPDFファイルが出力されます。

pdfcpu さん、結構機能豊富みたいで「テキスト抽出」以外であれば、大抵のことは出来そう。

サンプルは以下にアップしてあります。

try-golang-extlib/examples/singleapp/pdf/01.split-pages at main · devlights/try-golang-extlib · GitHub

参考情報

github.com

Goのおすすめ書籍


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。