Du suchst ein Programm für einen bestimmten Zweck?
-
michaa7
- Beiträge: 4953
- Registriert: 12.12.2004 00:46:49
- Lizenz eigener Beiträge: MIT Lizenz
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: 1799
- Registriert: 01.06.2014 17:12:16
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
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: 2840
- Registriert: 02.07.2013 11:47:01
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: 4953
- Registriert: 12.12.2004 00:46:49
- Lizenz eigener Beiträge: MIT Lizenz
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
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.
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.
-
heisenberg
- Beiträge: 4125
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von heisenberg » 08.03.2019 13:29:07
dirk11 hat geschrieben: 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:
-
guennid
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: 4953
- Registriert: 12.12.2004 00:46:49
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von michaa7 » 08.03.2019 13:42:13
guennid hat geschrieben: 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: 4953
- Registriert: 12.12.2004 00:46:49
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von michaa7 » 08.03.2019 13:44:18
guennid hat geschrieben: 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
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.
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: 4953
- Registriert: 12.12.2004 00:46:49
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von michaa7 » 08.03.2019 14:09:05
heisenberg hat geschrieben: 08.03.2019 13:29:07
dirk11 hat geschrieben: 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: 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:
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)
-
heisenberg
- Beiträge: 4125
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von heisenberg » 08.03.2019 14:11:22
Wenn Du es in einer Zeile schreiben willst, braucht es noch zusätzliche Semikolons(Befehlstrenner):
-
JTH
- Moderator
- Beiträge: 3077
- Registriert: 13.08.2008 17:01:41
- Wohnort: Berlin
Beitrag
von JTH » 08.03.2019 14:32:11
michaa7 hat geschrieben: 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:
michaa7 hat geschrieben: 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
texlive-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: 4953
- Registriert: 12.12.2004 00:46:49
- Lizenz eigener Beiträge: MIT Lizenz
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.
gruß
michaa7
-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)
-
dirk11
- Beiträge: 2840
- Registriert: 02.07.2013 11:47:01
Beitrag
von dirk11 » 08.03.2019 14:50:46
guennid hat geschrieben: 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
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: 2840
- Registriert: 02.07.2013 11:47:01
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.