Django FileResponse PDF - 前端的 pdf 字体更改 - (Django DRF 和 React.js)

发布于 2025-01-10 03:29:10 字数 965 浏览 1 评论 0原文

我在我的应用程序中使用 Django Rest Framework 和 React.js。作为应用程序的一部分,我在后端生成 pdf,然后将它们发送到前端进行显示。这个功能是有效的,如果不是因为我的前端 pdf 中的字体看起来不同的话。

在我的后端,我使用reportlab来生成pdf,使用buffer = io.BytesIO()作为reportlab.pdfgen画布的对象。 然后在我看来,我通过 FileResponse 发送它。我使用的字体系列 id 'Roboto'。

然后,在我的前端中,我通过 Axios 调用 API 并使用以下代码打开 pdf。

    const config = {
        headers: {
                Authorization: `Bearer ${access_token}`
            }
        }

    const { data } = await axios.get(
            `/api/my/url/`,
            config
        )

    const file = new Blob([data], { type: "application/pdf" });
    //Build a URL from the file
    const fileURL = URL.createObjectURL(file);
    //Open the URL on new Window
    const pdfWindow = window.open();
    pdfWindow.location.href = fileURL;

这可以在新窗口中正确打开我的 pdf。 然而,我的pdf的字体改变了,字符看起来有点不同(并且utf-8符号完全与其他符号改变)。

当我用 Postman 测试我的 API 时,下载的 pdf 看起来完全符合预期,所以我相信问题出在前端。

我不确定问题的原因是什么,所以我非常感谢您的帮助!

I am using Django Rest Framework and React.js for my application. As part of the application I generate pdf in the backend and then send them to the frontend to be displayed. This functionality is working, if not for the fact that the font in my pdf at the front-end looks different.

In my backend I am using reportlab to generate the pdfs, using buffer = io.BytesIO() as object of reportlab.pdfgen canvas.
Then in my view, I send it via FileResponse. The font family I use id 'Roboto'.

In my frontend I then call the API via Axios and open the pdf with the following code.

    const config = {
        headers: {
                Authorization: `Bearer ${access_token}`
            }
        }

    const { data } = await axios.get(
            `/api/my/url/`,
            config
        )

    const file = new Blob([data], { type: "application/pdf" });
    //Build a URL from the file
    const fileURL = URL.createObjectURL(file);
    //Open the URL on new Window
    const pdfWindow = window.open();
    pdfWindow.location.href = fileURL;

This correctly opens my pdf in a new window.
However, the font of my pdf is changed, the characters look a bit different (and utf-8 symbols are completely changed with other symbols).

When I test my API with Postman, the downloaded pdf looks exactly as it should, so I believe the problem is in the frontend.

I'm not sure what is the cause of the problem, so I would really appreciate help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文