CLI convert *viele*.png 2 *viele*.pdf

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
michaa7
Beiträge: 4632
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

CLI convert *viele*.png 2 *viele*.pdf

Beitrag von michaa7 » 08.03.2019 12:29:02

Ich weiß dass ich mit
$ convert foo.png bar.pdf
ein png-bild in ein pdf einbetten kann.

Wie mache ich das für viele/alle*.png innerhalb eines verzeichnisses?

Der name soll dabei gleich bleiben, nur die extension soll sich ändern. Die pngs basieren auf Scanns mit 600 dpi, und das soll so bleiben. Die resultierende bildgröße ist DIN A4. Wenn ich "convert" richtig verstehe bleibt das ohne weiter angaben so erhalten. Dann ginge es also nur darum den obigen befehl innerhalb des verzeichnisses alle pngs abarbeiten zu lassen.

???
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

MaGe
Beiträge: 1717
Registriert: 01.06.2014 17:12:16

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von MaGe » 08.03.2019 12:39:51

vieleicht so
Testen:
for i in `ls *.png`; do convert "$i" "$i".pdf; done

gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

guennid

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von guennid » 08.03.2019 12:40:32

Verstehe nicht, was da an meinem Kommando bei dir nicht funktioniert. Der Name kann doch nicht „gleich“ bleiben, wenn du aus vielen Namen einen einzigen machen willst.

Noch konkreter: bei mir heißen die Bilder partitur1.png, partitur2.png, .... und daraus wird partitur.pdf

dirk11
Beiträge: 2818
Registriert: 02.07.2013 11:47:01

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von dirk11 » 08.03.2019 12:44:50

Code: Alles auswählen

for i in *; do convert $i $(basename $i .png).pdf; done
sollte funktionieren. Dann hast Du aber beide Dateien, das original png und zusätzlich das pdf.

michaa7
Beiträge: 4632
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von michaa7 » 08.03.2019 13:13:04

Danke an beide.

@ guennid

ich hatte deinen vorschlag noch gar nicht ausprobiert weil ich ihm (fälschlicherweise) unterstellt habe dass er nur mit einem einzelem bild fuktioniert und ich auch diese units und density optionen nicht durchblickt hatte. Vor allem letzteres sah für mich nach 300 dpi aus während meine bilder in 600 dpi vorliegen. Ich wollte hier einfach nicht vom hölzchen aufs stöckchen kommen ....

(test)
convert *.png meinenoten.pdf
erstellt hier (nach mehrfachen versuchen) ein pdf mit nur den ersten zwei von 33 seiten.

Die seiten sind von 00 (umschlag) bis 36 durchnummeriert, die seiten 01-04 fehlen), das resultierende pdf besteht nur aus den seiten 00 und 05.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

guennid

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von guennid » 08.03.2019 13:23:26

michaa7 hat geschrieben:Vor allem letzteres sah für mich nach 300 dpi aus
Für mich auch. :wink: Das musst du bei deinen 600 dpi natürlich anpassen. Wie, das weiß ich auch nicht, Ich habe das Kommando von „weiß-nicht-mehr-woher“ einfach übernommen, weil's für mich passte. du hast jetzt zwei Möglichkeiten: Entweder du beschränkst dich beim Scannen/Bild bearbeiten wie ich auf 300 dpi (für Partiturkopien erscheint mir das ausreichend), dann kannst du das Kommando 1:1 übernehmen (Lücken im PDF hatte ich nie) oder du wartest darauf, dass dir eine anderer sagt, mit welchen „density“-Vorgaben du deine 600dpi bei DIN-A4 erreichst - ich weiß es nicht.

Grüße, Günther
Zuletzt geändert von guennid am 08.03.2019 13:33:49, insgesamt 1-mal geändert.

Benutzeravatar
heisenberg
Beiträge: 3556
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von heisenberg » 08.03.2019 13:29:07

dirk11 hat geschrieben: ↑ zum Beitrag ↑
08.03.2019 12:44:50

Code: Alles auswählen

for i in *; do convert $i $(basename $i .png).pdf; done
sollte funktionieren. Dann hast Du aber beide Dateien, das original png und zusätzlich das pdf.
Danke. Habe noch gar nicht gewusst das basename auch ein Argument haben kann.

Anonsten geht es per Bash-Variablenersetzung ohne extra Zusatzprozess(Subshell) noch etwas resourcensparender:

Code: Alles auswählen

for i in *
   do convert $i ${i%.png}.pdf
done
Jede Rohheit hat ihren Ursprung in einer Schwäche.

guennid

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von guennid » 08.03.2019 13:36:41

Ich fürchte, es wird nicht funktionieren, was dirk und heisenberg vorschlagen. Es geht um Bildscans, die in einem DIN-A4-PDF landen sollen. Das wird ohne Anpassung der Auflösung beim Konvertieren nicht gehen.

Hier noch mal mein funktionierendes Kommando, das keiner Schleife bedarf:

Code: Alles auswählen

convert *.png -resize 2480x3508 -units PixelsPerInch -density 300x300 <komplett>.pdf
Was micha benötigt, sind die Ersatzwerte für „2480x3508“ bei 600dpi.

Grüße, Günther

michaa7
Beiträge: 4632
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von michaa7 » 08.03.2019 13:42:13

guennid hat geschrieben: ↑ zum Beitrag ↑
08.03.2019 13:23:26
...Das musst du bei deinen 600 dpi natürlich anpassen. ...
Das ist gar nciht notwendig, einfach weglassen. Aber wie erwähnt, das erzeugt kein pdf mit *allen* seiten nur die ersten zwei schaffen es in's pdf.

Aber ich habe es jetzt "zu fuß" geschafft, ein pdf mit allen seiten zu erstellen. Leider zeigt mir aber weder evince noch qpdfview eine verfügbare duplexfunktion sondern "nicht verfügbar" (evince) bzw ausgegraut (qpdfview).

Ich befürchte, dass ich mich diesbezüglich entweder mit cups beschäftigen muß oder mit dem treiber. Allerdings glaube ich mich dunkel zu erinneren irgendwo gelesen zu haben dass auch der linuxtreiber duplexfähig wäre.

Oh mann ....
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

michaa7
Beiträge: 4632
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von michaa7 » 08.03.2019 13:44:18

guennid hat geschrieben: ↑ zum Beitrag ↑
08.03.2019 13:36:41

Was micha benötigt, sind die Ersatzwerte für „2480x3508“ bei 600dpi.

Grüße, Günther
nee, nee, einfach weglassen, sowohl dieses unit gerödel als auch die density angabe. Ich denke das ist beides nur notwendig wenn die vorhandene größe und/oder auflösung *geändert* werden sollen.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

guennid

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von guennid » 08.03.2019 13:51:22

Ich denke das ist beides nur notwendig wenn die vorhandene größe und/oder auflösung *geändert* werden sollen.
Und ich denke, das ist genau das was erforderlich ist, die „Änderung der Auflösung“ bei der Umwandlung der Bilder. :wink: Hier jedenfalls ergibt mein Kommando einwandfreie DIN-A4-Seiten im PDF, wenn ich vorher darauf achte, mit 300dpi zu scannen und meine Bilder via gimp in eine DIN-A4 Vorlage mit einer Auflösung von 300dpi zu kopieren. Die jeweilige „Ebene“ muss dann bei Bedarf noch skaliert werden.

Grüße, Günther

michaa7
Beiträge: 4632
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von michaa7 » 08.03.2019 14:09:05

heisenberg hat geschrieben: ↑ zum Beitrag ↑
08.03.2019 13:29:07
dirk11 hat geschrieben: ↑ zum Beitrag ↑
08.03.2019 12:44:50

Code: Alles auswählen

for i in *; do convert $i $(basename $i .png).pdf; done
sollte funktionieren. Dann hast Du aber beide Dateien, das original png und zusätzlich das pdf.
In dem verzeichnis liegen die dateien als datei.xcf und als datei.png vor. Dein befehl erzeugt zusätlzich die datei.xcf.pdf bei mir. (Ich ihn mir nochmals in der history angesehen!)

heisenberg hat geschrieben: ↑ zum Beitrag ↑
08.03.2019 13:29:07
Danke. Habe noch gar nicht gewusst das basename auch ein Argument haben kann.

Anonsten geht es per Bash-Variablenersetzung ohne extra Zusatzprozess(Subshell) noch etwas resourcensparender:

Code: Alles auswählen

for i in *    do convert $i ${i%.png}.pdf done
erzeugt bei mir
>
Ich habe das nur recht umständlich alles zu fuß erledigt nachdem ich mit dirk's befehl die pdf's erzeugt hatte habe ich sie mit

Code: Alles auswählen

gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=mein.pdf mein_00.pdf mein_05.pdf mein_06.pdf <alles per hand soe weiter bis> mein_36.pdf
Funktioniert gut und schnell, ist aber natürlich sehr umständlich einzugeben.

Mein problem ist nun, dass das eigentlich alles (fast) für die katz' war, weil das mit dem duplexdruck nicht klappt, wird mir weder in evince noch in qpdfview als auswählbar angeboten.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
heisenberg
Beiträge: 3556
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von heisenberg » 08.03.2019 14:11:22

Wenn Du es in einer Zeile schreiben willst, braucht es noch zusätzliche Semikolons(Befehlstrenner):

Code: Alles auswählen

for i in *   ; do convert $i ${i%.png}.pdf ; done
Jede Rohheit hat ihren Ursprung in einer Schwäche.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von JTH » 08.03.2019 14:32:11

michaa7 hat geschrieben: ↑ zum Beitrag ↑
08.03.2019 14:09:05
In dem verzeichnis liegen die dateien als datei.xcf und als datei.png vor. Dein befehl erzeugt zusätlzich die datei.xcf.pdf bei mir. (Ich ihn mir nochmals in der history angesehen!)
Dann darfst du eben nur die PNGs einschließen:

Code: Alles auswählen

for i in *.png; do convert $i ${i%.png}.pdf ; done

michaa7 hat geschrieben: ↑ zum Beitrag ↑
08.03.2019 14:09:05
Ich habe das nur recht umständlich alles zu fuß erledigt nachdem ich mit dirk's befehl die pdf's erzeugt hatte habe ich sie mit

Code: Alles auswählen

gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=mein.pdf mein_00.pdf mein_05.pdf mein_06.pdf <alles per hand soe weiter bis> mein_36.pdf
Funktioniert gut und schnell, ist aber natürlich sehr umständlich einzugeben.
Das kann man mit Brace Expansion vermeiden:

Code: Alles auswählen

gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=mein.pdf mein_{00..36}.pdf


Ich werfe als Möglichkeit nochmal pdfjoin aus Debiantexlive-extra-utils in die Runde. Das nimmt auch direkt PNGs:

Code: Alles auswählen

$ pdfjoin --twoside --outfile mein.pdf mein_{00..36}.png
Das --twoside ist geraten als Abhilfe für den fehlenden Duplexdruck, ansonsten weglassen.
Manchmal bekannt als Just (another) Terminal Hacker.

michaa7
Beiträge: 4632
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von michaa7 » 08.03.2019 14:44:28

Danke an alle beteiligten, wieder was gelernt, der hinweis mit der brace expansion ist für mich natürlich super hilfreich weil ich mir eben mit der bash alleine nicht zu helfen weiß!

Das problem mit dem duplexdruck ist wohl treiberproblem. Der rückgriff auf den treiber für das vorgängermodel (zu meinem drucker gibt es nur pdd) hat nun was duplex druck betrifft zum erfolg geführt.

:mrgreen:
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

dirk11
Beiträge: 2818
Registriert: 02.07.2013 11:47:01

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von dirk11 » 08.03.2019 14:50:46

guennid hat geschrieben: ↑ zum Beitrag ↑
08.03.2019 13:36:41
Ich fürchte, es wird nicht funktionieren, was dirk und heisenberg vorschlagen. Es geht um Bildscans, die in einem DIN-A4-PDF landen sollen. Das wird ohne Anpassung der Auflösung beim Konvertieren nicht gehen.
[...] Was micha benötigt, sind die Ersatzwerte für „2480x3508“ bei 600dpi.
Ich wüsste nicht, warum das nicht funktionieren sollte. Letztlich passiert ja nichts anderes, als dass das jpg oder png in ein pdf eingebettet wird - dazu muss das Bild nicht angefasst werden.
Es wird sozusagen nur die PDF-Struktur drumherum gebaut.
Nichts anderes machst Du, wenn Du Plain-Text aus einem *.txt, z.B. einem log, in ein Office-Dokument per c&p einfügst. Die Buchstaben bleiben erhalten, Schriftart und Größe werden vom umgebenden Konstrukt bestimmt.

guennid

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von guennid » 08.03.2019 14:58:24

Na ja, das war vielleicht nicht der glücklichste Ausdruck. Dass das funktioniert bezweifle ich auch gar nicht. Aber bei der Frage, wie da ein Bild letztlich im DIN-A4-seitenorientierten PDF erscheint, das ist doch schon eine Frage der Auflösung. Aber ok, wenn's beim TE ohne Einstellung zu seiner Zufriedenheit funktioniert, dann braucht's das eben nicht. Ich mach's halt seit Jahren fehlerfrei auf meine Weise. Und ich meine zu erinnern, dass meine dazumaligen ersten Versuche gezeigt hätten, dass es duchaus nötig war.

dirk11
Beiträge: 2818
Registriert: 02.07.2013 11:47:01

Re: CLI convert *viele*.png 2 *viele*.pdf

Beitrag von dirk11 » 08.03.2019 15:06:11

Wie "wie"? Wenn die Bilddatei 600dpi hat, wird sie mit 600dpi dargestellt. Sollte es jedenfalls. Was ich nicht weiß ist, was mit Bildern geschieht, die per se größer als das Ziel-Druckformat A4 sind.

PDF sollte sich bei sowas wie ein Containerformat wie z.B. mkv verhalten.

Antworten