从PdfFileWriter创建blobstore文件

时间:2012-11-08 10:22:49

标签: python file google-app-engine blobstore pypdf

我正在尝试使用python和google app引擎将两个pdf与pyPdf库合并。 我从blobstore读取文件,并使用我需要的信息创建PdfFileWriter对象,但是我在将blofstore文件中的PdfFileWriter转换为麻烦。有什么想法解决它吗? 谢谢:))

这是我的代码:

    blob_reader1 = blobstore.BlobReader(blob_key1)
    blob_reader2 = blobstore.BlobReader(blob_key2)

    writer = PdfFileWriter()

    input1 = PdfFileReader(blob_reader1)
    input2 = PdfFileReader(blob_reader2)

    writer.addPage(input1.getPage(0))
    writer.addPage(input1.getPage(1))
    writer.addPage(input2.getPage(0))


    # finally, write "output" to document-output.pdf
    # This lines are comment because it is the way to do it without google app engine---
    # outputStream = file("document-output.pdf", "wb")
    # output.write(outputStream)
    # outputStream.close()
    #        
    # Open the file and write to it
    #I do not how write the information are inside writer in blobstore file
    file_name = files.blobstore.create(mime_type='application/pdf')    
    #with files.open(file_name, 'a') as f:
    #    f.write(writer) it does not work

    # Finalize the file. Do this before attempting to read it.
    files.finalize(file_name)

    blob_key = files.blobstore.get_blob_key(file_name)

1 个答案:

答案 0 :(得分:1)

你可能会尝试将数据输出到字符串缓冲区,然后将缓冲区写入blob文件:

import StringIO

stream = StringIO.StringIO()
writer.write( stream )    # write PDF content

# Open the file and write to it
with files.open(file_name, 'a') as f:
    f.write( stream.getvalue() )

然后敲定并执行通常的操作。