• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

SVG-Datei durch HTML-Formular anpassen

HanZ

Aktiver NGBler

Registriert
16 Juli 2013
Beiträge
1.057
Hallo zusammen,

ich habe hier eine SVG-Datei erstellt, die ich gerne je nach Eingabe eines Formulars auf einer Webseite verändert haben möchte und dann idealerweise als PDF oder PNG exportiert und dieses dem Nutzer zum Download anbieten möchte.
Der zu ändernde Bereich sieht wie folgt aus ("000" soll geändert werden):
[src=html4strict]<text
transform="matrix(1.3562 0 0 1 209.8261 165.4809)"
class="st8 st11"
id="text1064">000</text>[/src]


Aktuell habe ich auch bereits ein Python-Skript, dass die Angaben per sys.argv[] ausliest und via BeatifulSoup entsprechend einfügt. Das funktioniert auch alles. Der Plan war jetzt das Python-Skript via PHP aufzurufen und dann die SVG/PDF/PNG zum Download anzubieten.
Python kenne ich recht gut, PHP eher weniger, daher der Schritt das alles mit dem Python-Skript zu erledigen.

Wie man ein Python-Skript per PHP aufruft wird ja im Netz zur genüge erklärt; leider klappt das bei mir nicht: Der Quelltext ist leer.

Aktuell habe ich es damit ausprobiert:

[src=php]$command = escapeshellcmd('python svg.py $GET_PARAM0 $GET_PARAM1 usw.');
$output = shell_exec($command);
echo $output;[/src]

Aktuell führt das Python-Skript am Ende ein print() aus mit dem Inhalt der SVG-Datei; da hatte ich gedacht, dass das von PHP dann übernommen wird und ausgegeben wird. Hier wäre dann generell noch die Frage, wie ich das am besten übergebe?

Oder fabriziere ich hier gerade Murks und ich sollte das am besten mit PHP alles machen?

Die SVG enthält halt noch 2 Schriftarten, die in dieser Optik auch genau so benötigt werden. Daher der Plan des Exportes als PDF oder PNG.

LG
HanZ
 

Rakorium-M

NGBler

Registriert
14 Juli 2013
Beiträge
413
Versuch mal:
[src=php]passthru('python svg.py '.escapeshellarg($_GET[...]).' '.escapeshellarg($_GET[...]));[/src]

Falls das nicht funktioniert, schau mal ob du damit eine Fehlermeldung im HTML-Code der Seite finden kannst:
[src=php]passthru('python svg.py '.escapeshellarg($_GET[...]).' '.escapeshellarg($_GET[...]) . ' 2>&1');[/src]

Wenn der Code aber wirklich so simpel ist wie im Beispiel kann man das auch schnell in PHP machen:
Das Template in [kw]xyz.svg.php[/kw] umbenennen, statt [kw]000[/kw] sowas wie [kw]<?= htmlentities($_GET['...']) ?>[/kw] schreiben, und am Ende entweder direkt aus dem Browser aufrufen oder mit [kw]<?php include('xyz.svg.php') ?>[/kw] inline einbinden.

Um svg in png zu konvertieren könnte man bspw. ImageMagick nutzen - sprich die Ausgabe des Python-Scripts einmal durch [kw]convert[/kw] pipen.
Wenn man direkt PHP nutzt muss man evtl mit der ImageMagick-Erweiterung von PHP spielen (von StackOverflow):
[src=php]$im = new Imagick();
$im->readImageBlob($svg);

/*png settings*/
$im->setImageFormat("png24");
$im->resizeImage(720, 445, imagick::FILTER_LANCZOS, 1); /*Optional, if you need to resize*/

// Entweder speichern
$im->writeImage('/path/to/colored/us-map.png');/*(or .jpg)*/
// Oder direkt ausgeben
header('Content-Type: image/'.$im->getImageFormat());
echo $im;

$im->clear();
$im->destroy();[/src]
 

HanZ

Aktiver NGBler

Registriert
16 Juli 2013
Beiträge
1.057
  • Thread Starter Thread Starter
  • #3
@Rakorium-M: Danke für deine Antwort. Ich merk schon, dass PHP nicht mein Fachgebiet ist :D Mit 2>&1 konnte ich einige Fehler beseitigen wie falsche Dateirechte und so weiter. Jetzt geht das mit der Ausgabe.
Der Tipp mit der .svg.php klingt aber sehr spannend, ich denke damit werde ich mich eher noch beschäftigen, sieht nach einer schönen Lösung aus.

Wenn das dann alles klappt, beschäftige ich mit ImageMagick :)
 

HanZ

Aktiver NGBler

Registriert
16 Juli 2013
Beiträge
1.057
  • Thread Starter Thread Starter
  • #4
So, wollte mich jetzt mit Imagick beschäftigen. Ich stoße jetzt aber auf das Problem, dass das SVG immer ausgegeben wird. Das Python-Skript printed das SVG auf die Konsole. In der PHP-Datei steht am Ende lediglich folgendes:

[src=php]<?php
putenv("PYTHONIOENCODING=utf-8");
$command = passthru('python3 svg_to_pdf.py ...');
$svg = shell_exec($command);

//generate png from svg and save to forum
$im = new Imagick();
$im->readImageBlob("output.svg");

/*png settings*/
$im->setImageFormat("png24");
$im->resizeImage(720, 445, imagick::FILTER_LANCZOS, 1); /*Optional, if you need to resize*/


$im->writeImage('test.png');/*(or .jpg)*/

echo '<img src="data:image/jpg;base64,' . base64_encode($im) . '" />';

$im->clear();
$im->destroy();
?>[/src]

Hier ist also gar kein [src=php]echo $svg;[/src] dabei. Der print() in Python reicht scheinbar aus, dass PHP das direkt mit ausgibt. Wie umgehe ich das?

Vorher weiß ich ja gar nicht, ob das mit dem Bild immer klappt, da jedesmal das SVG angezeigt wird.

LG
HanZ

/edit: Aktuell bietet er mir zwar ein .png zum Download an, aber das hat den Inhalt des .svg. Also irgendwie will er zwanghaft dieses SVG übergeben als Quelltext.
 
Zuletzt bearbeitet:

Rakorium-M

NGBler

Registriert
14 Juli 2013
Beiträge
413
passthru gibt direkt aus. Nur shell_exec sollte reichen.
Ansonsten liest du dein svg in $svg, konvertierst danach aber output.svg.
 

HanZ

Aktiver NGBler

Registriert
16 Juli 2013
Beiträge
1.057
  • Thread Starter Thread Starter
  • #6
@Rakorium-M: Danke für den Hinweis mit passthru. Das klappt jetzt.

Das mit dem output.svg war bewusst so, die Datei hat existiert. Ich denke aber, dass ich es mit Imagick leider nicht umsetzen kann, da dessen Installation auf meiner Synology wohl nicht möglich/einfach ist. Ich werde mir also wohl erstmal andere Wege suchen. Habe noch das hier gefunden, damit werd ich mal rumspielen:
https://jsfiddle.net/user3839189/hutvL4ks/1/

--- [2020-08-22 18:06 CEST] Automatisch zusammengeführter Beitrag ---

So, es klappt jetzt alles, bis auf eine Sache: Ich würde gerne nach Abschicken des Formulars das Bild direkt zum Download anbieten und nicht in einer neuen Seite das Bild einblenden. Derzeit wird es als SVG in einem Javascript-Code zu einem Canvas umgewandelt und als Bild im Browser dargestellt.

Das ist der Javascript-Code im Browser. Wenn ich das hinzufüge:
[src=php]header("Content-Disposition: attachment; filename=image.png");[/src]

dann lädt er mir leider den Webseiteninhalt als .png-Datei runter.

[src=javascript]<script type="text/javascript">
var svgData = `<?php echo $svg ?>`;

var canvas = document.createElement("canvas");
canvas.width = 800;
canvas.height = 800;
var ctx = canvas.getContext("2d");

//display image
var img = document.createElement( "img" );
img.setAttribute("src", "data:image/svg+xml;base64," + btoa(svgData));


img.onload = function() {
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);

//image link
console.log(canvas.toDataURL("image/png"));


//open image (not working in chrome)
window.location.href=canvas.toDataURL("image/png");
};
document.body.appendChild(canvas);
</script>[/src]
 
Zuletzt bearbeitet:

HanZ

Aktiver NGBler

Registriert
16 Juli 2013
Beiträge
1.057
  • Thread Starter Thread Starter
  • #7
Keiner eine Idee, wie ich das Canvas direkt als Bild herunterladen lassen kann? :/
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.562
So als Idee, warum verweist du nicht auf die gerenderte Image Datei:

[src=php]$im->writeImage('test.png');/*(or .jpg)*/

# Und dann so etwas wie? :
header("Location: test.png");

# bzw. einen korrekten Header liefern das es sich um ein Bild handelt was zurückgegeben wird
$im = file_get_contents('test.png');
header('content-type: image/png');
echo $im;
[/src]

Quelle:
https://www.linuxquestions.org/ques...e-html-img-src-tag-but-the-image-data-554778/

Oder willst du das Bild erst runterladen lassen, nachdem es auf dem Canvas gerendert und sichtbar ist?
 
Zuletzt bearbeitet:

Rakorium-M

NGBler

Registriert
14 Juli 2013
Beiträge
413
@theSplit: Er muss das Bild erst von svg nach png umwandeln, dazu fehlt bei ihm aber die Imagemagick-Php-Erweiterung.

@Hanz: check mal ob du das "normale" ImageMagick installiert bekommst, das scheint laut Google nicht schwer zu sein. Wenn du "convert" ausführen kannst könnte man damit was bauen.
Falls du bei Javascript bleiben willst könnte man versuchen den Inhalt des Canvas in einen "Blob" zu bekommen, die lassen sich dem User als Download präsentieren. Allerdings meine ich mich zuerinnern, dass "Canvas auslesen" relativ unbeliebt war, seit mal Leute damit eine Tracking-Methode gebaut haben.
 

HanZ

Aktiver NGBler

Registriert
16 Juli 2013
Beiträge
1.057
  • Thread Starter Thread Starter
  • #10
@theSplit: Wie Rakorium schon schreibt, habe ich leider kein ImageMagick für PHP.

Genau genommen wäre es mir sogar am liebsten, wenn das Canvas nicht angezeigt wird, dann muss ich auch nicht zwangsläufig das SVG veröffentlichen.

@Rakorium: Im paketzentrum von der Synology gibt es eine ImageMagick Erweiterung, die glaube ich für (nur) für die Konsole ist. Dort kann ich auch convert ausführen.

Das Problem ist jedoch, dass glaube alle Bibliotheken o.ä. Probleme damit haben, eingebettete (@font-face {}) Schriftarten mitzukonvertieren. Das hat bis jetzt nur über Canvas funktioniert.
Ich bin eigentlich offen, wie das funktioniert. Am liebsten wäre mir ein PDF, damit auch die Größe des Bildes direkt richtig ausgedruckt werden kann; aber eben auch hier das Problem, dass die eingebettete Schriftart erhalten bleiben muss.
 
Zuletzt bearbeitet:

Rakorium-M

NGBler

Registriert
14 Juli 2013
Beiträge
413
@HanZ: Kann sein dass du die in der svg vorhandenen Schriftarten auf dem Gerät installieren musst. Ich wüsste nicht dass Schriften in SVGs eingebettet werden können.
[kw]convert -list font[/kw] zeigt dir welche Fonts bekannt sind (und auch wo die liegen, evtl kannst du die passenden Fonts googeln und in den Ordner schieben).
 

HanZ

Aktiver NGBler

Registriert
16 Juli 2013
Beiträge
1.057
  • Thread Starter Thread Starter
  • #13
@saddy: Im Artikel:
(Updated) Read at the end of article. After many tests, I was unable to install the missing imagick extension.

@saddy: Da kommt leider nur folgende Fehlermeldung:
Code:
"Fontconfig error: Cannot load default config file
convert: UnableToOpenConfigureFile `type.xml' @ warning/configure.c/GetConfigureOptions/677."

Ich wüsste nicht dass Schriften in SVGs eingebettet werden können.
Erstaunlicherweise können das die meisten Softwares nicht (Inkscape auch nicht), im Browser geht es aber.
 

Rakorium-M

NGBler

Registriert
14 Juli 2013
Beiträge
413
Du generierst das svg selber, oder? Falls das nicht zu privat ist, kannst du mal ein (evtl gekürztes) Beispiel posten?
 

HanZ

Aktiver NGBler

Registriert
16 Juli 2013
Beiträge
1.057
  • Thread Starter Thread Starter
  • #15
@Rakorium-M: Ich habe dir die Webseite per PN geschickt.

Für alle anderen, hier das SVG:

[src=xml]<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="ausstattungsaufkleber"
viewBox="0 0 243.78 238.11"
style="enable-background:new 0 0 243.78 238.11;"
xml:space="preserve"
height="84mm"
width="86mm">
<defs
id="defs3">
<style
type="text/css"
id="style2">
.st0{fill:#FFFFFF;}
.st1{font-family:TEXT;}
.st2{font-size:7.841px;}
.st3{font-size:8.307px;}
.st4{font-size:7.8304px;}
.st5{font-size:8.3534px;}
.st6{font-size:8.5877px;}
.st7{font-size:8.1725px;}
.st8{font-family:DOT;}
.st9{font-size:16.7099px;}
.st10{font-size:16.2547px;}
.st11{font-size:8px;}
@font-face {
font-family: DOT;
src: url(hier die schriftart in base64, ist zu lange für den beitrag)
}
</style>
</defs>

<rect
rx="3mm"
ry="3mm"
width="86mm"
height="84mm"
style="fill:#fff;stroke:#000000;stroke-opacity:1;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none"
id="rect1"
x="0"
y="0" />

<text
transform="scale(0.80026889,1.24958)"
class="st1 st2"
id="text101"
x="7.6186576"
y="24.725174"
style="font-size:8.25484085px;font-family:TEXT;stroke-width:1.05277908">FAHRZG. - IDENT-NR.</text>







<text
transform="scale(0.78326421,1.2767084)"
class="st1 st2"
id="text102"
x="7.8114839"
y="32.952709"
style="font-size:8.0794363px;font-family:TEXT;stroke-width:1.03040886">VEHICLE - IDENT - NO.</text>







<text
transform="scale(0.78114919,1.2801652)"
class="st1 st3"
id="text103"
x="9.2828522"
y="50.002277"
style="font-size:8.53649426px;font-family:TEXT;stroke-width:1.02762651">TYP / TYPE</text>







<text
transform="scale(0.79936933,1.2509862)"
class="st1 st4"
id="text104"
x="9.7211933"
y="114.98202"
style="font-size:8.2344141px;font-family:TEXT;stroke-width:1.05159557">MOTORKB. / GETR. KB.</text>







<text
transform="matrix(0.76441451,3.658034e-4,-5.53567e-4,1.3081905,0,0)"
class="st1 st5"
id="text105"
x="10.195369"
y="118.57578"
style="font-size:8.40027714px;font-family:TEXT;stroke-width:1.00561178">ENG.CODE / TRANS. CODE</text>







<text
transform="matrix(0.76210748,3.6876484e-4,-5.4915671e-4,1.3121506,0,0)"
class="st1 st6"
id="text106"
x="10.711925"
y="130.39525"
style="font-size:8.609828px;font-family:TEXT;stroke-width:1.00257671">LACKNR. / INNENAUSST.</text>







<text
transform="matrix(0.79346531,3.8180488e-4,-5.3039124e-4,1.2602943,0,0)"
class="st1 st7"
id="text107"
x="10.29211"
y="144.8502"
style="font-size:8.5306921px;font-family:TEXT;stroke-width:1.04382896">PAINT NO. / INTERIOR</text>







<text
transform="matrix(0.78136832,3.8845489e-4,-5.2107012e-4,1.2798059,0,0)"
class="st1 st7"
id="text108"
x="10.986253"
y="157.32935"
style="font-size:8.40063381px;font-family:TEXT;stroke-width:1.027915">M. - AUSST. / OPTIONS</text>






<text
transform="scale(0.78905392,1.2673405)"
class="st8 st9"
id="text201"
x="96.780899"
y="18.054523"
style="font-size:17.34529877px;font-family:DOT;stroke-width:1.03802538">0000</text>






<text
transform="scale(0.83422685,1.1987147)"
class="st8 st9"
id="text202"
x="154.55653"
y="19.206161"
style="font-size:18.33831024px;font-family:DOT;stroke-width:1.09745181">00-0-0000</text>






<text
transform="scale(0.83422685,1.1987147)"
class="st8 st9"
id="text203"
x="278.2692"
y="18.976952"
style="font-size:18.33831024px;font-family:DOT;stroke-width:1.09745181">000</text>





<text
transform="scale(1.0354191,0.96579249)"
class="st8 st9"
id="text204"
x="256.72617"
y="22.755833"
style="font-size:12.89135551px;font-family:DOT;stroke-width:0.77148002">0</text>





<text
transform="scale(0.77923744,1.2833059)"
class="st8 st9"
id="text205"
x="391.63577"
y="17.684277"
style="font-size:17.12951088px;font-family:DOT;text-align:end;text-anchor:end;stroke-width:1.02511144">000</text>





<text
transform="scale(1.1423266,0.87540639)"
class="st8 st11"
id="text206"
x="111.68889"
y="51.709427"
style="font-size:12.02213478px;font-family:DOT;stroke-width:1.50276685">WV2ZZZ</text>





<text
transform="scale(0.83413821,1.1988421)"
class="st8 st10"
id="text207"
x="220.2144"
y="37.855377"
style="font-size:17.34755898px;font-family:DOT;stroke-width:1.06723356">24</text>





<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text208"
x="181.49957"
y="52.683979"
style="font-size:12.25612354px;font-family:DOT;stroke-width:1.53201544">Z</text>





<text
transform="scale(0.79763421,1.2537075)"
class="st8 st10"
id="text209"
x="288.41241"
y="36.183838"
style="font-size:17.05626869px;font-family:DOT;stroke-width:1.04931307">AH000000</text>





<text
transform="scale(0.81849793,1.2217502)"
class="st8 st10"
id="text210"
x="155.91304"
y="59.75148"
style="font-size:17.50241089px;font-family:DOT;stroke-width:1.07675993">247 000</text>





<text
transform="scale(0.81135691,1.2325032)"
class="st8 st9"
id="text211"
x="132.11752"
y="124.66405"
style="font-size:17.8355732px;font-family:DOT;stroke-width:1.06736565">AA</text>





<text
transform="scale(0.79074205,1.2646349)"
class="st8 st9"
id="text212"
x="384.65472"
y="120.84859"
style="font-size:17.38241005px;font-family:DOT;text-anchor:end;stroke-width:1.04024625">AAA</text>






<text
transform="scale(0.79041087,1.2651648)"
class="st8 st9"
id="text213"
x="135.54445"
y="143.18431"
style="font-size:17.37512779px;font-family:DOT;stroke-width:1.03981054">LAAA</text>






<text
transform="scale(0.77923744,1.2833059)"
class="st8 st9"
id="text214"
x="390.21225"
y="139.83549"
style="font-size:17.12951088px;font-family:DOT;text-anchor:end;stroke-width:1.02511144">AA</text>






<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text220"
x="76.667679"
y="233.88994"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text221"
x="107.62225"
y="233.88994"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text222"
x="140.11166"
y="233.88994"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text223"
x="171.26178"
y="233.88994"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text224"
x="203.30907"
y="233.88994"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text225"
x="235.35645"
y="233.88994"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text226"
x="76.667679"
y="251.17522"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text227"
x="107.16678"
y="251.17474"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text228"
x="139.58278"
y="251.17522"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text229"
x="171.26178"
y="251.17522"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text230"
x="203.30917"
y="251.17566"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text231"
x="235.35645"
y="251.17522"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>






<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text232"
x="76.667679"
y="268.46048"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text233"
x="107.62225"
y="268.46048"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text234"
x="140.11166"
y="268.46048"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text235"
x="171.26178"
y="268.46048"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text236"
x="203.30907"
y="268.46048"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text237"
x="235.35645"
y="268.46048"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>






<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text238"
x="76.667679"
y="285.74573"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text239"
x="107.62225"
y="285.74573"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text240"
x="140.11166"
y="285.74573"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text241"
x="171.26178"
y="285.74573"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text242"
x="203.30907"
y="285.74573"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>







<text
transform="scale(1.16456,0.85869341)"
class="st8 st11"
id="text243"
x="235.35645"
y="285.74573"
style="font-size:12.2561245px;font-family:DOT;stroke-width:1.53201556">000</text>



</svg>[/src]
 

HanZ

Aktiver NGBler

Registriert
16 Juli 2013
Beiträge
1.057
  • Thread Starter Thread Starter
  • #17
Zumindest bei Firefox geht das zumindest so, dass nur noch das Bild angezeigt wird. Chrome meckert hier rum:
Code:
action.php:103 Not allowed to navigate top frame to data URL: data:image/png;base64,

Wenn sonst keiner eine Idee hat, bleibt wohl nichts anderes übrig, als dass das Bild lediglich angezeigt wird.
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.562
Wenn das nicht funktioniert, kannst du dein Formular auch dynamisch das SVG auf der selben Seite generieren lassen und dann gleich den Download Link bzw. das Bild mittels [kw]toDataURL[/kw] erstellen lassen. Das spart einmal das wechseln der Seite und wirkt dem "Seitenwechsel mit Image only" entgegen - wirkt also etwas eleganter.

Zur Referenz: https://developer.mozilla.org/en-US...s#Example_Using_object_URLs_to_display_images
 

HanZ

Aktiver NGBler

Registriert
16 Juli 2013
Beiträge
1.057
  • Thread Starter Thread Starter
  • #19
Ich denke ich werde es einfach so umsetzen, dass ich noch dazuschreiben, dass man es runterladen muss. Dann kann ich da direkt auch erwähnen, in welchen Maßen es ausgedruckt werden muss.
Komplizierter als ich dachte. Aber immerhin habe ich es jetzt umgesetzt :)

Danke an alle für die Hilfe!
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.562
Eine Sache noch, du kannst einen Stylesheet für "Print" (Druck) anlegen: https://wiki.selfhtml.org/wiki/CSS/Tutorials/Print-CSS

Vorteil ist, wenn man auf "Drucken" klickt, wird der Stylesheet hergenommen.
Damit kannst du also für den Druck entsprechend mit CSS anzeigen/verstecken und optimale Größen adaptieren.
 
Oben