Google App Engine转换API因BackendError而失败

时间:2012-01-20 16:05:40

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

我正在尝试将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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

在我的情况下,当我引用未作为资产提供的图像时,会生成BackendError。

奇怪的是,当一个图像被CSS引用,但CSS规则没有应用时,它工作正常。

当HTML发生变化时,错误开始显现,并且先前未使用的CSS规则(引用丢失的图像资源)已应用于新的/已更改的HTML元素。

因此,只要不自行使用这些CSS规则,就可以引用CSS中缺少的图像资源。