Django FileResponse PDF - 前端的 pdf 字体更改 - (Django DRF 和 React.js)
我在我的应用程序中使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论