2017-11-26 21 views
1

以下のサンプルコードは、bimgを使用してpdfをjpegに変換しています。Golang pdf to 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) 

} 

ただし、最初のページはtest.pdfにのみ変換されます。

複数のページを含む画像に変換する方法はありますか?

+0

'bimg'ライブラリーへのリンクを与えてください! – md2perpe

+0

hi @ md2perpe、ここbimgへのリンクですhttps://github.com/h2non/bimg#convert –

答えて

2

bimgはlibvipsを使用し、potentially load PDFsを使用できます。 残念ながら、default for libvips loading PDFsは1ページだけを読み込むことです。 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") 
} 
+0

ありがとうパトリック、私はいくつかのテストファイルとimagick.v2で上記の例を実行しました。どういうわけか、いくつかの大きなファイル(> 15ページ)は失敗しましたが、2ページ、3ページのpdfファイルは問題ありません。なぜか分からないのですが、とにかくありがとうございました。私にとっては十分です。 –