有什么办法可以用golang将PDF转换为jpeg吗?

时间:2019-05-06 19:56:13

标签: linux pdf go jpeg

我目前正在将基于Python的“旧”聊天机器人重写为golang。 我遇到的一个问题是我无法将PDF转换为jpeg。我想这样做,所以我可以轻松地将其发送到聊天中。

已经按照另一个线程“ https://stackoverflow.com/a/47520596/7502507”的答案提供了bimg(一点都不起作用)和imagemagick(gopkg.in/gographics/imagick.v3/imagick)进行了尝试。

imagick.Initialize()

defer imagick.Terminate()

mw := imagick.NewMagickWand()

defer mw.Destroy()

mw.ReadImage(pdf)

mw.SetIteratorIndex(0) // This being the page offset

mw.SetImageFormat("jpg")

mw.WriteImage(image)

它根本不会产生jpg,只会给我错误

ERROR_POLICY: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408

我该如何进行这项工作?我似乎无法为此编辑安全设置。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

我遇到过同样的问题,找不到任何纯粹的Golang解决方案。

这不是一个纯粹的Golang解决方案,但是this在内部使用cgo的情况下工作正常。底层库是Pdfium,它是由Google开发并在Chrome中使用的C ++库。

经过大量研究,我发现Pdfium在速度,鲁棒性,许可要求和可靠性方面是同类产品中最好的。

为了提高操作的整体性能,我最终选择了this编码器,因为Golang的图像编码器不适合性能,而是slow

答案 1 :(得分:0)

这不是我要做的事情。但是,我最近正在研究使用pdf的golang cli工具,它们具有图像提取功能。您可以深入研究代码并从那里进行研究:

https://github.com/hhrutter/pdfcpu