如何在 jquery 发布请求后从 Django 中的 HttpResponse 显示 pdf?

问题描述

我正在使用 xhtml2pdf 在我的平台上介绍 pdf 报告下载。目的是通过ajax将包含一些数据的字典发送到视图,以便它触发utils.py中的render_to_pdf函数。问题是,虽然一切似乎都在工作,但由于请求有效且数据已发送,因此未生成 pdf。对此有什么想法吗?提前致谢!

views.py

int* pIn;
int* pOut;
for(int i = 0; i < Number; ++i) {     
     for(int Input_number = 0; Input_number < 100 / 2; ++Input_number) {
        pIn = pInputArr[i];
        pOut = pOutputArr[i];
        Some_fun(pIn,pOut);
        Some_fun(pOut,pIn);
    }
}

utils.py

 def ViewPDF(request,*args,**kwargs):
   
       if request.is_ajax():
          print('ajax')
       else:
          print('NOT ajax')
 

       s_id = kwargs['pk']

       customer = request.user
       search = searches_history.objects.get(id=s_id)
       product_id = search.product

       b = Products.objects.get(id=5)

       if product_id== b:
          print(b)
        

          search1 = ofac_lists.objects.filter(name__contains=search)
        
          context = {'id': customer,'search_id' : s_id,'nombre_buscado': search,'results' : search1,'date': search.date_created }
        
          pdf = render_to_pdf('core/reports/free_search.html',context)     
          return HttpResponse(pdf,content_type='application/force-download')
      else:
          
          context = {'id': customer,'date': search.date_created }
          pdf = render_to_pdf('core/reports/free_search.html',context)
          return HttpResponse(pdf,content_type='application/pdf')

main.js

def render_to_pdf(template_src,context_dict={}):
    template = get_template(template_src)


    html  = template.render(context_dict)
    result = BytesIO()
    pdf = pisa.pisaDocument(BytesIO(html.encode("UTF-8")),result)
    if not pdf.err:
    # Force pdf download
        response = HttpResponse(result.getvalue(),content_type='application/pdf')  
        response['Content-disposition'] = 'inline; filename=" .pdf"'    

        return response
    # view pdf in browser
    #        return http.HttpResponse(result.getvalue(),mimetype='application/pdf',content_type='application/force-download')

    return HttpResponse('We had some errors %s ' % cgi.escape(html))

响应POST REQUEST looks like the request is working fine

In response you can see that some type of doc is generated,but nor displayed in the browser or downloaded

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)