gpt4 book ai didi

django - 如何在浏览器中打开生成的PDF文件?

转载 作者:行者123 更新时间:2023-12-04 13:12:24 24 4
gpt4 key购买 nike

我写了一个Pdf合并程序,它将原始文件与水印合并。

我现在想做的是通过Django View 在浏览器中打开“document-output.pdf”文件。我已经检查了Django的相关文章,但是由于我的方法相对不同,因此我没有直接使用响应对象作为其"file"来创建PDF对象,因此我有点迷失了。

那么,我该怎么做在Django View 中呢?

from pyPdf import PdfFileWriter, PdfFileReader
from reportlab.pdfgen.canvas import Canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

output = PdfFileWriter()
input = PdfFileReader(file('file.pdf', 'rb'))

# get number of pages
num_pages = input.getNumPages()

# register new chinese font
pdfmetrics.registerFont(TTFont('chinese_font','/usr/share/fonts/truetype/mac/LiHeiPro.ttf'))

# generate watermark on the fly
pdf = Canvas("watermark.pdf")
pdf.setFont("chinese_font", 12)
pdf.setStrokeColorRGB(0.5, 1, 0)
pdf.drawString(10, 830, "你好")
pdf.save()

# put on watermark
watermark = PdfFileReader(file('watermark.pdf', 'rb'))
page1 = input.getPage(0)

page1.mergePage(watermark.getPage(0))

# add processed pdf page
output.addPage(page1)

# then, add rest of pages
for num in range(1, num_pages):
output.addPage(input.getPage(num))

outputStream = file("document-output.pdf", "wb")
output.write(outputStream)
outputStream.close()

最佳答案

我知道它的帖子比较老,但是我们可以使用html的embed标签来实现这种功能。例如:

<embed height="100%" width="100%"  name="plugin" src="filename.pdf"  type="application/pdf">

因此,在您的情况下,您可以简单地使用render to response发送响应,如下所示:
return render_to_response("abc.html",{"filename":filename})

如上所述,您可以在abc.html中将此文件名(带有路径)放入embed标记中。

希望这可以帮助。

关于django - 如何在浏览器中打开生成的PDF文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3767567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com