signintech / gopdf

A simple library for generating PDF written in Go lang
MIT License
2.59k stars 281 forks source link

Cannot draw black and white barcode or QR code on pdf because 16-bit depth is not supported #107

Open ansoda opened 5 years ago

ansoda commented 5 years ago

Cannot draw black and white barcode or QR code on pdf because 16-bit depth is not supported。

wjw1758548031 commented 4 years ago

我也遇到了这个问题,非常的坑,其实你应该和我一样是用了网上的案例,他们写的太坑了,估计一般都是用的png直接转,你在生成条形码的时候不要用这种方式,你用jpeg的方式就ok了,代码如下: // 创建一个code128编码的 BarcodeIntCS cs, err := code128.Encode(value) if err != nil { log.Error(err) return nil } // 创建一个要输出数据的文件 file, _ := os.Create(path) defer file.Close()

// 设置图片像素大小
qrCode, err := barcode.Scale(cs, width, height)
if err != nil {
    log.Error(err)
    return err
}
// 将code128的条形码编码为png图片
return jpeg.Encode(file, qrCode, &jpeg.Options{100})
yhfgithub commented 1 year ago

报16-bit depth is not supported是因为图片的深度是48位的不能绘制导致的,也就是高清图片暂时绘制不了。24-bit带有黑白条码的图片是可以绘制出来的,我刚刚测试过了。

yhfgithub commented 1 year ago

24-bit带有QR码的图片也是可以绘制出来的,也测试过了。

vantaboard commented 5 months ago

@oneplus1000 can you close this issue if it has been resolved?

lmb1113 commented 3 weeks ago

solution(解决方法)

        bounds := qrcode.Bounds()
        dst := image.NewRGBA(bounds)
        draw.Draw(dst, bounds, eanImg, bounds.Min, draw.Src)
        pdf.ImageFrom(dst, x, y, nil)