Tôi đã viết một sáp nhập Pdf mà sáp nhập một tập tin gốc với một watermark.Làm cách nào để mở tệp PDF được tạo trong trình duyệt?
Điều tôi muốn làm bây giờ là mở tệp 'document-output.pdf' trong trình duyệt bằng chế độ xem Django. Tôi đã kiểm tra bài viết liên quan của Django, nhưng vì cách tiếp cận của tôi tương đối khác, tôi không trực tiếp tạo đối tượng PDF, sử dụng đối tượng phản hồi như "tệp" của nó. Vì vậy, tôi bị mất.
Vì vậy, làm cách nào tôi có thể thực hiện ở chế độ xem Django?
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()
Vâng, tôi biết. Trên thực tế đó là những gì tôi đang yêu cầu :) Cách gửi nội dung PDF đến một đối tượng HttpResponse vì nó sẽ mở trong trình duyệt, không phải là tệp đính kèm. – israkir
@israkir: Đã cập nhật câu trả lời của tôi. Xem ở trên. –