下面的示例代码通过使用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
的第一页。有什么方法可以转换为包含多个页面的图像。
最佳答案
bimg使用libvips,可以potentially load PDFs。
不幸的是,default for libvips loading PDFs仅加载一页。
除非您想修改bimg(vendor,contribute,修改源代码等),否则您很不幸。
不是问题的答案(不使用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")
}