| 1 |
fa500e83
|
Benjamin Dauvergne
|
import os
|
| 2 |
09630453
|
Benjamin Dauvergne
|
import subprocess
|
| 3 |
|
|
import tempfile
|
| 4 |
|
|
|
| 5 |
|
|
class PdfTk(object):
|
| 6 |
fa500e83
|
Benjamin Dauvergne
|
def __init__(self, pdftk_path=None, prefix='tmp'):
|
| 7 |
09630453
|
Benjamin Dauvergne
|
self._pdftk_path = pdftk_path
|
| 8 |
fa500e83
|
Benjamin Dauvergne
|
self.prefix = prefix
|
| 9 |
09630453
|
Benjamin Dauvergne
|
|
| 10 |
|
|
@property
|
| 11 |
|
|
def pdftk_path(self):
|
| 12 |
|
|
return self._pdftk_path or '/usr/bin/pdftk'
|
| 13 |
|
|
|
| 14 |
fa500e83
|
Benjamin Dauvergne
|
def do(self, args, wait=True):
|
| 15 |
09630453
|
Benjamin Dauvergne
|
args = [self.pdftk_path] + args
|
| 16 |
|
|
proc = subprocess.Popen(args)
|
| 17 |
fa500e83
|
Benjamin Dauvergne
|
if wait:
|
| 18 |
|
|
return proc.wait()
|
| 19 |
|
|
else:
|
| 20 |
|
|
return proc
|
| 21 |
09630453
|
Benjamin Dauvergne
|
|
| 22 |
fa500e83
|
Benjamin Dauvergne
|
def concat(self, input_files, output_file, wait=True):
|
| 23 |
7c757f94
|
Benjamin Dauvergne
|
args = input_files + ['cat', 'output', output_file, 'compress', 'flatten']
|
| 24 |
|
|
return self.do(args, wait=wait)
|
| 25 |
|
|
|
| 26 |
|
|
def background(self, input_file, background_file, output_file, wait=True):
|
| 27 |
|
|
args = [input_file, 'background', background_file, 'output', output_file, 'compress']
|
| 28 |
fa500e83
|
Benjamin Dauvergne
|
return self.do(args, wait=wait)
|
| 29 |
09630453
|
Benjamin Dauvergne
|
|
| 30 |
|
|
|
| 31 |
|
|
if __name__ == '__main__':
|
| 32 |
|
|
import sys
|
| 33 |
|
|
|
| 34 |
|
|
pdftk = PdfTk()
|
| 35 |
|
|
if sys.argv[1] == 'concat':
|
| 36 |
|
|
pdftk.concat(sys.argv[2].split(','), sys.argv[3])
|
| 37 |
775dcb4b
|
Benjamin Dauvergne
|
elif sys.argv[1] == 'background':
|
| 38 |
|
|
pdftk.background(*sys.argv[2:5])
|
| 39 |
09630453
|
Benjamin Dauvergne
|
else:
|
| 40 |
|
|
raise RuntimeError('Unknown command %s', sys.argv)
|