ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

DjVuDigital

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

DjVuDigital {en} 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 {en}. Es stehen eine Vielzahl von Optionen zur individuellen Anpassung zur Verfügung. Bestehende Textlayer einer .ps-Datei können erhalten werden.

Lizenzprobleme

Allerdings muss eine Version eines Ghostscript-Teibers {en} verwendet werden, der zwar von AT&T auch unter einen Open-Source-Lizenz veröffentlicht wurde (CPL-Lizenz {en}), allerdings ist diese nicht kompatibel mit der GPL-Lizenz {en}, unter der die Programme des DjVuLibre-Projekts und die verwendete Version von Ghostscript {en} 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 {en}.

Achtung!

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 {en} von AT&T, einer der ursprünglichen Entwickler des Verfahrens, auf der AT&T-gsdjvu-Seite {en} 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.

Installation

Um DjVuDigital nutzen zu können, müssen die Pakete

  • djvulibre-bin (universe)

  • ghostscript

Wiki/Vorlagen/Installbutton/button.png 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 {en} 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.

Ghostscript-Treiber erstellen

Benötigt wird die neuste Version des GSDjVu-Codes {dl}, außerdem der aktuelle Ghostscript-Quellcode {dl}, 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!

Hinweis!

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)

Wiki/Vorlagen/Installbutton/button.png 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!

Verwendung von Ghostscript 9.05/9.06

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 

Funktionsweise

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 {en} komprimiert und zu einem DjVu-Dokument verarbeitet wird. Technische Details findet man in den DjVuDigital-Spezifikationen {en}.

Bedienung

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

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.

Probleme

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.

Alternativen

  • pdf2djvu - vergleichbares Programm von Jakub Wilk {en}, 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 {en}

ubuntuusers.local › WikiDjVuDigital