Golang将pdf转换为图像由bimg

时间:2017-11-26 03:47:16

标签: pdf go

下面的示例代码使用bimg将pdf转换为jpeg。

func main() {

    buffer, err := bimg.Read("test.pdf")
    if err != nil {
        fmt.Fprintln(os.Stderr, err)
    }

    newImage, err := bimg.NewImage(buffer).Convert(bimg.JPEG)
    if err != nil {
        fmt.Fprintln(os.Stderr, err)
    }

    if bimg.NewImage(newImage).Type() == "jpeg" {
        fmt.Fprintln(os.Stderr, "The image was converted into jpeg")
    }

    bimg.Write("test.jpg", newImage)

}

但它只转换test.pdf的第一页。

有没有办法转换为包含多个页面的图片。

1 个答案:

答案 0 :(得分:4)

bimg使用libvips,可以potentially load PDFs。 不幸的是,default for libvips loading PDFs仅加载一页。 除非你想修改bimg(vendorcontribute,黑客来源等等,否则你运气不好。

不是问题的答案(不使用bimg),但你可以使用imagemagick,

import "gopkg.in/gographics/imagick.v3/imagick"
func main() {
    imagick.Initialize()
    defer imagick.Terminate()
    mw := imagick.NewMagickWand()
    defer mw.Destroy()
    mw.ReadImage("test.pdf")
    mw.SetIteratorIndex(0)        // This being the page offset
    mw.SetImageFormat("jpg")
    mw.WriteImage("test.jpg")
}