summaryrefslogtreecommitdiffstats
path: root/share/extensions/prepare_print_win32_vector.py
blob: e13670931d8c193ccd208d8553306cc8a2e6eb67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python 
'''
file: prepare_print_win32_vector.py

This extension will pre-process a vector image by applying the operations:
'EditSelectAllInAllLayers' and 'ObjectToPath'
before applying the extension: 'Win32 Vector Print'.

Generate vector graphics printout, specifically for Windows GDI32.

Copyright (C) 2014  Ryan Lerch     (multiple difference) 
              2016  Maren Hachmann <marenhachmannATyahoo.com> (refactoring, extend to multibool) 
              2017  Alvin Penner   <penner@vaxxine.com> (apply to 'Win32 Vector Print')

This code is based on 'inkscape-extension-multiple-difference' by Ryan Lerch
see : https://github.com/ryanlerch/inkscape-extension-multiple-difference
also: https://github.com/Moini/inkscape-extensions-multi-bool
It will call up a new instance of Inkscape and process the image there,
so that the original file is left intact.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
'''
# standard library
from subprocess import Popen, PIPE
from shutil import copy2
# local library
import inkex

inkex.localize()                        # Initialize gettext
if not inkex.sys.platform.startswith('win'):
    exit(_("sorry, this will run only on Windows, exiting..."))

class MyEffect(inkex.Effect):
    def __init__(self):
        inkex.Effect.__init__(self)

    def effect(self):
        file = self.args[-1]
        tempfile = inkex.os.path.splitext(file)[0] + "-prepare.svg"
        # tempfile is needed here only because we want to force the extension to be .svg
        # so that we can open and close it silently
        copy2(file, tempfile)
        p = Popen('inkscape --verb=EditSelectAllInAllLayers --verb=EditUnlinkClone --verb=ObjectToPath --verb=com.vaxxine.print.win32 --verb=FileSave --verb=FileQuit '+tempfile, shell=True, stdout=PIPE, stderr=PIPE)
        err = p.stderr
        f = p.communicate()[0]
        err.close()

if __name__ == '__main__':
    e = MyEffect()
    e.affect()

# vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 fileencoding=utf-8 textwidth=99