通过App Engine Standard(第二代)上的ImageMagick库发布处理pdf

时间:2019-08-16 13:37:56

标签: google-app-engine google-cloud-platform

我们有一个OCR产品,我们正在尝试从App Engine Flex过渡到App Engine Standard(第二代)。

我们一直试图在App Engine Standard(第二代)上安装用于操作PDF的系统软件包(ImageMagick),并且面临“ 未授权”和PDF的异常无法转换。

此问题是由ImageMagick package

的最新安全更新引起的

我们找到了一些解决方法

    修改ImageMagick软件包中的
  1. policy.xml 文件,该文件通常位于/ etc目录中。由于App Engine Standard不允许对文件系统进行写访问(/ tmp dir除外)。这行不通。

PS: 我们在容器化环境中采用了上述解决方法,并将其部署在App Engine Flex上。我们正在尝试在标准环境中解决此问题。

  1. 将ImageMagick库部署为代码的一部分(我们选择不继续使用此方法

  2. 直接通过Ghostscript请求将PDF转换为图像,并根据此post

  3. 绕过ImageMagick
  

Ghostscrip配置

gs_args=["pdf2png",
                 "-dSAFER -dBATCH -dNOPAUSE",
                 "-sDEVICE=png16m",
                 "-o", temp_local_dir+"page-%02d.png",
                 "-r250", temp_local_filename,
                 "-dColorConversionStrategy=/LeaveColorUnchanged -dDownsampleMonoImages=false -dDownsampleGrayImages=false -dDownsampleColorImages=false",]

这解决了问题。但是,这引起了另一组问题:

  • 如果我们将分辨率值设置为 r400 ,它可以提供高质量的图像,但会增加文件大小。而如果将其设置在r100或r200之间,则图像质量会下降并且文件大小可以接受(<5MB)。
  • 这导致响应时间增加。

我想了解如何在App Engine标准环境中使它(ImageMagick或Ghostscript或任何其他库)工作。

0 个答案:

没有答案