Beiträge anzeigen
Seiten: [1] 2 3 ... 8
1  Unterforen / capella / Re:Capella8: Druck&PDF: Vermeidung von hinterlegten, seitengroßen Rechtecken? am: 10. Dezember 2017, 00:10:48
Hallo Paul, danke Dir nochmals für Deine Ausdauer und Geduld.
Ja, die Bounding Box berechnen war schon bei .EPS Dateien kompliziert und fehlerhaft.
Bis vor kurzem wurde mit GSView/Ghostscript z.B. die geschweifte Systemklammer falsch berücksichtigt, weil das ein Element aus Bézier-Kurven ist, wo "Stützpunkte" ausserhalb des Objektes liegen. Das ist aber inzwischen behoben.

Ich war/bin auf der Suche nach Python-Libraries/Modulen, die eine Bounding-Box berechnen können. Aber da ich Python-Anfänger bin, dauert das alles einiges länger.
https://pypi.python.org/pypi/svgpathtools soll angeblich Bounding-Boxen berechnen können.
Zitat: "find a **bounding box** for a path or segment"
Ich befürchte allerdings, dass es vermutlich nicht für Fonts, Rechtecke, Kreise oder andere Objekte funktioniert. Aber wer weiss, vielleicht doch? Ich schau's mir mal an.
2  Unterforen / capella / Re:Capella8: Druck&PDF: Vermeidung von hinterlegten, seitengroßen Rechtecken? am: 09. Dezember 2017, 23:35:28
ok...
Code:
x = subprocess.check_output('inkscape -S "%s"' % (fname) )
geht nicht.  Ratlos

Code:
x = subprocess.check_output('inkscape.exe -S "%s"' % (fname) )
geht nicht.  Ratlos

Code:
x = subprocess.check_output('inkscape.com -S "%s"' % (fname) )
scheint zu gehen.  Freundensprung
Aber frag mich nicht warum. Das ist mal wieder Windoofs. Blöd
Das SVG sieht nun endlich so aus wie ich mir das von Capella von Anfang an gewünscht hätte. Dass man mit Hilfe von Deinem Skript ein Verzeichnis Batch-Korrigieren kann ist schon mal eine Erleichterung. Noch schöner wäre es natürlich wenn man es gleich beim Exportieren so hinkriegen würde (am besten noch ohne Inkscape).
3  Unterforen / capella / Re:Capella8: Druck&PDF: Vermeidung von hinterlegten, seitengroßen Rechtecken? am: 09. Dezember 2017, 22:59:58
hmm, Du hast den Verdacht, das Leerzeichen im Pfad stören könnten... das gibt's immer wieder, aber %s durch "%s" ersetzen hilft nicht.
Der Inkscape Pfad ist bei mir in der PATH-Umgebungsvariablen, aber z.B. auch
Code:
   x = subprocess.check_output('inkscape -S "%s"' % (fname) )
hilft nicht.
4  Unterforen / capella / Re:Capella8: Druck&PDF: Vermeidung von hinterlegten, seitengroßen Rechtecken? am: 09. Dezember 2017, 22:24:12
Hallo Paul,
in der Konsole funktioniert bei mir "inkscape -S DoReMi_Cap8.02.svg" ganz normal und es spuckt mir alle Bounding Boxen aus. Die erste Zeile heisst bei mir
svg422,95.99999974810889,107.1082674354977,330.8598416515532,63.94495554087845
Und die graue Box ist herausgelöscht. Das heisst, das Skript funktioniert bis dahin.
Aber danach erhält es die Antwort von Inkscape offenbar nicht mehr...
Ich habe 3 Pythons auf der Platte: Python2.3 für Capella7, Python2.7 für Capella8 und Python3.6 für sonst... aber da sollte ja eigentlich nichts durcheinandergeraten, weil Capella8 ja Python2.7 aus dem eigenen Verzeichnis startet.
Habe Win7 und ebenfalls Inkscape 0.92.2 (5c3e80d, 2017-08-06).  Kopfkratzen
5  Unterforen / capella / Re:Capella8: Druck&PDF: Vermeidung von hinterlegten, seitengroßen Rechtecken? am: 09. Dezember 2017, 21:45:59
Hallo Paul,
auch mit SVG Export von Cap8.02 kommt dieser Fehler beim Skript... vielleicht liegt's an meinem System?
.capx und .svg Siehe Anhang (einfach Endung .png entfernen).
6  Unterforen / capella / Re:Capella8: Druck&PDF: Vermeidung von hinterlegten, seitengroßen Rechtecken? am: 09. Dezember 2017, 20:37:18
Hallo Paul,
vielen Dank für Deine Mühen. Was wäre Capella ohne Deine Skripts und die Skripts der anderen fleissigen Skriptschreiber?
Doch leider funktioniert's bei mir (noch) nicht...
Ich habe von Python noch zu wenig Ahnung, als dass ich sagen könnte woran das liegt.
Offenbar startet Python zwar Inkscape, aber bekommt keine Antwort.... wäre meine Vermutung...

7  Unterforen / capella / Re:Capella8: Druck&PDF: Vermeidung von hinterlegten, seitengroßen Rechtecken? am: 05. Dezember 2017, 22:54:51
@musikai, haha, Lachen Danke stimmt... keine Ahnung mehr, was ich alles rumprobiert hatte.
Und keine Ahnung warum Inkscape das so umständlich macht... die Inkscape Entwickler werden doch wohl einen Grund gehabt haben? Warum umständlich wenn es auch einfacher geht? Blöd
Gerne würde ich auch für das Berechnen der Bounding Box auf Inkscape verzichten, doch ich kenne noch keine reine Python-Routine, die die Gesamt-Bounding Box einer SVG-Datei berechnet, vielleicht wäre das auch noch schneller, als Inkscape jedesmal zu starten.
8  Unterforen / capella / Re:Capella8: Druck&PDF: Vermeidung von hinterlegten, seitengroßen Rechtecken? am: 05. Dezember 2017, 22:52:30
Hallo Paul,
Dein Vorschlag überzeugt mich nicht.
Nachteile:
- Inkscape GUI starten dauert "ewig"
- mühsame, zeitaufwändige Handarbeit mit Selektieren usw.
- Dir ist schon bewusst, dass Ctrl+C / Ctrl+V eine Pixelgrafik und keine Vektorgrafik in Word oder LibreOffice einfügt? Zumindest bis Word2013 kann sowieso gar kein SVG einbinden.*
- Die Markier-Selektier- und Kopier-Prozedur möchtest Du nicht bei jeder kleinen Korrektur in den Noten wiederholen.

* was man in MSWord allerdings offenbar als Vektor einbinden kann, ist die Noten in Inkscape mit Ctrl+C in die Zwischenablage kopieren und in MSWord per Einfügen | Inhalte einfügen | Bild (Erweiterte Metadatei). In LibreOffice heißt das GDI Metafile. Da ziehe ich aber immer noch eine Verlinkung zu einer SVG Datei auf der Platte vor.

Desweiteren binde mal die SVG-Datei mit dem komischen transparenten Rechteck in eine Homepage ein, oder noch einfacher,... ziehe die ursprüngliche SVG Datei mal in Deinen Browser. Da stört das Rechteck eben schon und Ctrl+C/Ctrl+V nützt Dir nicht viel. Da ist es besser wenn Du eine SVG-Datei hast, die die richtige Seitengröße und ViewBox hat.

Die Vorteile der "komplizierten" Prozedur oben sind:
- alles wird durch das Python-Skript und Inkscape Kommandozeilen erledigt, kein GUI, keine Handarbeit
- da Grafiken in LibreOffice nicht nur hineinkopiert sondern auch verlinkt werden können, muss man bei kleinen Änderungen an den Noten, nur die SVG-Datei aus Capella nochmals exportieren und beim Aktualisieren bzw. beim nächsten Öffnen der Textdatei ist die neue Version der SVG enthalten.
9  Unterforen / capella / Re:Capella8: Druck&PDF: Vermeidung von hinterlegten, seitengroßen Rechtecken? am: 05. Dezember 2017, 14:48:51
ja, da müsste ich Capella sogar noch dankbar sein Zwinker. Doch hätte ich ehrlich gesagt noch genügend andere Sachen, mit denen ich mir die Nächte um die Ohren schlagen könnte.
Eine Sache: Warum verschiebst du denn alle objekte und nicht einfach die viewbox?
Gute Frage. Ich hab das so gemacht, weil das Inkscape das so macht. Denn bei "Fit Page to Content" passiert genau das.
Ich dachte auch, man könnte einfach den Ausschnitt (ViewBox) auf der Seite verschieben. Doch das kommt nicht so raus wie Du Dir das vorstellst. Das skaliert und schiebt anders als man sich das vorstellt. Ich glaube da sind irgendwie die Einheiten px und mm und Offsets "schuld". Die Breite bzw. Höhe der Noten sind 87.54 mm bzw. 16.91 mm. Du kannst gerne mal mit der angehängten SVG-Datei spielen (Endung .png entfernen, da man hier keine SVG anhängen kann). Sag mir Bescheid wenn Du einen Weg gefunden hast, einfach nur die ViewBox zu verschieben. Und dann binde das SVG mal in LibreOffice ein.
Wenn es einfacher gehen sollte, bin ich auf jeden Fall gerne dafür zu haben.
10  Unterforen / capella / Re:Capella8: Druck&PDF: Vermeidung von hinterlegten, seitengroßen Rechtecken? am: 05. Dezember 2017, 01:32:49
Mit folgender Prozedur kann man die Capella8-SVG-Export-Dateien korrigieren.
Das gilt momentan für den Capella8.0.2-SVG-Export, der ein unnötiges, seitengroßes, transparentes Rechteck hinter den Noten anbringt. Aber wer weiss, was sich da bei den nächsten Updates noch ändert...
Für die sinnvolle Einbindung in eine Textverarbeitung muss das SVG auf den eigentlichen Inhalt zugeschnitten werden. Diese Bounding-Box kann das Vektorgrafikprogramm Inkscape berechnen (vielleicht gibt's auch noch andere Routinen oder Software dafür?).

In Kürze wäre die Prozedur folgendermaßen:
1. graues (transparentes) Rechteck entfernen
2. mit Hilfe von Inkscape Bounding Box berechnen
3. Seitengröße und ViewBox entsprechend anpassen
4. Translation hinzufügen um Objekte in den Sichtbereich zu verschieben

Es fällt noch auf, dass das Capella8-SVG viele leere(?) bzw. unnötige(?) Objekte zu enthalten scheint. Inkscape gibt in dem obigen DoReMi-Beispiel an, es sei eine Gruppe von 172 Objekten und nach dem Ungruppieren sind es nur noch 35 Objekte. Das Capella8-SVG ist daher mit 45 kB etwas "aufgeblasen", man könnte es auch als optimiertes SVG speichern, dann hat es nur noch 8 kB oder als komprimiertes SVGZ sind es noch 3 kB. Na, egal... halb so wild...

Nun also der Anfang des von Capella8.0.2 exportierten SVG-Codes des oben gezeigten DoReMi-Beispiels:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="210mm" height="297mm"
 viewBox="200 200 21000 29700"
 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"  version="1.2" baseProfile="tiny">
<title>capella 8 Notensatz</title>
<desc>DoReMi.capx Seite 1</desc>
<defs>
</defs>
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >

<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="Segoe UI" font-size="317.5" font-weight="400" font-style="normal"
>
</g>

<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="Segoe UI" font-size="317.5" font-weight="400" font-style="normal"
>
</g>

<g fill="#d8d8d8" fill-opacity="0" stroke="none" transform="matrix(1,0,0,1,0,0)"
font-family="Segoe UI" font-size="317.5" font-weight="400" font-style="normal"
>
<rect x="200" y="200" width="21000" height="29700"/>
</g>

<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="Segoe UI" font-size="317.5" font-weight="400" font-style="normal"
>
</g>

...

Mit Python (oder Perl) kann man z.B. recht einfach mit Hilfe von sog. "Regular Expressions" nach Textmustern suchen und diese ersetzen bzw. löschen.

Schritt 1: "graues", transparentes Rechteck entfernen:
Die folgenden Zeilen ersatzlos löschen:
Code:
<g fill="#d8d8d8" fill-opacity="0" stroke="none" transform="matrix(1,0,0,1,0,0)"
font-family="Segoe UI" font-size="317.5" font-weight="400" font-style="normal"
>
<rect x="200" y="200" width="21000" height="29700"/>
</g>
In Python sieht das in etwa so aus... (ohne Gewähr)
Code:
SVGCode = re.sub(r'<g fill="#d8d8d8".+?</g>', '', SVGCode, flags=re.DOTALL)

Schritt 2: mit Inkscape Bounding Box berechnen
Mittels Python wird Inkscape gestartet und die Kommandozeilenoption --query-all aufgerufen.
Code:
inkscape --query-all SVGFile.svg
Dazu muss natürlich Inkscape installiert sein, wobei es sinnvoll ist, den Pfad von inkscape.exe in der Windows PATH-Umgebungsvariable einzutragen.
In Python sieht das in etwa so aus... (ohne Gewähr)
Code:
BoundingBoxes = subprocess.check_output(["inkscape", "--query-all", svgfile])
Die Variable BoundingBoxes enthält nun die Angaben zu den Bounding Boxen aller Elemente der SVG-Datei. Die erste Zeile ist dabei die Gesamt-Bounding Box aller Objekte,
z.B. svg422,95.999,107.108,330.859,63.944
<ObjectName>,<x>,<y>,<width>,<height>

Schritt 3: Seitengröße und ViewBox anpassen:
Der erste Ausdruck <ObjectName> kann ignoriert werden. Wichtig sind die nachfolgenden vier durch Komma getrennten Zahlen. Das sind die x,y-Verschiebung und Breite und Höhe der Bounding Box in Einheiten px. Jetzt kommt noch eine Besonderheit von Inkscape in Kombination mit dem Capella8-SVG:
Diese Zahlen müssen jetzt noch mit 2540/96 = 26.458333 multipliziert werden.
Die Ergebnisse <x2>,<y2>,<width2>,<height2> = 2540.000,2833.906,8754.000,1691.877 müssen jetzt wie folgt eingesetzt werden:
Die alten Werte (hier DIN A4) bei width="...mm" und height="...mm" werden durch <width2>/100 und <height2>/100 ersetzt (Komma zwei Stellen nach links verschieben).
Bei viewBox="... ... ... ..." bleiben die ersten beiden Zahlen 200 gleich und der dritte bzw. vierte Wert wird durch <width2> und <height2> ersetzt
vorher:
Code:
<svg width="210mm" height="297mm"
 viewBox="200 200 21000 29700"
 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"  version="1.2" baseProfile="tiny">
 
nachher:
Code:
<svg width="87.54000mm" height="16.91877mm"
 viewBox="200 200 8754.000 1691.877"
 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"  version="1.2" baseProfile="tiny">
 
Schritt 4: Translation hinzufügen
Damit sich die Objekte auch korrekt auf der nun verkleinerte Seite befinden, müssen sie noch entsprechend verschoben werden.
Dazu fügt man eine Translation ein, und zwar nach dem <def></def> in der ersten Gruppe <g ... >, indem man das Negative der Werte <x2>,<y2> dort einträgt, transform="translate(-<x2>,-<y2>)"

Alt:
Code:
<defs>
</defs>
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
Neu:
Code:
<defs>
</defs>
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" transform="translate(-2540.000,-2833.906)">

SVG-Datei abspeichern. Puh! Fertig! Diese modifizierte SVG-Datei kann man nun einfach in LibreOffice Writer laden (meines Wissens kann MSWord keine SVG einbinden) und beliebig skalieren.
Ich hoffe, das war einigermaßen nachvollziehbar, so dass Paul vielleicht animiert ist, das in seinem SVGFix-Script zu implementieren? Zwinker.

Wenn ich ganz anspruchsvoll sein darf, dann gefällt mir der SVG-Export immer noch nicht 100%. Denn es sind vier Mausklicks/bewegungen nötig: Datei | Exportieren | Grafik... | SVG
Und dummerweise merkt sich Capella8 bis zum nächsten Mal nicht, dass als letztes ein SVG exportiert wurde, stattdessen stellt es immer wieder auf PNG zurück. Man muss SVG immer wieder von Neuem auswählen. Lästig!
Schön wäre ein Short-Key (Shift+Ctrl+Irgendwas), dann den SVG-Namen eingeben, fertig! Das wäre wirklich komfortabel. Bei meiner PostScript-Druck-Prozedur (die jetzt nicht mehr funktioniert Traurig ) war es Ctrl+P und Name eingeben und man erhielt ein PDF, EPS, gecropptes PDF und SVG in einem Aufwasch. Vielleicht kann der SVG-Export auch durch ein Skript angestossen werden, dann wäre es einfach Ctrl+R (Skript Wiederholen), ich vermute, dass das aber nicht geht, oder etwa doch?
11  Unterforen / capella / Re:Capella8: Druck&PDF: Vermeidung von hinterlegten, seitengroßen Rechtecken? am: 01. Dezember 2017, 21:05:01
Seit Version 8.0.2 kann man sie auch z.B. in OpenOffice Writer über einem vorhandenen Hintergrund darstellen.
Wenn Sie uns erklären, mit welchem Verfahren und welcher Software Sie croppen wollen, können wir da vielleicht noch was erreichen.
Es tut mir leid, ich weiss langsam bald nicht mehr wie ich es noch erklären soll, damit es allgemein verständlich wird. Ratlos

Der einzige Wunsch an Capella8 war, die Rechtecke im Hintergrund wegzulassen. Welchen Zweck haben die überhaupt?

Vielleicht wird's mit dem PNG-Export verständlicher oder anschaulicher?
PNG als Pixelgrafik bietet auch die Möglichkeit eines transparenten Hintergrunds.
Wenn ich aus Capella8 einen PNG-Export mache, erhalte ich das erste Bild (oben), mit seitengroßem, weißem Hintergrund. Wie will ich so ein Bild vernünftig in eine Textverabeitung einbinden, ohne es vorher noch von Hand beschneiden zu müssen?
Das zweite Bild (unten) ist so wie ich mir das vorstelle: nur der wirklich benötigte Platz mit transparentem Hintergrund.
So, und nun das Ganze einfach halt im SVG-Format. Was ist daran nicht verständlich?

Die Verschlimmbesserung vom Capella8.0.2 Update macht nun beim SVG-Export zwar einen transparenten Hintergrund aber der Platzbedarf ist immer noch die ganze Seite. Das alles hatte ich mit meinem PS-Druckprozess in Capella7 umgehen können, aber seit Capella8 sind die Hintergrundseiten dahinter und seit Capella8.0.2 ist der PS-Druck komplett "vermurkst".

Original Capella8-PNG-Export


Nachbearbeitung eines Capella8-SVG-Exports mit Inkscape zugeschnitten und gespeichert als PNG mit transparentem Hintergrund.

12  Unterforen / capella / Re:Capella8: Druck&PDF: Vermeidung von hinterlegten, seitengroßen Rechtecken? am: 30. November 2017, 07:34:15
Vielleicht wird es hiermit klarer...?
Um Noten auf ihren tatsächlich benötigten Platzbedarf zu limitieren (croppen) ist es ein entscheidender Unterschied ob ich für den Druck oder Export
a) definiere, die Seite (PageSize, ViewBox, MediaSize oder wie auch immer man es nennt) ist A4 297x210mm gross
ODER
b) ein 297x210mm großes, weißes oder transparentes Rechteck dahinter male...
13  Unterforen / capella / Re:update erschienen am: 29. November 2017, 23:14:37
Mit dem heutigen Bugfix-Release sollten einige Fehler behoben sein, darunter folgende im Forum genannte:
...
- Probleme beim Drucken / PDF-Export
arrgh.... wenn damit "mein" Druckproblem gemeint sein sollte... dann ist es jetzt noch schlimmer als vorher.  Abgelehnt
Mein Kommentar dazu hier:
http://notensatz.forumprofi.de/index.php?topic=1699.msg11426#msg11426
14  Unterforen / capella / Re:Capella8: Druck&PDF: Vermeidung von hinterlegten, seitengroßen Rechtecken? am: 29. November 2017, 23:11:35
Offenbar hat es für Capella8 ein Update gegeben.
http://notensatz.forumprofi.de/index.php?topic=1710.0
Dadurch wird "mein" Druckproblem noch schlimmer  Traurig

Beim Druck in eine Postscript-Datei:
- die "gedruckte" ("leere") PS-Datei ist jetzt neu 1'940 kB anstatt 28 kB groß.
- im daraus mit Inkscape generierten SVG sieht man warum: es sind 12 "unsichtbare" Quadrate/Rechtecke auf der Seite verteilt und es sieht so aus als sind das Pixelgrafiken. Inkscape sagt: "Image 2048x2048 px embedded" (im Bild unten als Umriss sichtbar gemacht).
- diese Quadrate/Rechtecke kann man auch im daraus generierten PDF "selektieren"

Der original-Capella8-PDF-Ganzseiten-Export scheint davon nicht betroffen.

Beim Capella8-SVG-Export:
Das weiße Rechteck ist offenbar weg und das graue Rechteck jetzt transparent. Aber dennoch ist damit ein Rechteck vorhanden, was so gross wie die Seite ist. Und damit kann man die Noten immer noch nicht auf den eigentlichen Inhalt croppen...

hmmm...
15  Unterforen / capella / Re:Capella8: Druck&PDF: Vermeidung von hinterlegten, seitengroßen Rechtecken? am: 27. November 2017, 19:34:16
@bassklampfe, hmmm, hast völlig recht...
Das war ein Fehlschluss meinerseits, basierend darauf, dass ich in aus Capella heraus generierten .ps Dateien bislang noch nie Floatingpoint-Zahlen gesehen habe. Wenn ich z.B. eine Capella8-SVG-Export Datei nehme, sie in Inkscape lade und als .ps abspeichere, bekomme ich darinnen jedenfalls auch Floatingpoint-Zahlen.

Wenn man bei dem obigen Capella7 Beispiel ganz pingelig ist, dann sind zwar die Linien per Definition gleich dick, aber die Abstände der Linien sind doch nicht ganz genau gleich. Die sind nämlich 42 oder 43 in (was-auch-immer)-.ps-Einheiten. Aber eben wiederum alles ganzzahlig.
Und im Capella8-SVG-Druck Beispiel von oben sind die Linien in Inkscape zwischen 0.317 px und 0.479 px breit, das sind 50%(!) dicker, das sieht man nun also wirklich mit bloßem Auge. Lupe

Ich weiss nicht in welcher Sprache Capella programmiert ist, aber manche Programmiersprachen geben bei a=5, b=3 bei der Division das Ergebnis a/b = 2 aus (Integer-Division). Sollte das etwa ein Programmierfehler bzw. eine Nachlässigkeit in Capella sein, was es an den Drucker schickt... ? Knüppel Oder macht der verwendete Postscript-Drucker Ganzzahlen daraus? Fragen über Fragen...  Kopfkratzen
Seiten: [1] 2 3 ... 8