Ubuntu 12.10 „Quantal Quetzal“
Ubuntu 12.04 „Precise Pangolin“
Ubuntu 11.10 „Oneiric Ocelot“
Ubuntu 10.04 „Lucid Lynx“
DjVuDigital ist ein Kommandozeilen-Programm zum Konvertieren von PDF-Dateien, auch die Formate PostScript(.ps), GZipped PostScript (.ps.gz) und Encapsulated PostScript (.eps) können verarbeitet werden. Das Programm ist Teil des DjVuLibre-Projektes
. Es stehen eine Vielzahl von Optionen zur individuellen Anpassung zur Verfügung. Bestehende Textlayer einer .ps-Datei können erhalten werden.
Allerdings muss eine Version eines Ghostscript-Teibers verwendet werden, der zwar von AT&T auch unter einen Open-Source-Lizenz veröffentlicht wurde (CPL-Lizenz
), allerdings ist diese nicht kompatibel mit der GPL-Lizenz
, unter der die Programme des DjVuLibre-Projekts und die verwendete Version von Ghostscript
selbst gestellt wurden. Daher kann das Programm nicht rechtmäßig als Binärdatei veröffentlicht werden. Die DjVuLibre-Entwickler interpretieren allerdings die Lage so, dass es möglich ist, den GSDjVu-Treiber für Ghostscript auch mit den Inkompatibilitäten selbst zu erstellen, da die Einschränkungen nur, so ihre Interpretation, für die Weitergabe des gesamten Programms gelten, nicht aber für anderweitige Verwendung (also auch eine Modifizierung). Eine genauere Beschreibung mit Empfehlungen befindet sich auf auf DjVuLibre-GSDjVu-Seite
.
Eine Garantie für die Richtigkeit dieser Rechtsauffassung gibt es nicht, die Erstellung erfolgt daher aufgrund der eigenen Entscheidung, und auf eigene Gefahr. Allerdings verweist Patrick Haffner von AT&T, einer der ursprünglichen Entwickler des Verfahrens, auf der AT&T-gsdjvu-Seite
selbst auf die DjVuLibre-Version für GSDjVu, insofern ist die Gefahr wohl auch wieder nicht all zu groß, zumindest solange die Version nicht veröffentlicht wird.
Um DjVuDigital nutzen zu können, müssen die Pakete
djvulibre-bin (universe)
ghostscript
mit apturl
Paketliste zum Kopieren:
sudo apt-get install djvulibre-bin ghostscript
sudo aptitude install djvulibre-bin ghostscript
installiert[1] werden.
Um das Programm nutzen zu können, muss zunächst eine Version des Treibers aus dem Ghostscript-Quellcode und einem auf dem GSDjVu-code basierenden Patch erstellt werden, der von der sourceforge-DjVu-Seite bezogen werden kann. Das Verfahren verwendet ein von den DjVuLibre-Entwicklern erstelltes automatisches Skript, bei dessen Ausführung nochmals ausdrücklich auf die unklaren Lizenz-Bedingungen hingewiesen wird.
Benötigt wird die neuste Version des GSDjVu-Codes , außerdem der aktuelle Ghostscript-Quellcode
, Version 8.64 oder höher (getestet unter 10.04 Lucid Lynx mit GSDjVu 1.4 und Ghostscript 8.71, unter 11.10 Oneiric Ocelot mit GSDjVu 1.5 und Ghostscript 9.04/9.05), unter 12.04 Precise Pangolin mit GSDjVu 1.5 und Ghostscript 9.06). Im Verzeichnis des entpackten GSDjVu-Archiv wird ein Unterverzeichnis BUILD erstellt, das Ghostscript-Archiv wird dann dort in den Ordner gsdjvu-1.x/BUILD heruntergeladen, aber nicht entpackt!
Fremdsoftware kann das System gefährden.
Außerdem sollten folgende Pakete installiert sein:
gsfonts (main)
libjpeg62-dev (main, ab Precise nicht mehr nötig)
libpng12-dev (security)
zlib1g-dev (main)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install gsfonts libjpeg62-dev libpng12-dev zlib1g-dev
sudo aptitude install gsfonts libjpeg62-dev libpng12-dev zlib1g-dev
Weiter müssen ggf. noch weitere Abhängigkeiten zum Erstellen von Ghostscript installiert werden:[2]
Befehl zum Installieren der Build-Abhängigkeiten:
sudo apt-get build-dep ghostscript
sudo aptitude build-depends ghostscript
Unter 11.10 Oneiric Ocelot und Verwendung von Ghostscript 9.04 wird zunächst in der Datei /usr/include/i386-linux-gnu/bits/time.h (64-bit-System: /usr/include/x86_64-linux-gnu/bits/time.h) in einem Editor[3] mit Root-Rechten die Definition für struct timeval
(Zeilen 75 - 79) auskommentiert, da ansonsten die Kompilierung fehlschlägt, weil im Quellcode eine weitere Definition erfolgt. Diese Änderung nach dem Kompilieren rückgängig machen, sonst kann es zu Problemen mit dem Kompilieren andere Programmen kommen!
Unter Ghostscript 9.05/9.06 ist zwar die Bearbeitung von /usr/include/i386-linux-gnu/bits/time.h (64-bit-System: /usr/include/x86_64-linux-gnu/bits/time.h) nicht mehr nötig, allerdings muss in der Datei ghostscript-9.0x/base/gdevdjvu.c die Zeile 84 (#include "gserror.h"
) auskommentiert oder gelöscht werden. Dazu das Archiv zunächst entpacken, die Änderung in einem Editor vornehmen, und dann wieder als tar.gz packen. Dieser etwas umständliche Weg ist deshalb nötig, weil das build-gsdjvu-Skript das Ghostscript-Archiv beim Aufruf entpackt und zuvor ggf. gemachte Änderungen damit wieder hinfällig werden (wer schnell ist, kann auch während des Kompiliervorganges diese Datei editieren...)
Danach wird das Shell-Skript build-gsdjvu ausgeführt, dazu den gesamten Pfad angeben, z.B.
/home/BENUTZER/gsdjvu-1.X/build-gsdjvu
Das Skript entpackt den Quellcode, patcht den Ghostscript-Code mit dem gdevdjv-Treiber aus dem gsdjvu-1.X/att/-Verzeichnis, kompiliert Ghostscript und erhält nur die benötigten Dateien (nähere Einzelheiten kann man dem Skript selbst entnehmen). Das Skript legt diese GSDjVu-Dateien im Ordner BUILD/INST/gsdjvu ab. Es enthält u.a. die ausführbare Programmdatei gsdjvu, auf die DjVuDigital zurückgreift, diese Datei sollte also in ein Verzeichnis kopiert oder per symbolischer Verknüpfung eingebunden werden, das in der PATH
-Umgebungsvariable verzeichnet ist.
Beispiele:
gsdjvu wird mit Root-Rechten nach /usr/local/lib/gsdjvu kopiert und verknüpft (nutzbar für alle Benutzer):
sudo cp -r BUILD/INST/gsdjvu /usr/local/lib cd /usr/local/bin sudo ln -s ../lib/gsdjvu/gsdjvu gsdjvu
gsdjvu wird in das Homeverzeichnis des Benutzers installiert; die Nutzung ist damit nur für diesen Benutzer möglich (die Path-Variable muss das Verzeichnis ~/bin beinhalten):
cp -r BUILD/INST/gsdjvu ~/gsdjvu cd ~/bin ln -s ../gsdjvu/gsdjvu gsdjvu
DjVuDigital verwendet eine hoch entwickelte Technologie, um die Rastergrafiken der Vorlagen in eine Vordergrundebene mit bitonale Maske für Text und Schwarzweiß-Grafik einerseits, und Hintergrund, Photos etc. andererseits zu zerlegen. Dazu wird der Ghostscript-Treiber djvusep verwendet, der die Daten aus den Vorlagen analysiert und aufteilt, dieser Treiber wird von dem erstellten Programm gsdjvu geliefert. Der Treiber erstellt aus dem Ergebnis ein "Datenblatt", das dann mit dem DjVuLibre-Programm csepdjvu komprimiert und zu einem DjVu-Dokument verarbeitet wird. Technische Details findet man in den DjVuDigital-Spezifikationen
.
DjVuDigital ist ein Kommandozeilen-Programm, die allgemeine Syntax lautet
djvudigital [Optionen] <Eingabedatei> [<Ausgabedatei>]
Dabei wird aus der Eingabedatei ohne die Angabe eines Ausgabenamens die Datei Eingabedatei.djvu erstellt. Der Prozess kann über eine Vielzahl von Optionen gesteuert werden. Um die Textebene zu übertragen, muss die Option --words
oder --lines
verwendet werden, sonst wird die Ebene nicht ordnungsgemäß erhalten.
Optionen für DjVuDigital | |
Argument | Funktion |
Extraktions-Optionen | |
--psrotate=<Winkel> | nur für .ps-Dateien: Drehung, mögliche Werte 0, 90, 180, 270. PDF wird immer in Original-Ausrichtung konvertiert |
--words | Text aus .ps-Dateien wird extrahiert, die Position jedes Wortes wird festgehalten |
--lines | Text aus .ps-Dateien wird extrahiert, die Position jeder Zeile (statt der Wörter) wird festgehalten (kleiner Größenvorteil gegenüber --words ) |
Bildqualität | |
--exact-color | ermöglicht eine genauere Farbwiedergabe |
--treshold=[n] | Schwellwert für die Aufteilung nach Vorder/Hintergrund; Werte 0 bis 100, höhere Werte = mehr Informationen im Vordergrund, Standard: 80 |
-d , --dpi=<Auflösung> | erwünschte Auflösung in dpi (Standard 600) |
Sonstiges | |
--check | gibt die Namen der gefundenen Hilfsprogramme für DjVuDigital aus |
--dryrun | gibt den Kommandozeilenaufruf für das Ghostcript-Programm aus, keine Bearbeitung |
-q , --quite | unterdrückt alle Ausgaben im Terminal |
-v , --verbose | Ausgabe aller Details, z.B. zum Debugging |
-h , --help | Hilfe, öffnet die Manpage des Programms |
Weiter Informationen finden sich in der Manpage des Programms, außerdem in der README-Datei im gsdjvu-Archiv.
Bei der Konvertierung von .pdf-Dateien mit Textlayer können "Texte" folgender Art entstehen
ABCDE EBE EFEB FFF E EB FEBFEBABF FEBB B EB EB
Leider ist eine Abhilfe nicht bekannt; es kann nur Text aus .ps-Dateien extrahiert werden!
Das Programm kann nur solche Eingabedateien verarbeiten, die auch für Ghostscript selbst keine Schwierigkeiten bereiten.
pdf2djvu - vergleichbares Programm von Jakub Wilk , kann allerdings nur PDF-Formate verarbeiten, bietet da aber wesentlich mehr Möglichkeiten, da alle Metadaten erhalten bleiben. Ein Vergleich der Programme findet sich im pdf2djvu-Wiki