我打算创建一个API,将HTML
页面转换为PDF文件。我使用pdfkit
和FastAPI
制作了它。但是,它将文件保存到我的本地磁盘。在我在线提供此API后,用户如何将此PDF文件下载到他们的计算机?
from typing import Optional
from fastapi import FastAPI
import pdfkit
app = FastAPI()
@app.post("/htmltopdf/{url}")
def convert_url(url:str):
pdfkit.from_url(url, 'converted.pdf')
2条答案
按热度按时间ecfsfe2w1#
返回FileResponse解决了我的问题。感谢@Paul H和@clmno下面的代码是使用FastApi返回PDF文件下载的工作示例。
**2)**这是使用tempfiles的另一种方式-要将pdf添加到变量中,只需写入False而不是path -
ergxz8rk2#
一旦你得到了PDF文件的
bytes
,你可以简单地返回一个自定义的Response
,指定content
,headers
和media_type
。因此,不需要将文件保存到磁盘或生成临时文件,正如另一个答案所建议的那样。类似于this answer,您可以设置Content-Disposition
头,让浏览器知道PDF文件是应该“查看”还是“下载”。示例
要在borwser中 * 查看 * 而不是 * 下载 * PDF文件,请用途:
请参阅this answer了解如何安装和使用pdfkit。