有没有办法用golang将PDF转换为jpeg?

Posted

技术标签:

【中文标题】有没有办法用golang将PDF转换为jpeg?【英文标题】:Is there any way converting a PDF to jpeg with golang? 【发布时间】:2019-09-24 11:12:07 【问题描述】:

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

已经尝试过 bimg(根本不起作用)和 imagemagick(gopkg.in/gographics/imagick.v3/imagick),正如另一个线程的答案中提供的那样:“https://***.com/a/47520596/7502507”

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

我怎样才能做到这一点?我似乎无法为此编辑安全设置。

感谢任何帮助!

【问题讨论】:

也许可以通过提升权限来解决问题? 显然是由于Ghostscript中的错误,您必须修改您policy.xml或更新Ghostscript包(已发布修复):***.com/questions/52998331/… 【参考方案1】:

我也遇到过同样的问题,但没有找到任何纯 Golang 解决方案。

不是纯 Golang 解决方案,但 this 在内部使用 cgo 可以完美运行。底层库是Pdfium,它是一个 C++ 库,由 Google 开发并在 Chrome 中使用。

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

为了提高操作的整体性能,我最终使用了 this 编码器,因为 Golang 的图像编码器不针对性能,而是 slow。

【讨论】:

以上是关于有没有办法用golang将PDF转换为jpeg?的主要内容,如果未能解决你的问题,请参考以下文章

怎么用ABBYY将PDF转换为JPEG图像

使用免费的 c# 解决方案将 pdf 转换为 jpeg [关闭]

Imagick 无法将 PDF 转换为 JPEG,但 ImageMagick 可以

怎样将jpeg转换bitmap

使用 Ghostscript 9.10 将 PDF 文件转换为 JPEG 文件的正确命令是啥?

将 pdf 转换为图像时出现 Ghostscript 错误