我有以下代码,该代码似乎提供了没有任何内容的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文件路径。
答案 0 :(得分:0)
我不是Python开发人员,所以我不能太具体地帮助您,但是有几件事...
如果您的Phython脚本以相同的响应(例如通过CGI)输出标头和内容,则需要在标头和内容之间留空行。现在您有一个\r\n
。添加第二个\r\n
。
另一件事是,您应该找到一种从该文件流式传输输出的方法,而不是读取其所有字节并打印它们。
最后,我不知道Python中的print()
是否将其解释为字符串,但是对于二进制数据可能会出现问题。再次通过将流直接输送到输出来解决。
答案 1 :(得分:0)
找出其他人是否需要知道的我自己问题的答案:
pdf = Path("url/to/file.pdf")
print("Content-type: application/pdf\r\n\r\n")
stdout.flush()
stdout.buffer.write(pdf.read_bytes())
答案 2 :(得分:-1)
我真的不知道您的问题是什么。看起来代码与问题无关。似乎应该在本地文件系统中找到pdf(build_in open?),然后打印其内容(?)。您是否使用了一些框架(烧瓶/ Django)?
如果通过动态投放,您可以考虑基于某些模板动态创建pdf:
pdf可能是由诸如HTML,tex文件之类的markdown语言构成的(不幸的是,latex是一个复杂的系统,不适合与Web应用程序一起部署)
markdown语言文件可以依次由模板软件(jinja2,django build_in)呈现
https://weasyprint.org/是将html + css转换为pdf的库
Ps。添加更多上下文