summaryrefslogtreecommitdiff
path: root/support/autolatex/translators/odg2pdf.transdef
blob: 6b52ae4ccea3b777c0ded108d71cfe53f8dd108d (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
# autolatex - odg2pdf.transdef
# Copyright (C) 2013  Stephane Galland <galland@arakhne.org>
#
# 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; see the file COPYING.  If not, write to
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.

#--------------------------------------------
# See template.txt for details on the fields
#--------------------------------------------

INPUT_EXTENSIONS = .odg .sxd .fodg

OUTPUT_EXTENSIONS for pdf = .pdf
OUTPUT_EXTENSIONS for eps = .eps

TRANSLATOR_FUNCTION =<<EOL {
	my @binaries = ('libreoffice', 'loffice', 'openoffice', 'ooffice');
	my $bin;
	for(my $i=0; $i<@binaries && !$bin; $i++) {
		$bin = which($binaries[$i]);
	}
	if (!$bin) {
		printErr("Unable to retreive the binary file of Libre Office or Open Office.");
	}

	my $ext;
	my $mode;
	if ($ispdfmode) {
		$ext = '.pdf';
		$mode = 'pdf';
	}
	else {
		$ext = '.eps';
		$mode = 'eps';
	}

	my $outdir = File::Spec->rel2abs(dirname($out));
	my $basename = basename($in,@inexts);
	my $defaultOutput = File::Spec->catfile("$outdir", "$basename$ext");

	runCommandOrFail( "$bin", '--headless', '--nologo', '--convert-to', "$mode", '--outdir', "$outdir", "$in");

	if ($defaultOutput ne $out) {
		move("$defaultOutput", "$out") or printErr("$defaultOutput -> $out: $!");
	}

	1;
}
EOL