【问题标题】:Generating pdf using web2py-appreport (xhtmltopdf) in Python Web2py webapp在 Python Web2py webapp 中使用 web2py-appreport (xhtmltopdf) 生成 pdf
【发布时间】:2012-07-04 16:58:32
【问题描述】:

我来自非编码背景,所以 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,并且 alert 为我提供了所需的 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)

由于我对编码的了解较少,我无法找出并纠正我的错误。如果有人能帮我解决这个问题,我将不胜感激。

问候, 阿卡什

【问题讨论】:

    标签: python pdf-generation web2py pypdf pisa


    【解决方案1】:

    可能是这个帖子请求:

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

    我认为您应该将“数据”参数设置为文字字典,而不是字符串。像这样更改这一行(删除除一组引号之外的所有引号):

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

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

    【讨论】:

    • function getContent() { var t= jQuery('#redactor_content').getCode(); var l= JSON.stringify(t); jQuery.fileDownload('./myreport', { httpMethod :"GET", data: { cont : l} });我认为在我的场景中需要使用 type:"GET" 而不是 "POST",我对 get 和 post 感到困惑。上面的代码有效,但我必须使用 jQuery 插件 jquery.fileDownload.js 才能使代码正常工作。我会记住您的建议并会尝试的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 2018-11-15
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多