【问题标题】:Google App Engine Conversion API failing with BackendErrorGoogle App Engine Conversion API 因 BackendError 而失败
【发布时间】:2012-02-15 04:31:47
【问题描述】:

我正在尝试将html 转换为pdf
如果我不包含任何图像,则转换工作正常,但如果我包含图像,则会失败并显示错误代码 3 和描述 BackendError
我指的是在我的html 资产中包含为 static/thumb.jpg 的图像资产。

def prepare_bar_attachment(bars):
    asset = conversion.Asset('text/html',
                             render_template('bar/print.html',
                                             bars=bars),
                             'print.html')
    thumbnail = None
    if bar.thumbnailurl:
        img_response = urlfetch.fetch(bar.thumbnailurl)
        if img_response.status_code == 200:
            thumbnail = conversion.Asset('image/jpeg', img_response.content,
                                         'thumb.jpg')
    conv = conversion.Conversion(asset, 'application/pdf')
    if thumbnail:
        conv.add_asset(thumbnail)
    result = conversion.convert(conv)
    if result.assets:
        attachment = [('Bars.pdf', result.assets[0].data)]
    else:
        attachment = []
        app.logger.error('Error Code: %s\nDescription\%s'%\
                             (result.error_code, result.error_text))
    return attachment

【问题讨论】:

  • 你能发布更正的代码吗?我没有看到要更正的名称。
  • 从文档中,资产的名称应该与 img 标签的 src 属性匹配。你可以在这里看到一个示例代码stackoverflow.com/questions/10759324/…

标签: python google-app-engine file-conversion


【解决方案1】:

这可能是因为您在 app.yaml 中映射为 static 资产的项目无法被您的应用代码访问。尝试在代码中的某处包含图像,或者在 app.yaml 中不将图像映射为静态。

听起来这是因为 html 资源中的 img src 路径应该与资源路径匹配。

【讨论】:

  • 在上面的代码中将图像资产命名为 bar.thumbnail 解决了问题也不需要将图像引用为 static/thumb.jpg或我的 html 中的任何特殊内容
  • 这是一个后端错误,它与从应用程序代码访问静态文件无关。资产均以二进制形式提供,然后由 Conversion API 后端访问,由此引发错误。
【解决方案2】:

在我的例子中,BackendError 是在我引用未作为资产提供的图像时生成的。

奇怪的是,当一个图像被 CSS 引用,但 CSS 规则不适用时,它可以正常工作。

当 HTML 更改并且之前未使用的 CSS 规则(引用丢失的图像资源)被应用到新的/更改的 HTML 元素时,错误开始出现。

因此,只要不使用这些 CSS 规则,就可以在 CSS 中引用丢失的图像资源。

【讨论】:

  • 你有不同的问题。我建议您发布一个包含您的具体详细信息的新问题。
  • 这是一个类似的问题——缺少资产引用——但只有在应用 CSS 规则(缺少资产引用)时才会发生这种情况。这很棘手,因为该错误仅在极少数情况下发生。我希望这个解释能帮助遇到Google App Engine Conversion API failing with BackendError 问题的人;)
猜你喜欢
  • 1970-01-01
  • 2013-07-15
  • 2018-08-14
  • 1970-01-01
  • 2014-05-12
  • 2012-03-24
  • 2013-12-09
  • 2013-01-11
  • 1970-01-01
相关资源
最近更新 更多