はじめに

golang からPDFの表紙サムネを高速に作成する方法を紹介します。
よくある選択肢としてはImageMagickがあると思いますが、今回はより軽量なlibvipsを利用します。

やってみよう

必用なもの

    • golang

 

    libvips (apt insall libvips on Utuntu 20.04)

やりかた?

libvips を golang から使えるようにしてくれるありがたいパッケージ bimg (https://github.com/h2non/bimg) を使います。

package main

import (
    "log"
    "github.com/h2non/bimg"
)

func main() {
    buffer, err := bimg.Read("input.pdf")
    if err != nil {
        log.Fatal(err)
    }

    jpg, err := bimg.NewImage(buffer).Convert(bimg.PNG)
    if err != nil {
        log.Fatal(err)
    }

    thumb, err := bimg.NewImage(jpg).Resize(256, 256)
    if err != nil {
        log.Fatal(err)
    }

    bimg.Write("thumb.png", thumb)
}

input.pdf を用意して上記のコードを実行すると、PDFの1ページ目のサムネが thumb.png に保存されます。
非常に高速で大きなサイズのPDFでも高速でした。
ファイラーやDrive系サービス用のサムネ生成などにはいいかもしれません。

bannerAds