Golang通过bimg将pdf转换为图像(Golang convert pdf to image by bimg)
下面的示例代码使用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第一页。
有没有办法转换为包含多个页面的图像。
The example code below convert pdf to jpeg by using bimg.
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) }But it only convert 1st page of test.pdf.
Is there any way that convert to image that contain more than one page.
最满意答案
bimg使用libvips,可能会加载PDF 。 不幸的是, libvips加载PDF的默认设置是仅加载一页。 除非你想修改bimg( 供应商 , 贡献 ,黑客来源等),否则你运气不好。
不是问题的答案(不使用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") }bimg uses libvips, and can potentially load PDFs. Unfortunately, the default for libvips loading PDFs is to load one page only. Unless you want to modify bimg (vendor, contribute, hack the source, etc.) you're out of luck.
Not an answer to the question (not using bimg), but you can use imagemagick instead,
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") }更多推荐
发布评论