• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

pdf aus Terminal erzeugen

commander

Baldwins roter Pepping
Unvergessen
Registriert
25.02.04
Beiträge
3.206
Hi Leuts,

ich wusste mal nen Kniff, wie man z.B. man - Pages des Terminals in pdf verwandeln kann. Das ging sehr schön und sehr einfach. Leider fällt mir absolut nicht mehr ein, wie das ging.

Ich bräuchte nun eine Möglichkeit, übers Terminal gescriptet eine Riesenmenge ASCII Text in pdfs zu verwandeln (ein paar hunderttausend).

Weiß jemand wie der Kniff funktioniert?

Oder wie würdet ihr das machen:

ein ASCII - Zeichenstream, der von der Datenbank kommt, muss nach Datensätzen getrennt in pdfs verwandelt werden... in endlicher Zeit ;)

Gruß,

.commander
 
Zuletzt bearbeitet:

Bier

Pomme au Mors
Registriert
24.08.07
Beiträge
867
Code:
#!/bin/sh
##############################################################################
# m2pp, 15.01.2004, version 0.1                                              #
# Copyright Axel S. Gruner 2004. All Rights reserverd.                       #
############################################################################## 
# BSD Lizenz - tu damit was Du willst (Vervielfaeltigung, Publizieren,       #
#              uebersetzen, die Benutzung und auch Veraenderungen sind       #
#              erlaubt solange dieser Copyrightvermerk vorhanden ist).       # 
#              Haftung ist ausgeschlossen. Es gibt keine Garantie.           #
#              Benutzung auf eigene Gefahr. Rutschig wenn feucht.            #
#              Keine Haftung f¸r Fahrl‰ssigkeit, Unwissenheit, Benutzung,    #
#	       weder direkt noch indirekt.                                   #
#	       Nach Konsum von zuviel Alkohol und anderen berauschenden      # 
#	       Drogen wird fuer Farben, M‰use, Elefanten und/oder            #
#	       Geraeusche keine Haftung fuer deren Qualitaet (Technicolor    #
#	       und/oder Dolby Digital) uebernommen.                          #
#                                                                            #
#              Wer das Programm nuetzlich findet. Schoen.                    #
#	       Wer das Programm unnuetz findet. rm.		             #
##############################################################################
clear
echo
echo "m2pp (man 2 ps|pdf print)"
echo
echo "Mit 'm2pp' koennen manpages in das PS und/oder PDF Format umgewandelt oder direkt gedruckt werden."
echo
echo "Um in das PS Format zu konvertieren bedarf es keiner weiteren Software."
echo "Wollen Sie das Dokument auch ansehen, so wird das Programm 'gv' vorrausgesetzt."
echo
echo "Um in das PDF Format zu konvertieren muss das Programm 'ps2pdf' auf dem System"
echo "vorhanden sein. Dieses Programm ist Teil von 'ghostscript' welches hierfuer installiert sein muss."
echo "Zum anzeigen der PDF Dokumente wird 'acroread5' auf dem System erwartet."
echo "Sollte 'acroread5' nicht vorhanden sein, so wird 'gv', wenn vorhanden, zur Anzeige von PDF genutzt."
echo
echo "Zum Fortfahren [RETURN] druecken."     
echo
read answer
clear

tmpdir=/tmp
man2psdf_tmpdir="$tmpdir/man2psdf_tmpdir"

rm -rf "$man2psdf_tmpdir"
mkdir "$man2psdf_tmpdir"

if [ $? -ne 0 ]; then
	man2psdf=`mktemp -q -d "$tmpdir/man2psdf_tmpdir"` || \ 
echo
echo 1>&2 "Konnte temporares Verzeichnis nicht erstellen."
fi

if [ $# = 0 ]; then
	echo "INFO:"
	echo "Bitte manpage angeben die umgewandelt werden soll"
	exit 1
fi

# Abfrage ob Programme vorhanden sind.
# Hier koennen, statt der angegebenen Programme, auch andere eingesetzt werden.
# Sollte statt 'acroread5' 'acroread4' installiert sein, kann die komplette "if" Anweisung
# herausgenommen werden, und statt 'ACROREAD=/usr/local/bin/acrored5' ein anderen Pfad und/oder
# andere Version von acroread angegeben werden.

if [ ! -f /usr/local/bin/ps2pdf ]; then
        echo
	echo "INFO:"
	echo "ACHTUNG! ps2pdf ist auf Ihrem System nicht vorhanden."
else
        echo
	echo "INFO:"
	echo "ps2pdf ist auf dem System vorhanden"
	PS2PDF=/usr/local/bin/ps2pdf
fi

if [ ! -f /usr/local/bin/acroread5 ]; then
        echo
	echo "INFO:"
	echo "ACHTUNG! acroread5 ist auf Ihrem System nicht vorhanden."
else
        echo
	echo "INFO:"
	echo "acroread5 ist auf dem System vorhanden"
	ACROREAD5=/usr/local/bin/acroread5	
fi

if [ ! -f /usr/X11R6/bin/gv ]; then
        echo
	echo "INFO:"
	echo "ACHTUNG! gv ist auf Ihrem System nicht vorhanden."
else
        echo
	echo "INFO:"
	echo "gv ist auf dem System vorhanden"
	GV=/usr/X11R6/bin/gv
fi


# Abfrage welche Funktion der User wuenscht

echo
echo $2 "Wollen Sie die manpage '$1' mit gv oder acroread betrachten (gv|ac), sofort drucken (d|D) oder nur sichern (0)?"; 
read answer
echo
case $answer 
in
	gv|GV)
		if [ ! -f /usr/X11R6/bin/gv ]; then
		echo
		echo "'gv' ist auf dem System nicht vorhanden."
		echo "Manpage '$1' wird nur unter $man2psdf_tmpdir gespeichert."
		man -t $1 > $man2psdf_tmpdir/$1.ps
	else 
		echo   
		echo "'gv' wurde gefunden" 
		man -t $1 > $man2psdf_tmpdir/$1.ps 
		gv $man2psdf_tmpdir/$1.ps
		fi
		;;
	ac|AC)
		if [ -f /usr/local/bin/acroread5 ] && [ -f /usr/local/bin/ps2pdf ]; then
			echo
			echo "'Acroread5' wurde gefunden."
			echo "'ps2pdf' wurde gefunden."
			man -t $1 > $man2psdf_tmpdir/$1.ps
		        $PS2PDF $man2psdf_tmpdir/$1.ps $man2psdf_tmpdir/$1.pdf
			$ACROREAD5 $man2psdf_tmpdir/$1.pdf
			elif  [ -f /usr/X11R6/bin/gv ]; then
				echo "Es wurde kein 'acroread' oder 'ps2pdf' gefunden."
				echo "'gv' wurde gefunden und wird zur Darstellung der manpage '$1' genutzt."
				man -t $1 > $man2psdf_tmpdir/$1.ps
				$GV $man2psdf_tmpdir/$1.ps
		else
			echo
			echo "Es wurde kein 'gv' und kein 'acroread' oder 'ps2pdf' gefunden."
			echo "Anzeige der manpage '$1' als PS oder PDF nicht moeglich."
			echo "Manpage '$1' wird im PS Format unter $man2psdf_tmpdir gespeichert."
			man -t $1 > $man2psdf_tmpdir/$1.ps
		fi
		;;
	d|D)
		echo "Soll die manpage $1 einseitig (1) oder zweiseitig (2) (2 Seiten auf einer DIN A4 Seite) gedruckt werden?"; 
		read druck
			if [ "$druck" = "1" ]; then
				man -t $1 | lpr 
			else
				if [ "$druck" = "2" ]; then 
					man -t $1 | psnup -2 | lpr
			else
				echo "Fehler beim umwandeln zum Druck."
				fi
			fi
		;;	
	0)
		if [ -f /usr/local/bin/ps2pdf ]; then
			echo
			echo "'ps2pdf' gefunden, wandle die manpage '$1' in PS und PDF um."
			echo "Speicherung erfolgt unter $man2psdf_tmpdir."
			man -t $1 > $man2psdf_tmpdir/$1.ps
			ps2pdf $man2psdf_tmpdir/$1.ps $man2psdf_tmpdir/$1.pdf
		else
			echo
			echo "Konnte 'ps2pdf' nicht finden"
			echo "Manpage '$1' wird nur als PS Datei unter $man2psdf_tmpdir gespeichert."
			man -t $1 > $man2psdf_tmpdir/$1.ps
		fi
		;;
	*)
		echo "Sie muessen eine korrekte Auswahl treffen (gv|ac|d|0)"
		echo
		exit 
		;;
esac
clear
exit 1
 
  • Like
Reaktionen: 1 Person

commander

Baldwins roter Pepping
Unvergessen
Registriert
25.02.04
Beiträge
3.206
Habt dank edle Ritter, ich werds morgen testen und berichten!
 

Hobbes_

Gast
Die von Dir ebenso gesuchte Kurzfunktion für die man-Pages:
pepi hat mir mal eine enfache bash-Funktion gezeigt, die man in die ~/.bash_profile Datei einbauen kann:

Code:
pman() { man -t "$@" | open -f -a Preview; }

Statt man irgendwas, ruft man dann halt pman irgendwas auf.

Eine Kurzanleitung dazu findet sich auch im 3. Teil des Terminal-Tutorials.

Danke an pepi!