summaryrefslogtreecommitdiff
path: root/src/devices/gropdf/pdfmom.pl
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/gropdf/pdfmom.pl')
-rw-r--r--src/devices/gropdf/pdfmom.pl82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/devices/gropdf/pdfmom.pl b/src/devices/gropdf/pdfmom.pl
new file mode 100644
index 00000000..a03bc83d
--- /dev/null
+++ b/src/devices/gropdf/pdfmom.pl
@@ -0,0 +1,82 @@
+#!@PERLPATH@ -w
+#
+# pdfmom : Frontend to run groff -mom to produce PDFs
+# Deri James : Friday 16 Mar 2012
+#
+
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# Written by Deri James <deri@chuzzlewit.demon.co.uk>
+#
+# This file is part of groff.
+#
+# groff 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 3 of the License, or
+# (at your option) any later version.
+#
+# groff 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, see <http://www.gnu.org/licenses/>.
+
+use strict;
+my @cmd;
+my $dev='pdf';
+
+while (my $c=shift)
+{
+ if (substr($c,0,2) eq '-T')
+ {
+ if (length($c) > 2)
+ {
+ $dev=substr($c,2);
+ }
+ else
+ {
+ $dev=shift;
+ }
+
+ next;
+ }
+ elsif ($c eq '-z' or $c eq '-Z')
+ {
+ $dev=$c;
+ next;
+ }
+
+ elsif ($c eq '-v')
+ {
+ print "GNU pdfmom (groff) version @VERSION@\n";
+ exit;
+ }
+
+ push(@cmd,$c);
+}
+
+my $cmdstring=join(' ',@cmd);
+
+if ($dev eq 'pdf')
+{
+ system("groff -Tpdf -dPDF.EXPORT=1 -mom -z $cmdstring 2>&1 | grep '^.ds' | groff -Tpdf -mom - $cmdstring");
+}
+elsif ($dev eq 'ps')
+{
+ system("pdfroff -mpdfmark -mom --no-toc $cmdstring");
+}
+elsif ($dev eq '-z') # pseudo dev - just compile for warnings
+{
+ system("groff -Tpdf -mom -z $cmdstring");
+}
+elsif ($dev eq '-Z') # pseudo dev - produce troff output
+{
+ system("groff -Tpdf -mom -Z $cmdstring");
+}
+else
+{
+ print STDERR "Not compatible with device '-T $dev'\n";
+ exit 1;
+}
+