ubuntuusers.de

gob_conv - galileo openbook-Archiv in pdf konvertieren

Status: Ungelöst | Ubuntu-Version: Ubuntu 9.10 (Karmic Koala)
Antworten |

ubuntuuser1

Anmeldungsdatum:
1. März 2009

Beiträge: 104

Dieses "Projekt" ist dem von 51L3NT_5P3CT3R sehr ähnlich. Allerdings versucht es, das Problem mit einem bash-skript zu lösen.

Benötigt werden die Programme tidy und wkhtmltopdf.

Man erstelle im dem Verzeichnis, in das man das openbook entpackte, die Datei gob_conv.sh, macht sie auführbar und fülle sie mit folgendem Inhalt:

 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
65
#!/bin/sh
# Stand: 10. November 2009

# dieses skript schreibt alle .htm dateien aus dem verzeichnis, in dem das skript liegt (möglichst das verzeichnis,
# in das das galileo-openbook-zip-archiv entpackt wurden)
# in die datei alle.htm im selben verzeichnis, bereinigt diese (geht dabei nach einem galileo
# openbook-spezifischen muster vor - das kann siche aendern!!!) und wandelt das resultat in eine pdf-datei openbook.pdf um,
# wobei es eine css-datei beruecksichtigt, die aus dem normalen galileo-style und der datei archiv-verzeichnis/mod.css , die
# eventuell noch angelegt werden muss, zusammengesetzt ist.

# die css-datei archiv-verzeichnis/mod.css sollte folgendes enthalten (ohne die rauten,
# das koennte sich im laufe der zeit veraendern!!!):
# body {visibility:hidden;background:none;width:100%;padding:0;margin:0;}
# table, tr, td{padding:0;margin:0; width:auto;}
# div.main, .box {visibility:visible;margin:0;padding:0;width:100%;}
# .box {border:none; margin-top:-100; padding-bottom:50px;}
# dd {display:none;}

# start des skript-bodys
echo "Lege css-Datei ./user.css an ..."
cat ./common/galileo_open.css > ./user.css
cat ./mod.css >> ./user.css

echo "Kopiere alle htm-Dateien in ./alle.htm ..."
HTMS="`ls *.htm`"

for FILE in ${HTMS};
do
	if [ "$FILE" != "stichwort.htm" ]; then
		# werfe die kommentare raus (alles zwischen <br><hr><a  und </form> )
		sed '/<br><hr><a /,/<\/form>/ d' ./$FILE > ./clean
		# werfe head und erste tabelle raus
		sed '/<html>/,/<\/table>/ d' ./clean > ./cleaner
		#fuege minimale kopfzeilen ein
		echo "<html><head><title></title></head><body>" > ./clean
		cat ./cleaner >> ./clean
		#saeubere die ausgabe ohne etwas auszugeben
		tidy -m ./clean 2>/dev/null
		#haenge es der alle beinhaltenden datei an
		cat ./clean >> ./alle.htm
	fi
done

#saeubere ausgabe ohne etwas auszugeben
tidy -m ./alle.htm 2>/dev/null

#loesche den anfang der datei
sed '/<!DOC/,/<\/head>/ d' ./alle.htm > ./clean

#fuege minimale kopfzeilen ein
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"user.css\">\n</head>" > ./alle.htm

#fuege restinhalt ein
cat clean >> ./alle.htm

echo "Wandele ./alle.htm in ./openbook.pdf um ..."

# umwandeln von htm zu pdf
wkhtmltopdf -n -s A4 -d 200 ./alle.htm ./openbook.pdf

echo "Raeume auf ..."
rm ./clean
rm ./cleaner
rm ./alle.htm
rm ./user.css

Danach erstellt man im selben Verzeichnis die Datei mod.css und befülle sie mit

1
2
3
4
5
body {visibility:hidden;background:none;width:100%;padding:0;margin:0;}
table, tr, td{padding:0;margin:0; width:auto;}
div.main, .box {visibility:visible;margin:0;padding:0;width:100%;}
.box {border:none; margin-top:-100; padding-bottom:50px;}
dd {display:none;}

Nun kann man im Terminal in das Archiv-Verzeichnis navigieren und mit

./gob_conv.sh

sich die Datei ./openbook.pdf erstellen lassen.

Lugöt

Anmeldungsdatum:
17. Mai 2009

Beiträge: 40

Tachchen!

Ich habe das gerade mal ausprobiert. Im Prinzip funktioniert es auch tadellos. Nur sieht die PDF-Datei am Ende etwas zerschnitten aus. Am Anfang sind erstmal 5 leere Seiten vorhanden und die Grafiken sind teilweise über 2 Seiten verteilt was das ganze etwas wüst "unordentlich" aussehen lässt. Gibts dafür einen Lösungsansatz?

Ansonsten super Idee!

Gruß, Lugöt

ubuntuuser1

(Themenstarter)

Anmeldungsdatum:
1. März 2009

Beiträge: 104

Welches Buch hast Du ausprobiert?

Ein Lösungsansatz wäre, den css-code zu optimieren. Ideal wäre wohl, wenn man alles per css ausblenden könnte (auch den platz freigeben, wie bei display:none) AUSSER den main-container...

Ein weiterer und aufwendigerer Lösungsansatz bestände darin, den html-code analysieren zu lassen und definierte Sektionen "herauszuschneiden".

Zu den Grafiken fällt mir auf Anhieb nichts ein.

Lugöt

Anmeldungsdatum:
17. Mai 2009

Beiträge: 40

Ich habe das Openbook zu Python, von Galileo Computing benutzt.

Prometheus.CH

Anmeldungsdatum:
15. März 2008

Beiträge: 78

Wow, danke. Genau sowas hab ich gesucht!

SonOfAFreak

Anmeldungsdatum:
5. Juli 2007

Beiträge: Zähle...

ausgezeichnet! vielen dank! formatierung ist wohl nicht optimal.. aber man hat sein pdf und es ist alles drin ☺

son

shur

Anmeldungsdatum:
24. März 2008

Beiträge: 31

Wohnort: München

pdf wird nicht perfekt, aber es ist genau das was ich gesucht hab... Vielen Dank!

Hilmar

Anmeldungsdatum:
9. März 2012

Beiträge: 2

hmm... schade bei diesem Buch (http://download2.galileo-press.de/opting_java7.zip) kommt nur ein leeres pdf bei heraus...

kriegaex

Anmeldungsdatum:
23. März 2007

Beiträge: 5

Ich habe eine Lösung in Java erstellt, um die Galileo Openbooks erste mal in sauberes HTML zu verwandeln, d.h. die Navigation und Werbung außen herum wird gelöscht, graphische Trenner im Text (Weltkugel-Logos) werden entfernt, Link-Fehler korrigiert (in über 10 von 30 Büchern sind fehlerhafte Verweise im Inhaltsverzeichnis, die auf ein falsches Kapitel zeigen), fehlende Verweise auf den Index (Stichwortverzeichnis) auf der Hauptseite eingefügt u.v.m.

GitHub-Repository: https://github.com/kriegaex/Galileo-Openbook-Cleaner

Download JAR: https://github.com/downloads/kriegaex/Galileo-Openbook-Cleaner/galileo_openbook_cleaner-0.8.jar

Ob man dann hinterher die Umwandlung nach PDF oder EPUB mit Acrobat, Calibre oder der Druckfunktion des Browsers macht, ist Geschmackssache.

Antworten |