如何在网上提供PDF文件?

时间:2018-09-29 20:55:58

标签: 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文件路径。

3 个答案:

答案 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:

  1. pdf可能是由诸如HTML,tex文件之类的markdown语言构成的(不幸的是,latex是一个复杂的系统,不适合与Web应用程序一起部署)

  2. markdown语言文件可以依次由模板软件(jinja2,django build_in)呈现

https://weasyprint.org/是将html + css转换为pdf的库

Ps。添加更多上下文