diff options
Diffstat (limited to 'support/autolatex/translators/odg2pdf.transdef')
-rw-r--r-- | support/autolatex/translators/odg2pdf.transdef | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/support/autolatex/translators/odg2pdf.transdef b/support/autolatex/translators/odg2pdf.transdef new file mode 100644 index 0000000000..6b52ae4cce --- /dev/null +++ b/support/autolatex/translators/odg2pdf.transdef @@ -0,0 +1,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 + |