staging.inyokaproject.org

Bilder in mehrseites PDF zusammenfügen

Status: Gelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

kopeter

Avatar von kopeter

Anmeldungsdatum:
9. Juli 2013

Beiträge: 124

Hallo liebe Community, ich mache Anträge wie z.B. den Wohngeldantrag meistens Digital. Damit dabei auch Unterschriften eingefügt werden können und weil ich mäßige Erfahrungen mit PDF-Formularen gemacht habe läuft das über GIMP. Nun habe ich viele Einzelne Bilder. Für die Übersichtlichkeit möchte ich die gerne in einem PDF zusammenführen. Dazu habe ich folgendes Programm von merlin1987 im Forum gefunden: https://forum.ubuntuusers.de/topic/imagemagick-funktioniert-nicht-2/2/: Das Programm wurde im Hinblick auf die Variable imagetype (png statt jpg) verändert, außerdem habe ich auf Anraten von user_unknown den Code verschlankt

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
#

#######################
# VARIABLE: umzuwandelnder Dateityp
imagetype="png"
#######################

# Name der Ausgabedatei
read -p "Name der neuen PDF-Datei? :" newname

# alle Bilder in PDF umwandeln
for i in *.${imagetype} ; do convert "$i" "$i.pdf"; done

# erzeugte PDF-Dateien zusammenfassen
#convert *.png newname.pdf 
#gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=$newname.PDF *.pdf 
mutool merge -o $newname.pdf *.pdf

# temporäre PDF Dateien wieder löschen
#for i in *.${imagetype} ; do rm "$i.pdf"; done
echo "Konvertierung abgeschlossen. PDF-Datei ${newname}.pdf erzeugt."

Zum Schritt für Schritt Test:

ich wandle Bilder mit Imagemagic in PDF um:

peter@Laotse:~/Schreibtisch/TEST$ for i in *.png ; do convert "$i" "$i.pdf"; done
peter@Laotse:~/Schreibtisch/TEST$ 

nun versuche ich die PDF-Dateien zu einer Datei zu mergen

mit ImageMagick

1
2
peter@Laotse:~/Schreibtisch/TEST$ convert *.png newname.pdf 
peter@Laotse:~/Schreibtisch/TEST$

klappt ohne Fehleranzeige, hat allerdings nur Seite 1 im PDF

mit mutool

peter@Laotse:~/Schreibtisch/TEST$ mutool merge -o newname.pdf *.pdf
error: cannot recognize version marker
warning: trying to repair broken xref
warning: repairing PDF document
error: invalid key in dict
error: invalid key in dict
error: invalid key in dict
warning: name is too long
error: no objects found
error: aborting process from uncaught error!

mit gs

peter@Laotse:~/Schreibtisch/TEST$ gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=newname.PDF *.pdf 
GPL Ghostscript 9.50 (2019-10-15)
Copyright (C) 2019 Artifex Software, Inc.  All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
Error: /syntaxerror in (binary token, type=137)
Operand stack:

Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1990   1   3   %oparray_pop   1989   1   3   %oparray_pop   1977   1   3   %oparray_pop   1833   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push
Dictionary stack:
   --dict:729/1123(ro)(G)--   --dict:0/20(G)--   --dict:75/200(L)--
Current allocation mode is local
GPL Ghostscript 9.50: Unrecoverable error, exit code 1

irgendwie scheinen die PDF nicht ganz koscher zu sein die ImageMagick da produziert. Oder mache ich etwas falsch?

nocairns

Avatar von nocairns

Anmeldungsdatum:
21. August 2016

Beiträge: 39

Ich verwende pdftk, um solche Arbeiten problemlos zu erledigen. pdftk ist leider nicht mehr in den Repos, kann aber als Snap installiert werden. Das folgende Skript fügt markierte Einzel-PDF-Dateien zu einer Gesamtdatei zusammen, der Dateiname der der neuen Datei kann eingegeben werden. pdftk ist ein sehr mächtiges Tool, weitere Infos auch hier in UU. In weiteren Skripts, die ich verwende, benutze ich auch den convert-Befehl, um pdf-files zu erstellen, die ich dann mit pdftk zusammenfüge. Funktioniert also.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#! /bin/bash
# cat Input-PDF into new pdf
#
# Dateinamen eingeben
Fname=$(zenity --entry \
                      --text "Dateiname (ohne .pdf)" \
                      --title "Neuen Dateinamen eingeben" \
                      --width="500")
pdftk $NAUTILUS_SCRIPT_SELECTED_URIS cat output "$Fname".pdf
notify-send 'pdf-cat abgeschlossen'

ps: Zenity wird hier benötigt und muss installiert sein. Die Abfrage des Dateinamens geht natürlich auch über "read-p"

juribel

Anmeldungsdatum:
20. April 2014

Beiträge: 1269

Moin,

das geht doch ganz einfach mit convert (Beispiel):

convert *.jpg ausgabe.pdf

Einzelne pdf-Dateien kann man mit pdfunite zu einer einzigen mehrzeiligen pdf-Datei zusammenfügen.

Viele freundliche Grüsse, juribel

kopeter

(Themenstarter)
Avatar von kopeter

Anmeldungsdatum:
9. Juli 2013

Beiträge: 124

pdftk hab ich aus den paketquellen installiert, das ging wohl nur bei der 2018er Version nicht. tuen tuts aber auch nicht.

Versuch mit pdftk

 
peter@Laotse:~/Schreibtisch/TEST$ pdftk *.pdf cat output zusammen.pdf 
Error: Unable to find file.
Error: Failed to open PDF file: 
   Seite_01.png.pdf
Error: Unable to find file.
Error: Failed to open PDF file: 
   Seite_02.png.pdf
Error: Unable to find file.
Error: Failed to open PDF file: 
   Seite_03.png.pdf
Error: Unable to find file.
Error: Failed to open PDF file: 
   Seite_04.png.pdf
Error: Unable to find file.
Error: Failed to open PDF file: 
   Seite_05.png.pdf
Error: Unable to find file.
Error: Failed to open PDF file: 
   Seite_06.png.pdf
Error: Unable to find file.
Error: Failed to open PDF file: 
   Seite_07.png.pdf
Error: Unable to find file.
Error: Failed to open PDF file: 
   Seite_08.png.pdf
Error: Unable to find file.
Error: Failed to open PDF file: 
   Seite_09.png.pdf
Errors encountered.  No output created.
Done.  Input errors, so no output created.
peter@Laotse:~/Schreibtisch/TEST$ 

versuch mit pdfunite

peter@Laotse:~/Schreibtisch/TEST$ pdfunite *.pdf  zusammen.pdf 
Syntax Warning: May not be a PDF file (continuing anyway)
Syntax Error: Couldn't find trailer dictionary
Syntax Error: Couldn't find trailer dictionary
Syntax Error: Couldn't read xref table
Syntax Error: Could not merge damaged documents ('Seite_01.png.pdf')
peter@Laotse:~/Schreibtisch/TEST$ 

Der Fehler scheint nicht beim zusammenfügen der PDF zu entstehen, sondern beim erstellen derselben. Warum allerdings das bei mir nicht klappt, da bin ich weiter ratlos...

kopeter

(Themenstarter)
Avatar von kopeter

Anmeldungsdatum:
9. Juli 2013

Beiträge: 124

Ich habe mal versucht aus Convert mehr Informationen rauszuholen:

peter@Laotse:~/Schreibtisch/TEST$ for i in *.png ; do convert -verbose "$i" "$i.pdf"; done
Seite_01.png PNG 2480x3507 2480x3507+0+0 8-bit sRGB 675077B 0.180u 0:00.780
Seite_01.png=>Seite_01.png.pdf PNG 2480x3507 2480x3507+0+0 8-bit sRGB 256c 326512B 0.810u 0:01.300
Seite_02.png PNG 1653x2338 1653x2338+0+0 8-bit sRGB 436319B 0.110u 0:00.269
Seite_02.png=>Seite_02.png.pdf PNG 1653x2338 1653x2338+0+0 8-bit sRGB 256c 197847B 0.410u 0:00.359
Seite_03.png PNG 1653x2338 1653x2338+0+0 8-bit sRGB 408080B 0.080u 0:00.109
Seite_03.png=>Seite_03.png.pdf PNG 1653x2338 1653x2338+0+0 8-bit sRGB 256c 179469B 0.410u 0:00.349
Seite_04.png PNG 1653x2338 1653x2338+0+0 8-bit sRGB 382579B 0.090u 0:00.140
Seite_04.png=>Seite_04.png.pdf PNG 1653x2338 1653x2338+0+0 8-bit sRGB 256c 165308B 0.390u 0:00.329
Seite_05.png PNG 1653x2338 1653x2338+0+0 8-bit sRGB 362291B 0.100u 0:00.149
Seite_05.png=>Seite_05.png.pdf PNG 1653x2338 1653x2338+0+0 8-bit sRGB 256c 163018B 0.420u 0:00.380
Seite_06.png PNG 1653x2338 1653x2338+0+0 8-bit sRGB 427979B 0.090u 0:00.099
Seite_06.png=>Seite_06.png.pdf PNG 1653x2338 1653x2338+0+0 8-bit sRGB 256c 192314B 0.430u 0:00.380
Seite_07.png PNG 1653x2338 1653x2338+0+0 8-bit sRGB 244744B 0.080u 0:00.089
Seite_07.png=>Seite_07.png.pdf PNG 1653x2338 1653x2338+0+0 8-bit sRGB 256c 109783B 0.330u 0:00.280
Seite_08.png PNG 2480x3507 2480x3507+0+0 8-bit sRGB 589077B 0.190u 0:00.199
Seite_08.png=>Seite_08.png.pdf PNG 2480x3507 2480x3507+0+0 8-bit sRGB 610626B 0.780u 0:00.740
Seite_09.png PNG 1653x2338 1653x2338+0+0 8-bit sRGB 445082B 0.090u 0:00.089
Seite_09.png=>Seite_09.png.pdf PNG 1653x2338 1653x2338+0+0 8-bit sRGB 256c 199319B 0.430u 0:00.380

edit: habe mit pdfunite gerade getestet: wenn ich zwei pdfs aus dem Web uniten will, dann klapps. Convert macht also kaputte PDFs bei mir ☹

kopeter

(Themenstarter)
Avatar von kopeter

Anmeldungsdatum:
9. Juli 2013

Beiträge: 124

Ich hab einen Workaround gebastelt, allerdings ist das keine Lösung mit der ich glücklich bin.

#!/bin/bash
#

#######################
# VARIABLE: umzuwandelnder Dateityp
imagetype="png"
#######################

# Name der Ausgabedatei
read -p "Name der neuen PDF-Datei? :" newname

# alle Bilder in PDF umwandeln
##econvert kann nur jpg lesen und convert macht falsche pdfs, deshalb dieser Zwischenschritt
for i in *.${imagetype} ; do convert "$i" "$i.jpg"; done 
##nun die JPG in PDF umwandeln
for i in *.${jpg} ; do econvert --dpi 150 -i "$i" -o "$i.pdf"; done

# erzeugte PDF-Dateien zusammenfassen (hier gibt es mehrere Alternativen, alle funktionieren bei mir)
# gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=$newname.PDF *.pdf 
# mutool merge -o $newname.pdf *.pdf
# pdftk *.pdf cat output $newname.pdf 
 pdfunite *.pdf  $newname.pdf 

# temporäre PDF Dateien wieder löschen
#for i in *.${imagetype} ; do rm "$i.pdf"; done
echo "Konvertierung abgeschlossen. PDF-Datei ${newname}.pdf erzeugt."

Bertram12

Avatar von Bertram12

Anmeldungsdatum:
16. März 2014

Beiträge: 363

Hast du es schon mal mit https://pdfsam.org/de/ probiert?

Antworten |