NEWS
[GELÖST] Druckbare Datei aus Liste erzeugen? 🤯
-
@oliverio said in Druckbare Datei aus Liste erzeugen? 🤯:
Du hast leider nix geschrieben was du da genau einsetzt.
Nur simplen Text nichts außergewöhnliches, Text html aber richtig formatiert.
Werde eine A4 Seite bauen, und den Text definieren, als html file speichern umwandeln und an den Drucker senden, ob direkt oder die Datei in einer Mail anhefte, werde ich dann nochmal schauen.
So der Plan erstmalIch denke da wird’s keine Probleme geben, und wenn wird’s Lösungen geben, hauptsächlich interessiert mich, wo ich das Tool mit den richtigen rechten installieren muss, damit ich später aus dem javascript Adapter mit exec Befehlen arbeiten kann.
Dann kommt noch hinzu, wie ich aus einem html Code ein abgespeichertes html file erzeuge, welches ich wohl benötige um damit weiter arbeiten zu können.
Ich hab leider noch nicht viel Zeit gehabt mich da einzulesen aber ich schätze ich werde dann versuchen die Dateien bei jeden Vorgang zu überschreiben, dann spare ich mir eventuell das nachträgliche löschen… -
@newpicsel
Mit „was du da einsetzt“
Meinte ich- wie versendest du jetzt schon die email (JavaScript/blockly zeigen)
- wie empfängst du die email (Software benennen)
- wie sorgst du für automatisierten Druck (Software nennen oder Skript/Code) zeigen.
-
Sorry, missverstanden.
Ich benutze den Email Adapter um die email zu senden.
Der Drucker selber kann per Webdienst via (eigene) Emailadresse angesteuert werden, hier kann entweder direkter Inhalt der email gedruckt werden oder eben Anhänge gedruckt werden, bei meinem Test habe ich meine zu druckende Liste direkt in die Mail geschrieben, was auch super funktioniert, nur jeder Versuch den Inhalt der Mail zu formatieren scheitert, html sieht in der angekommen Mail sehr schick aus, wird vom Drucker aber nicht anerkannt und somit nichts gedruckt (zumindest sobald ein Zeilenumbruch erzeugt wird (br), definiere ich nur die Position "body", wird es gedruckt), versuche ich den Text schon im Blockly zu formatieren (erstelle Text aus) und verwende z.B. (/n), wird der Text ohne Bruch in eine Zeile gesetzt.Z.B. hier ein html Versuch: (geht an zwei Adressen, weil ich die Mail des Druckers nie tatsächlich sehe)
Ich vermute also, ich komme nicht drum rum erst ein html.file anzulegen, dies in pdf umzuwandeln und dieses dann an den Drucker zu senden.
(Ob als email oder per "lp" exec Befehl, ist mir vorerst fast egal) -
Ps hab hier im Forum ein Thema gefunden, wo auch die Alexa Listen für die Darstellung in der Vis in ein html file geschrieben werden, damit könnte man schon arbeiten und auch ein Nutzer benutzt die wkhtmltopdf Funktion zum umwandeln und anschließenden drucken!
Eine Darstellung in der Vis benötigte ich zwar nicht zwingend, aber damit könnte ich eventuell arbeiten
Für mich wäre dann dennoch interessant wie ich das Tool (wkhtmltopdf) wirklich richtig installiere, möchte hier nichts falsch machen!
Außerdem wäre interessant, wenn ich den Pfad und Namen der zu erstellenden .pdf immer beibehalte, sich dieses file automatisch überschreiben würde oder es immer gelöscht werden müsste, damit ich das System nicht mit Datenleichen zu Müll?Danke für die Hilfe
-
ok, danke.
also der drucker selbst kann html emails ausdrucken, bei deinen funktioniert es aber nicht.
schau mal ob du bei dem blockly (kenn ich leider nicht so gut) im befehlsblock für den email-adapter noch soetwas wie einen MIME-Type oder content-type angeben kannst, ob du da "text/html" angeben kannst.
Anhand dessen können Mail-clients interpretieren, was da für ein Inhalt ankommt und für den Drucker gilt dann das er den Text richtig als html interpretiert, -
Richtig, dies ist möglich und auch Voraussetzung um nicht einfach den html Code als Text drucken zu lassen, dies funktioniert auch soweit.
Es kommt wie gesagt erst zu Problemen wenn der html Code einen vorgegebenen Zeilenumbruch (br) beinhaltet.
Warum dies so ist, kann ich mir nicht erklären, ich vermute einfach dass die html Kompatibilität auf das einfachste begrenzt ist (lediglich Body und Textstyle darf definiert sein) irgendwie Strange aber eventuell mache ich einfach etwas falschDeshalb konzentriere ich mich darauf, ein anständiges html file zu erzeugen, welches sich in pdf umwandeln lässt.
Soweit sieht es auch ganz gut aus, werde morgen die ersten Tests starten. -
dürfte eigentlich nicht problematisch sein
br gehört seit anbeginn der zeiten zum standard.
kannst du mal das komplette erzeugte html zeigen.
evtl. ist da ja noch ein problem drin.
evtl will der drucker ja auch noch ein Doctype<!DOCTYPE html>
vor dem html-Tag
-
DOCTYPE hatte ich auch schon hinzugefügt leider ohne erfolg,
<!DOCTYPE html><html><body style="width: 21cm; height: 29.7cm; margin: 30mm 45mm 30mm 45mm; font-family: Verdana; font-size: 14.0px;">• Zucker<br>• Mehl</body></html>
Vielleicht übersehe ich wirklich etwas, aber ohne <br> wird es gedruckt, abstände und schrift werden übernommen...
-
nur mal zum probieren - vielleicht voll daneben - aber mach mal das </br> hinter mehl - vielleicht braucht es ein schliessendes tag
-
Gute Idee, bin ich nicht drauf gekommen!
Leider ohne Erfolg, was aber merkwürdig ist, wenn ich mir den Quelltext der empfangenen email anschaue, wurde das "/" entfernt so steht wieder ein offenes <br> Hinter Mehl, ich weiß nur nicht wo dies korrigiert wird…
-
damit <span>• Zucker<br>• Mehl </span>
-
oder füge eine tabelle ein
<table><tr><td>mehl></td></tr><tr><td>zucker></td></tr></table>
-
Funktioniert alles nicht, in der Mail sieht alles gut aus, nur druckt der Drucker nichts, es scheint als dürften sich keine weiteren tags innerhalb des <body> tags befinden, denn auch mit <body><p>Zucker</p><p>Mehl</p></body> wird nichts gedruckt…
-
dann wird das auch nicht funktionieren. das wäre eine Liste mit aufzählungszeichen nach html
<html><head></head><body style="width: 21cm; height: 29.7cm; margin: 30mm 45mm 30mm 45mm; font-family: Verdana; font-size: 14.0px;"><ul><li>Zucker</li><li>Mehl</li></ul></body></html>
wie heißt den der drucker. evtl findet man da etwas.
-
kann man den nicht einen "neue zeile"code eingeben: mehl \n mehl - nannte sich das nicht Escape-Sequenz
evtl hier: https://stackoverflow.com/questions/39325414/line-break-in-html-with-n
darin ist das:
<pre>
abc
def
ghi
</pre>@newpicsel sagte in Druckbare Datei aus Liste erzeugen? 🤯:
per Webdienst via (eigene) Emailadresse angesteuert
gibt es eigentlich dafür eine beschreibung ?
-
das wäre Vergewaltigung.
Man muss mE erst den Grund finden, warum der Drucker html zwar kann, aber nicht so wie man will.
ich weiß ja nicht was blockly da hinter <br> einfügt. ist da dann bereits ein newline? evtl. mag der drucker die kombination aus newline-steuerzeichen nicht. wäre zwar ungewöhnlich, aber bei diesen schnell zusammengeschusterten firmwares in china würde mich sowas nicht wundern.er sollte mal erst einmal ohne logik probieren, das html am drucker ausgegeben wird.
einfach nur den string, den ich gerade gepostet habe, per email an den drucker senden. da sind keine umbruchzeichen drin. wenn das funktioniert haben wir es.aber zur Sicherheit: Wie heißt der Drucker?
-
Leider alles ohne Erfolg…
Es wird tatsächlich nur gedruckt, wenn sich innerhalb des <body> </body> Nichts weiter befindet, mit dem /n wird zwar gedruckt aber dennoch in einer Zeile.Der Drucker ist ein „HP ENVY 7640“
Zu der Methode die gesendete email direkt drucken (kein Anhang), kann ich keine Infos finden.Edit: Moment klappt doch !!!
Hatte hier beim lauter Testen ein Schnipsel übersehen! <pre>Zucker /n Mehl</pre> funktioniert -
@newpicsel sagte in Druckbare Datei aus Liste erzeugen? 🤯:
HP ENVY 7640
also mal ein bisschen rumgeschaut.
wenn du per email druckst, nutzt du dann ePrint von hp ?
Da wird html nicht offiziell unterstützt.
Ich habe leider auch nix zu den Anforderungen gefunden.
wenn du mit dem pre zum erfolg kommst, dann alles gut.
ansonsten musst du aus html ein pdf erzeugen und das als anhang per email versenden.seltsam ist, das html teilweise unterstützt wird. wenn jemand sowas umsetzt, dann ganz oder gar nicht. evtl. wird nur ein alter html standard unterstützt. aber alle oben aufgeführten tags sind schon immer da.
-
Ja richtig, schon komisch aber ok…
Wirklich zum Ziel führt mich dies leider nicht, da ich gerne zwei Listen nebeneinander hätte um nicht zu viel Platz auf einem Blatt A4 zu verschwenden, dafür würde ich jedes zweite Element in eine zweite Liste packen.
Dadurch, dass ich nun keine zwei Container in <body> Stecken kann sowie keine tabelle oder Ähnliches, hat sie diese Idee erübrigt…Hat hier jemand noch eine Idee?
Zum umwandeln in pdf mit „wkhtmltopdf“, hier hab ich das Problem, dass laut kommandozeile zwar „done“ ausgegeben wird, ich die pdf aber nicht finden kann…
Eingabe:
wkhtmltopdf /opt/iobroker/iobroker-data/files/vis.0/Smart-Home/ShopList.html /opt/iobroker/iobroker-data/files/vis.0/Smart-Home/ShopList.pdf
Ausgabe:
Loading page (1/2) Printing pages (2/2) Done
Zum verzweifeln
-
wenn du es mal richtig kompliziert willst - braucht node eintrag im javascript setting
hier wird ein pdf im script direct erzeugt und speichert es auf die platte
const PDFDocument = require('pdfkit'); const fs = require('fs'); var pdfDoc = new PDFDocument; pdfDoc.pipe(fs.createWriteStream('/Daten/SampleDocument.pdf')); pdfDoc .fillColor('blue') .fontSize(27) .text("da kann man sich schwindelig coden :-)", 305, 150); pdfDoc.moveDown(); pdfDoc.text("nimm dir zeit :-)", 305); pdfDoc.text("Butter", 150, 150); pdfDoc.moveDown(); pdfDoc.text("Mehl"); pdfDoc.moveDown(); pdfDoc.end();
anleitung:
http://pdfkit.org/index.html
https://www.npmjs.com/package/pdfkitgibt es wohl auch für table