Code: Alles auswählen
# -*- coding: iso-8859-15 -*-
from pyPdf import PdfFileWriter, PdfFileReader
from tempfile import NamedTemporaryFile
from multiprocessing import Process, Queue
import os
def merge1(q1s,q1z):
while True:
page=q1s.get()
page.mergePage(q1z.get())
q1a.put(page)
q1s.task_done()
q1z.task_done()
if __name__ == '__main__':
output = PdfFileWriter()
input1 = PdfFileReader(file("test_lang.pdf", "rb"))
watermark = PdfFileReader(file("temp.pdf", "rb"))
pages=input1.getNumPages()
q1s=Queue() #Seiten=input1
q1z=Queue() #Seitenzahlen = watermark
q1a=Queue() #Output
for i in xrange(pages):
q1s.put(input1.getPage(i))
q1z.put(watermark.getPage(i))
p1 = Process(target=merge1, args=(q1s,q1z))
p1.start()
p1.join()
while True:
page=q1a.get()
output.addPage(page)
temp_file = NamedTemporaryFile(suffix = '.pdf', prefix = 'temp',delete=False)
output.write(temp_file)
os.startfile(temp_file.name)
temp_file.close()
Code: Alles auswählen
Process Process-1:
Traceback (most recent call last):
File "C:\Python26\lib\multiprocessing\process.py", line 232, in _bootstrap
self.run()
File "C:\Python26\lib\multiprocessing\process.py", line 88, in run
self._target(*self._args, **self._kwargs)
File "D:\Python\Code\wxPython\workspace\pdfPage\src\pdfPageCMD5a.py", line 12, in merge1
page.mergePage(q1z.get())
File "C:\Python26\lib\site-packages\pyPdf\pdf.py", line 1095, in mergePage
self._mergePage(page2)
File "C:\Python26\lib\site-packages\pyPdf\pdf.py", line 1122, in _mergePage
new, newrename = PageObject._mergeResources(originalResources, page2Resources, res)
File "C:\Python26\lib\site-packages\pyPdf\pdf.py", line 1030, in _mergeResources
page2Res = res2.get(resource, DictionaryObject()).getObject()
File "C:\Python26\lib\site-packages\pyPdf\generic.py", line 165, in getObject
return self.pdf.getObject(self).getObject()
File "C:\Python26\lib\site-packages\pyPdf\pdf.py", line 615, in getObject
self.stream.seek(start, 0)
ValueError: I/O operation on closed file
doch nicht stimmen...HWK hat geschrieben:Offensichtlich werden die Dateien zwischenzeitlich geschlossen.