Python 如何在web上提供PDF文件?

Python 如何在web上提供PDF文件?,python,html,python-3.x,Python,Html,Python 3.x,我有以下代码,它似乎提供一个没有任何内容的PDF: from pathlib import Path pdf = Path("url/to/file.pdf") print(f"Content-Type: application/pdf;\r\n") print(pdf.read_bytes()) 任何正确提供此PDF的提示都会很有帮助 编辑:在上下文中,我试图提供PDF文件,并在服务器上隐藏原始PDF文件路径。我真的不知道你的问题是关于什么的。它的代码似乎与问题无关。它似乎假设在本地文件系

我有以下代码,它似乎提供一个没有任何内容的PDF:

from pathlib import Path

pdf = Path("url/to/file.pdf")
print(f"Content-Type: application/pdf;\r\n")
print(pdf.read_bytes())
任何正确提供此PDF的提示都会很有帮助


编辑:在上下文中,我试图提供PDF文件,并在服务器上隐藏原始PDF文件路径。

我真的不知道你的问题是关于什么的。它的代码似乎与问题无关。它似乎假设在本地文件系统中找到pdf(在open中构建?),然后打印其内容(?)。您是否使用一些框架(flask/django)

如果通过动态服务,您考虑基于某个模板动态创建pdf:

  • pdf可能由一些标记语言(如html、tex文件)构建(不幸的是,latex是一个复杂的系统,不适合与web应用程序一起使用)

  • 标记语言文件可以依次由模板软件(jinja2,django build_in)呈现

  • 是将html+css转换为pdf的库


    另外,添加更多上下文

    我不是Python开发人员,所以我不能具体帮助您,但有几件事

    如果Phython脚本在同一响应中输出标题和内容(例如通过CGI),那么在标题和内容之间需要有一个空行。现在您有一个
    \r\n
    。添加第二个
    \r\n

    另一件事是,您应该找到一种方法来流式处理该文件的输出,而不是读取其所有字节并打印它们


    最后,我不知道Python中的
    print()。通过将一个流直接输送到输出,同样可以解决这个问题。

    如果其他人需要知道,我可以找到自己问题的答案:

    pdf = Path("url/to/file.pdf")
    print("Content-type: application/pdf\r\n\r\n")
    stdout.flush()
    stdout.buffer.write(pdf.read_bytes())
    

    我试着添加上下文。基本上,我试图提供PDF文件,同时掩盖PDF的实际文件路径。也就是说,我想将PDF保存在一个不可公开访问的目录中,但当授权用户请求PDF时,我想验证他们是否被授权,如果是,则提供PDF。这不是真正的答案。为了澄清问题,使用评论而不是答案