如何修复函数/符号“pango_context_set_round_glyph_positions”错误

问题描述 投票:0回答:3

我已经使用 Apache2 部署了一个 Django 项目,除了 weazyprint 为表单创建 PDF 文件之外,一切都工作正常。该 pdf 在测试和本地主机中运行良好。

现在每次我访问 pdf 时都会显示此错误:

FileNotFoundError at /business_plan/businessplan/admin/info/2/pdf/
[Errno 2] No such file or directory: '/home/ahesham/Portfolio/static\\css\\report.css'

我尝试更改

\
并添加两次,但没有成功 这是views.py

def admin_order_pdf(request, info_id):
    info = get_object_or_404(Info, id=info_id)
    html = render_to_string('businessplan/pdf.html', {'info': info})
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'filename="order_{}.pdf"'.format(
        Info.id)
    weasyprint.HTML(string=html,base_url=request.build_absolute_uri()).write_pdf(response,
                                           stylesheets=[weasyprint.CSS(settings.STATICFILES_DIRS[0] + '\css\\report.css')], presentational_hints=True)
    return response

错误来自于此

\css\\report.css
知道report.css文件位于静态文件夹中并且部署站点的所有css和js都工作得很好,我尝试了
python manage.py collectstatic
没有工作。

我不确定为什么会显示错误,如果是因为 ubunto 或 django 视图。

更新:

我尝试将位置更改为以下位置:

stylesheets=[weasyprint.CSS(settings.STATICFILES_DIRS[0] + '/css/report.css')], presentational_hints=True) 

这是出现的错误

function/symbol 'pango_context_set_round_glyph_positions' not found in library 'libpango-1.0.so.0': /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0: undefined symbol: pango_context_set_round_glyph_positions

所以我搜索了解决方案并尝试下载这个包:

sudo apt-get install libpango1.0-0

也尝试过:

install libpango1.0-dev

但仍然没有任何改变,它不会出现相同的错误。

我还尝试在项目部署时用静态根替换静态目录,但我遇到了相同的错误

function/symbol 'pango_context_set_round_glyph_positions'
以下内容:

stylesheets=[weasyprint.CSS(settings.STATIC_ROOT + '/css/report.css')]

这是设置文件:

STATIC_URL = '/static/'
#if DEBUG:
#    STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
#else:
#STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static' )]

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

我正在使用 Ubuntu 18.04 LTS 磁盘 - Apache2 服务器

我的问题: 我做错了什么以及如何解决它?

如果需要其他信息来帮助修复此错误,请告诉我。

如果有其他方法在 Django admin 中显示 PDF,任何反馈都将受到高度赞赏

python django apache ubuntu django-views
3个回答
28
投票

我也遇到过同样的错误

在库中找不到“pango_context_set_round_glyph_positions”

我想你一定使用的是weasyprint 53.0版本,它需要pango版本1.44.0+

将 weasyprint 版本降级到 52.5 解决了我的问题。因为这不需要最新版本的 pango。

你也可以检查这个https://github.com/Kozea/WeasyPrint/issues/1384


0
投票

使用以下命令将 weasyprint 降级到版本 52.5。

$ python -m pip install WeasyPrint==52.5


-6
投票

可能 Weasyprint 没有正确下载:

尝试:

pip install django-weasyprint

来源:https://pypi.org/project/django-weasyprint/

© www.soinside.com 2019 - 2024. All rights reserved.