Project

General

Profile

Download (1.15 KB) Statistics
| Branch: | Tag: | Revision:

calebasse / calebasse / pdftk.py @ 3cfe29c8

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)