# Wie ein PDF aus JP2 (JPEG2000) Dateien erzeugen?

## EOF

Hallo! 

Ich möchte mehrere jp2-Dateien in ein PDF packen.

Wenn ich Imagemagick verwende, dann konvertiert

ein

```

> convert *.jp2 x.pdf

```

die jp2-Dateien offensichtlich in ein anderes Format,

das die Dateigröße von x.pdf sehr groß wird. Mit

jpg funktioniert dies hingegen.

Kennt jemand eine Möglichkeit auf andere Weise ein

PDF mit jp2-Dateien zu erzeugen (funktioniert ja seit PDF 1.5) ?

----------

## Hollowman

Das ist schon richtig so das, dass groß wird. Mach aus den jp2 Dateien erst JPGs und dann ein pdf. Dann könnte das etwas kleiner werden.

Aber davon abgesehen, man macht keine PDFs die nur aus Bildern bestehen. Dafür ist PDF nicht gedacht. Das macht auch beim drucken riesen Probleme.

Warum willst du die den unbedingt im PDF haben? Damit sie keiner bearbeiten kann? Wenn ja lass es, das umgeht man in 2 Minuten. Verschick die Teile als normales jpg. Damit kann auch jeder was anfangen.

Sebastian

----------

## EOF

 *Hollowman wrote:*   

> Das ist schon richtig so das, dass groß wird. Mach aus den jp2 Dateien erst JPGs und dann ein pdf. Dann könnte das etwas kleiner werden.
> 
> Aber davon abgesehen, man macht keine PDFs die nur aus Bildern bestehen. Dafür ist PDF nicht gedacht. Das macht auch beim drucken riesen Probleme.
> 
> Warum willst du die den unbedingt im PDF haben? Damit sie keiner bearbeiten kann? Wenn ja lass es, das umgeht man in 2 Minuten. Verschick die Teile als normales jpg. Damit kann auch jeder was anfangen.
> ...

 

Ein Freund bewirbt sich gerade und würde gerne seine Zeugnisse möglichst platzsparend verschicken. Dabei ist PDF leider unverzichtbar. JP2 liefert einfach bessere Kompression. Da bekommt man mit 50kb pro Zeugnisseite schon einen guten Ausdruck in 150dpi.

Kennt jemand vielleicht ein LaTeX package, was das kann?

----------

## firefly

du kannst bei convert eine compression art angeben, die beim erstellen des pdfs verwendet wird.

mögliche formate siehe: http://www.imagemagick.org/Usage/formats/#pdf

----------

## firefly

ne andere möglichkeit wäre es zu versuchen die bilder über einen pdf-drucker zu drucken (z.b. cupspdf)

----------

## EOF

 *firefly wrote:*   

> du kannst bei convert eine compression art angeben, die beim erstellen des pdfs verwendet wird.
> 
> mögliche formate siehe: http://www.imagemagick.org/Usage/formats/#pdf

 

Auch, wenn ich diese Option (convert -compress none) nutze wandelt er die JP2-Datei noch um. Aus 50kb werden 7mb.

----------

## firefly

kein wundern, denn -compress=none sagt, dass nichts komprimiert werden soll. und nicht dass die Daten so wie Sie sind übernommen werden.

Scheinbar unterstützt Imagemagick noch nicht das pdf format 1.5 oder die jpeg2000 Kompression, welche für bilder in pdf ab version1.5 möglich ist. Oder eine Abhängigkeit von imagemagick muss auch jpeg2k Unterstützung haben.

----------

## Hollowman

 *Quote:*   

> Ein Freund bewirbt sich gerade und würde gerne seine Zeugnisse möglichst platzsparend verschicken. Dabei ist PDF leider unverzichtbar.

 

Wieso hängt er die nicht einfach als Bild an die Mail an? Das ist wesentlich einfacher. Wenn pdf geforderd wird, dann scan den Kram gleich als pdf ein und net erst als Bild. Ist zwar auch nicht besser, aber einfacher.

Nen Zeugnis gescheit gescannt in JPG hat net mehr als 300kb, und das ist heut zu Tage nun wirklich kein Problem. Ich hoffe du scannst schwarz weiß und nicht in Farbe.

Sebastian

----------

## musv

Ich stand desletztens vor selbigem Problem. Bild eingescannt, per Gimp noch etwas die Flecken entfernt und als pdf exportiert. Folge: Die Datei war riesig.

Ich hab keine andere Lösung gefunden als den originalen Acrobat unter Windows zu verwenden, dort ein PDF zu erstellen, die Bilder einzufügen und dann zu optimieren. Damit wurde die Dateigröße annehmbar. 

Mit imagemagick hab ich so meine Probleme. Wenn ich mal 'ne montage aus verschiedenen Bildern gemacht hatte, war das jpg zum Schluß mehr als doppelt so groß verglichen mit den gleichen Arbeitschritten im Gimp. Auch die Kompressionsangaben brachten da nicht die gewünschten Erfolge. Vielleicht war ich aber auch nur zu blöd, Imagemagick ordentlich zu benutzen.

----------

## schachti

In OpenOffice einfügen und als PDF exportieren. Hat bei mir immer gut geklappt und akzeptable Dateigrößen erzeugt.

----------

## EOF

 *musv wrote:*   

> Ich stand desletztens vor selbigem Problem. Bild eingescannt, per Gimp noch etwas die Flecken entfernt und als pdf exportiert. Folge: Die Datei war riesig.
> 
> Ich hab keine andere Lösung gefunden als den originalen Acrobat unter Windows zu verwenden, dort ein PDF zu erstellen, die Bilder einzufügen und dann zu optimieren. Damit wurde die Dateigröße annehmbar. 
> 
> Mit imagemagick hab ich so meine Probleme. Wenn ich mal 'ne montage aus verschiedenen Bildern gemacht hatte, war das jpg zum Schluß mehr als doppelt so groß verglichen mit den gleichen Arbeitschritten im Gimp. Auch die Kompressionsangaben brachten da nicht die gewünschten Erfolge. Vielleicht war ich aber auch nur zu blöd, Imagemagick ordentlich zu benutzen.

 

Also normale jpg kann ich mit Imagemagick ja problemlos in ein pdf packen. Mit pdflatex geht das ebenso problemlos. Leider habe ich mit Linux keine Möglichkeit gefunden das auch mit jp2 dateien (jpeg2000) zu tun.

@schachti

Du hast mit OO ein PDF aus jp2-Dateien erzeugt? Mit OO 2.0 geht das mal nicht.

----------

## musv

Hast du auch das entsprechende USE-Flag gesetzt?

 */usr/portage/profiles/use.desc wrote:*   

> 
> 
> jpeg2k - Support for JPEG 2000, a wavelet-based image compression formatdas USE-Flag jpg2k

 

jpeg2k mag zwar ganz toll sein. Nur hat es in der Praxis so gut wie keine Bedeutung. Mir ist noch nie ein Bild in diesem Format untergekommen.

----------

## EOF

 *musv wrote:*   

> Hast du auch das entsprechende USE-Flag gesetzt?
> 
>  */usr/portage/profiles/use.desc wrote:*   
> 
> jpeg2k - Support for JPEG 2000, a wavelet-based image compression formatdas USE-Flag jpg2k 
> ...

 

Ja. Convert versteht ja jp2 bei mir. 

Es gibt eine Firma, die verkaufen einen PDFkompressor, was nicht mehr ist, als andere Bildformate in PDFs in jp2 umzuwandeln.

----------

## schachti

 *EOF wrote:*   

> Du hast mit OO ein PDF aus jp2-Dateien erzeugt? Mit OO 2.0 geht das mal nicht.

 

Nicht konkret mit jp2 Bildern, sondern allgemein mit Grafiken. Ich weiß nicht, ob evtl. OO 3.x das Format kennt.

----------

## EOF

Hier gibt es ein script, was genau das machen soll, was ich brauche:

http://freenet-homepage.de/streik/jp2topdf.html

Das script erzeugt ein minimales pdf mit einem jp2 bild eingebettet.

Das script läuft zwar durch, aber das pdf bleibt bei allen meinen

pdf-viewern weiss.

----------

## firefly

hast du auch die größe des bildes mit angegeben?

Denn ohne produziert das script ein invalides pdf.

----------

## EOF

 *firefly wrote:*   

> hast du auch die größe des bildes mit angegeben?
> 
> Denn ohne produziert das script ein invalides pdf.

 

Klar habe ich das. Kann das vielleicht mal jemand von euch

ausprobieren?   :Very Happy: 

----------

## firefly

jo ich  :Wink:  und das erstellte pdf wird in okular und foxit angezeigt.

habe dazu das image Cevennes2.jp2  von http://www.openjpeg.org/index.php?menu=samples genommen.

----------

## EOF

 *firefly wrote:*   

> jo ich  und das erstellte pdf wird in okular und foxit angezeigt.
> 
> habe dazu das image Cevennes2.jp2  von http://www.openjpeg.org/index.php?menu=samples genommen.

 

Die mit convert erzeugten jp2 funktionieren anscheinend nicht. Mit jp2 aus dem netz schein es zu funktionieren.

Leider muss die höhe und die breite dreistellig sein. Sieht jemand, wie man das script anpassen kann, also

die auflösung erweitern kann?

----------

## firefly

ich denke das ist nicht wirklich ein problem wenn die breite und die höhe mehr als 3 stellen haben. Hast du ne beispieldatei mit der ich das testen kann?

----------

## Necoro

 *EOF wrote:*   

> Hier gibt es ein script, was genau das machen soll, was ich brauche:
> 
> http://freenet-homepage.de/streik/jp2topdf.html

 

 :Arrow:  "The resulting file is no valid pdf."

----------

## sirro

 *musv wrote:*   

> jpeg2k mag zwar ganz toll sein. Nur hat es in der Praxis so gut wie keine Bedeutung. Mir ist noch nie ein Bild in diesem Format untergekommen.

 

Ist jetzt nichts was man so zuhause macht. Aber 3D-Filme für Kino scheinen teilweise aus JPEG2000-Bildern zu bestehen. War gerade bei heise zum Thema Avatar zu lesen.

----------

## qfghxvlc

 *EOF wrote:*   

> Ich möchte mehrere jp2-Dateien in ein PDF packen.
> 
> Wenn ich Imagemagick verwende, dann konvertiert
> 
> ein
> ...

 

Ja, das geht mit img2pdf. Das ist ein Python-Skript. Dieses wandelt jedes Bild verlustfrei direkt in ein PDF um (auch mehrere Bilder hintereinander in mehrere PDF-Seiten).

Unter Fedora installiert man das folgerdermaßen:

```

sudo dnf install python3-img2pdf

```

Ansonsten kann man es auch mit dem Python3-Paket-Installierer machen, welchen ich unter Fedora zunächst so installieren muss:

```

sudo dnf install python3-pip

```

Anschließend kann ich img2pdf folgendermaßen installieren:

```

sudo pip-3 install img2pdf

```

Nun kannst Du Deine j2k bzw. jp2 bzw jpeg2000 Bilder folgendermaßen zu einem PDF machen:

```

img2pdf *.jp2 -o fertigesDokument.pdf

```

FERTIG!

Abschließend will ich noch sagen: Es lohnt sich jp2 zu verwenden. Die Bilder sind viel kleiner (Faktor 10 oder mehr) und sehen besser aus. Es ist wie ein Wunder. Und sollte in der heutigen Zeit verwendet werden, statt diesem schlechten, uralten normalen jpeg. Alternative ist höchstens png mit wenig Farben (!) und per optipng gut komprimiert.

Und wie erzeugt man gute J2K/JP2 (JPG2000) Bilder? Ich verwende opj2_compress. Das ist unter Fedora im Paket openjpeg2-tools enthalten. Dieses Programm ist gut, kann aber nicht alle anderen Grafik-Formate lesen. Deshalb habe ich mir ein Skript geschrieben, welches erst die Bilder (egal welches Format) in verlustfreies BMP umwandelt (das einzige, was noch nie Fehler gemacht hat, vorher verwendete ich eine Zeit lang verlustfreies PNM, aber es gab immer wieder mal Probleme), und daraus anschließend in JP2.

Ich zeige hier mal mein komplettes Skirpt, wie ich aus beliebigen Bildern eine PDF-Datei erzeuge, die JP2-Bilder enthält. So kann man seine Bilder sehr platzsparend an jeden verschicken, denn PDF kann jeder betrachten (jp2 nicht unbedingt). Mein Skript verwendet auch das Skript parallel (unter Fedora per Paket namens parallel installierbar), welches zur parallelen Abarbeitung von Programmen verwendet wird. Außerdem drehe ich automatisch mit dem Programm exiftran die Bilder in die richtige Richtung (falls mit einer Kamera Richtungsinformationen ins Bild gepackt wurden). exiftran ist unter Fedora im Paket fbida enthalten.

So ruft man mein Skript auf, um alle Dateien in ein JPEG2000-PDF umzuwandeln (mit der Kompressionsrate, hier 400, muss man etwas herumprobieren):

```

2j2k_pdf.sh 400 *

```

Einen kleinen Hilfehinweistext erhält man mit 

```

2j2k_pdf.sh -h

```

Hier mein Skript namens 2j2k_pdf.sh, viel Spaß damit.

```

#!/bin/bash

# Wandelt Bilder in J2K um und bettet sie in PDF ein.

# Author: Erik Streb del Toro

# Licence: GPL v3 or newer

# Changelog:

#   - 2016-08-29: first version

#   - 2016-08-30: Keine Probleme mehr mit schon vorhandenen pnm- oder

#                 j2k-Dateien.

#                 Exif-rotation korrigiert.

#   - 2016-10-30: eigenes Tempdir festlegen

# FIXME:  • Problem wenn Dateien mit gleichem Namen übergeben werden.

#         • Problem mit manchen großen PNG-Dateien. Workaround: In BMP umwandeln. Automatisieren?

#           Ja, habe jetzt mal BMP genommen, wobei die halt roh sind, brauchen viel Platz im Zwischenspeicher

#############

# Variablen #

#############

if [ $# -gt 1 -a "$1" = "-t" ]; then

  shift

  TEMPBASE="${1%/}"

  shift

else

  TEMPBASE="/dev/shm"

fi

IFF="bmp"  # intermediate file format

export J2KTEMPFOLDER="$TEMPBASE/$(basename $0)$(date +%F_%T | perl -pe 's%:%-%g')"

############

# Hinweise #

############

echo '# Kompressionsrate mit -q:

# • 500 = schrott (Dokumente gerade noch lesbar), winzige Datei

# • 400 = Dokumente noch gut lesbar

# • 200 = Dokumente nur leicht schlechter

# • 20 = leichter Unterschied feststellbar (ab 3000px viel zu gut)

# • 10 = sehr gut, aber große Datei'

echo

echo "Als erstes muss eine Zahl für die Kompressionsrate übergeben werden,

danach die Dateien.

Beispiel: $(basename $0) [-t TEMPDIR] 200 scan1.jpg scan2.jpg scan3.jpg"

echo

#############

# Parameter #

#############

if [ $# -lt 2 ]; then

  echo "FEHLER!"

  echo "Keine Kompressionsrate oder keine Bild-Dateien angegeben!"

  exit 1

fi

if [ $1 -ge 1 ]; then

  RATE=$1

  shift

else

  echo "FEHLER!"

  echo "Kompressionsrate sollte zwischen 30 und 50 liegen."

  exit 2

fi

mkdir -p "$J2KTEMPFOLDER/orig"

IFS='

'

########

# Main #

########

echo "====================="

echo "Kopiere Originaldateien"

cp -v $@ "$J2KTEMPFOLDER/orig/"

echo "====================="

echo "Drehe JPG-Bilder in Exif-Richtung, falls nötig"

parallel --bar 'exiftran -ai {}'  ::: "$J2KTEMPFOLDER/orig/"*\.{jpg,JPG,jpeg,JPEG}

echo "====================="

echo "Wandle in $IFF um"

parallel --bar 'gm convert {} "$J2KTEMPFOLDER"/{/.}.'$IFF ::: "$J2KTEMPFOLDER/orig/"*

echo "====================="

echo "Erstelle jpeg2000-Bilder mit Kompressionsrate $RATE"

parallel --bar 'opj2_compress -i {} -o "$J2KTEMPFOLDER"/{/.}.j2k '\ -r\ $RATE ::: "$J2KTEMPFOLDER"/*.$IFF

echo "====================="

echo "Einbetten in PDF"

img2pdf "$J2KTEMPFOLDER"/*\.j2k -o J2K-Dateien_in_PDF_${RATE}.pdf

echo "====================="

echo "Folgende temporäre Dateien löschen"

ls "$J2KTEMPFOLDER/orig/"* "$J2KTEMPFOLDER"/{*\.$IFF,*\.j2k}

rm -f "$J2KTEMPFOLDER/orig/"* "$J2KTEMPFOLDER"/{*\.$IFF,*\.j2k}

rmdir "$J2KTEMPFOLDER/orig"

rmdir "$J2KTEMPFOLDER"

```

----------

## Prof. Frink

Moin,

```

USE="jpeg2k" emerge -av imagemagick

magick convert relax.jp2 relax.jpg

```

Viele Grüße,

Frink

----------

