在Python Web2py webapp中使用web2py-appreport(xhtmltopdf)生成pdf

时间:2012-07-04 08:02:10

标签: python pdf-generation web2py pypdf pisa

我来自非编码背景,所以python,web2py对我来说很新。

我的应用需要将textarea内容(使用RTE编辑器)导出为pdf。我从textarea(redactor)获取html内容,你能否告诉我如何使用pyfpdf在点击按钮时生成pdf文件。

我不知道如何在视图中点击按钮获取html内容(图像和文本)以使用appreport生成pdf。

我能够使用app-report从现有的html文件(没有css)生成pdf(使用PISA,PYPDF不起作用),如果html文件有css则会抛出错误,

***<class 'sx.w3c.cssParser.CSSParseError'> Terminal function expression expected closing ')':: (u'Alpha(Opacity', u'=0); }\n\n\n\n.ui-state-')***

这可能是由于控制器代码中的错误造成的:

def myreport():
    html = response.render('myreport.html', dict())
    return plugin_appreport.REPORTPISA(html = html)

我尝试的另一件事是使用ajax post(在Javascript中)将html从我的视图传递给控制器​​。 Redactor是我正在使用的textarea RTE,它提供了所需的html结果。

查看:

function getContent() {
var t= jQuery('#redactor_content').getCode();
alert(t);
jQuery.ajax({ 
                    type: "POST", 
                    url: "http://127.0.0.1:8000/Test50/default/myreport2", 
                    data: "{g : 'jQuery('#redactor_content').getCode()'}" 

                }); 
 }

控制器:

def myreport2():
    g = request.get_vars
    html = response.render(g)
    return plugin_appreport.REPORTPISA(html = html)

由于我对编码知识不足,我无法找出并纠正错误。如果有人能帮我解决这个问题,我将感激不尽。

此致 阿卡什

1 个答案:

答案 0 :(得分:0)

可能是这个帖子请求:

jQuery.ajax({ 
    type: "POST", 
    url: "http://127.0.0.1:8000/Test50/default/myreport2", 
    data: "{g : 'jQuery('#redactor_content').getCode()'}" 
  }); 
}

我认为你应该让'data'参数成为文字字典,而不是字符串。像这样改变这一行(删除除一组引号之外的所有引号):

    data: {g : jQuery('#redactor_content').getCode() }

这应该正确发送请求。 jQuery documentation表示数据参数应该是键值对,而不是字符串。