Aktuelle Zeit: 21.10.2018 09:34

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Frage zum "Print"-Verständnis
BeitragVerfasst: 31.10.2017 23:14 
Offline
Benutzeravatar

Registriert: 28.08.2017 17:23
Hallo Ihr guten Geister!

Heute mal ein ganz anderes Problem: Habe einen RTF-Text, in dem einige Platzhalter eingesetzt sind, wie z. B.: **Gesamt**, was dann mal durch einen Gesamtbetrag ersetzt werden soll.

Warum RTF: Text soll weitgehend so formatiert werden können, wie das der User möchte. RTF ist nicht komprimiert (wie docx, odf, ...). Wichtig ist, dass einfache Text-Platzhalter darin ersetzbar sind. Und dass kostenlose Software wie OpenOffice oder Libreoffice den Text bearbeiten können.

Mein Proggi soll vom User Daten annehmen (Texte, Werte), die das Proggi dann in der o. g. RTF-Datei einsetzen soll (die Platzhalter ersetzend) und soll die Datei anschliessend drucken, und zwar auf Papier oder wahlweise als PDF.

Stelle ich mir so vor:
Datei in einen String lesen (wie lange darf ein String werden?)
Platzhalter darin ersetzen
String in eine temporäre Datei schreiben
Druckerdialog aufrufen, Datei drucken.

Frage: wie sähe so ein Befehl aus, mit dem ich eine soundso.rtf-Datei via Printerdialog, Druckerauswahl und ggf. Druckereinstellung drucken kann?

_________________
Was das Programmieren angeht, bin ich ein Anfänger mit fast 40 Jahren Erfahrung, mit gelegentlichen, mitunter jahrzehntelangen Unterbrechungen. Kann mich noch dunkel an den TI58 bei der Bundeswehr Anfang der 1980er erinnern. Habe da mit "Mondlandung" viele Stunden der Heimatverteidung verbracht - Insider werden's kennen.
... wir hatten doch sonst nix!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Frage zum "Print"-Verständnis
BeitragVerfasst: 01.11.2017 09:40 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
wie_jetzt? hat geschrieben:
wie lange darf ein String werden?

Ist unlimitiert. So viel, wie dein Arbeitsspeicher bzw. der maximale Adressbereich ausreicht.

Falls du Beispiele und Informationen bezüglich RTF brauchst:
http://www.rsbasic.de/aktualisierung/wi ... rtieren.pb
http://www.rsbasic.de/aktualisierung/wi ... tierung.pb
https://de.wikipedia.org/wiki/Rich_Text_Format
http://formatting-and-more.de/2016/01/3 ... xt-format/
http://www.aboutvb.de/bas/formate/pdf/rtf.pdf

Bezüglich Drucken kann ich dir leider nicht helfen.

_________________
BildBildBildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Frage zum "Print"-Verständnis
BeitragVerfasst: 01.11.2017 10:56 
Offline
Benutzeravatar

Registriert: 08.03.2013 14:27
Wohnort: ERB
Das Drucken über Pure-Basic ist nicht ganz trivial, da du innerhalb von Pure-Basic das Dokument erst Zeichnen musst. Das bedeutet, das du das RTF auslesen, die Platzhalter ersetzen und dann auch noch die Steuerbefehle für die Formatierung interpretieren und über die Zeichenbefehle anwenden musst.

Such mal hier und im englischen Forum nach "RTF drucken" bzw. "RTF print/printing" und schau mal, ob da schon jemand ein Include für geschrieben hat (meine Zeit iist gerade leider etwas knapp ... Sorry). Ansonsten wirste dich selbst dransetzen müssen. Ich empfehle dir aber, statt RTF auf eine textbasierte Formatierungssprache zu wechseln, da sich diese gerade als Einsteiger leichter zu parsen und dann mit den Drawing-Befehlen leichter zeichnen lassen (HTML, Markdown, BBCode etc.). Gerade für HTML oder Markdown gibt es Editoren, mit denen man Dokumente ohne die Codes erstellen kann.

Alternativ kannst du auch die Datei einlesen, die Platzhalter in die Datei zurückschreiben bzw. in eine temporäre packen und diese dann mit der Kommandozeile bzw. über RunProgramm drucken: https://technet.microsoft.com/en-us/library/cc772773(WS.10).aspx

__________________________________________________
URL-Tags hinzugefügt
01.11.2017
RSBasic

_________________
PBExpress
Lightweight PureBasic FastCGI Framework

Github: https://github.com/reVerBxTc/PBExpress
Wiki: https://github.com/reVerBxTc/PBExpress/wiki


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Frage zum "Print"-Verständnis
BeitragVerfasst: 01.11.2017 11:52 
Offline
Benutzeravatar

Registriert: 29.08.2004 08:37
Vielleicht hilft dir ja Arctic Reports von srod aus dem englischen Forum. Generell nennt man das Reporting und es gibt noch andere Bibliotheken, die dir dabei helfen könnten. Z.B. Crystal Reports.

_________________
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Frage zum "Print"-Verständnis
BeitragVerfasst: 01.11.2017 18:49 
Offline
Benutzeravatar

Registriert: 28.08.2017 17:23
Hallo Allerseits!

besten Dank schon mal für die Hilfestellungen, werde mir das ansehen. Der Verdacht, dass das drucken nicht ganz so trivial sei, kam mir schon. Deswegen und wegen meiner angeborenen Neigung, ganz gerne Wege des geringeren Widerstandes beschreiten zu wollen, hatte ich mir das (natürlich) einfacher machen wollen. Ich kann z. B. via WindowsExplorer eine Rtf-Datei drucken. Da sonst gerade keine Software läuft, gehe ich davon aus, dass dann das OS für mich ausdruckt. Wenn das richtig gedacht wäre, wäre meine Frage:

Könnte ich mit meinem Proggi das OS veranlassen, eine Rtf-Datei auszudrucken, so wie ich das per WindowsExplorer und "rechte Maustaste->Drucken" mache? Also nicht selber drucken, sondern das OS die Arbeit machen lassen (kann es ja offensichtlich). Wobei mir wichtig wäre, trotzdem vorher den Drucker (Papierdrucker oder PDF) und ggf. Druckereinstellungen wie "randlos" oder "duplex" oder "Graustufen" oder oder oder einstellen zu können.

_________________
Was das Programmieren angeht, bin ich ein Anfänger mit fast 40 Jahren Erfahrung, mit gelegentlichen, mitunter jahrzehntelangen Unterbrechungen. Kann mich noch dunkel an den TI58 bei der Bundeswehr Anfang der 1980er erinnern. Habe da mit "Mondlandung" viele Stunden der Heimatverteidung verbracht - Insider werden's kennen.
... wir hatten doch sonst nix!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Frage zum "Print"-Verständnis
BeitragVerfasst: 01.11.2017 20:15 
Offline
Benutzeravatar

Registriert: 08.03.2013 14:27
Wohnort: ERB
Siehe Link aus dem letzten Post von mir ;)

_________________
PBExpress
Lightweight PureBasic FastCGI Framework

Github: https://github.com/reVerBxTc/PBExpress
Wiki: https://github.com/reVerBxTc/PBExpress/wiki


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Frage zum "Print"-Verständnis
BeitragVerfasst: 02.11.2017 19:35 
Offline
Benutzeravatar

Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten
Hallo,

Frage: Könnte man **Variable** auch durch WertVariable ersetzen?

Idee zu einem PureBasic Programm:
Vorlage RTF-Datei in einen String$ laden.ReadData(#Datei, *Speicherpuffer, ZuLesendeLänge) und bei UTF8 mit String=PeekS(*Speicherpuffer, -1, #PB_UTF8)
Alle WertVariablen mit FindString(String$, "Wert", StartPosition ) finden und in eine Liste eintragen(Position und Name der Variablen).
Werte der Variablen in die Liste als Unicode-String eintragen.
Alle WertVariablen in String mit String$ = ReplaceString(String$, SuchString$, ErsatzString$) ersetzen.
String$ in Datei.RTF speichern. WriteString(#Datei, Text$ [, Format])
Datei.RTF ausdrucken z.B. mit offices -p Datei.RTF aus PureBasic mit RunProgram(DateiName$ , Parameter$, Arbeitsverzeichnis$)
vergleiche https://help.libreoffice.org/Common/Starting_the_Software_With_Parameters/de

Beispiel für RTF-Datei
Code:
{\rtf1\ansi\deff3\adeflang1025
{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset0 Liberation Serif{\*\falt Times New Roman};}{\f4\fswiss\fprq2\fcharset0 Liberation Sans{\*\falt Arial};}{\f5\fnil\fprq2\fcharset0 Microsoft YaHei;}{\f6\fnil\fprq2\fcharset0 Mangal;}{\f7\fnil\fprq0\fcharset128 Mangal;}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}
{\stylesheet{\s0\snext0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031 Normal;}
{\s15\sbasedon0\snext16\sb240\sa120\keepn\dbch\af5\dbch\af6\afs28\loch\f4\fs28 \u220\'dcberschrift;}
{\s16\sbasedon0\snext16\sl288\slmult1\sb0\sa140 Textk\u246\'f6rper;}
{\s17\sbasedon16\snext17\sl288\slmult1\sb0\sa140\dbch\af7 Liste;}
{\s18\sbasedon0\snext18\sb120\sa120\noline\i\dbch\af7\afs24\ai\fs24 Beschriftung;}
{\s19\sbasedon0\snext19\noline\dbch\af7 Verzeichnis;}
}{\*\generator LibreOffice/5.3.0.3$Windows_X86_64 LibreOffice_project/7074905676c47b82bbcfbea1aeefc84afe1c50e1}{\info{\creatim\yr2017\mo11\dy2\hr17\min11}{\revtim\yr2017\mo11\dy2\hr17\min27}{\printim\yr0\mo0\dy0\hr0\min0}}{\*\userprops}\deftab709
\viewscale125
{\*\pgdsctbl
{\pgdsc0\pgdscuse451\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Standard;}}
\formshade\paperh16838\paperw11906\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\sectunlocked1\pgndec\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
{\*\ftnsep\chftnsep}\pgndec\pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031{\rtlch \ltrch\loch
WertName}
\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031{\rtlch \ltrch\loch
WertStra\u223\'dfe}
\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031{\rtlch \ltrch\loch
WertPLZOrt}
\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031{\rtlch \ltrch\loch
Rechnung  WertRechnungsnummer }{\rtlch \ltrch\loch
Datum: WertRechnungsdatum Auftrag: WertAuftragsnummer }
\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031{\rtlch \ltrch\loch
Sehr WertGeehrterName,}
\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031{\rtlch \ltrch\loch
wir freuen uns \u252\'fcber Ihren Kauf.}
\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031{\rtlch \ltrch\loch
WertAnzahl  WertArtikelname WertPreis einschlie\u223\'dflich WertMehrwertsteuer (MwSt WertStSatz)}
\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031{\rtlch \ltrch\loch
F\u252\'fcr R\u252\'fcckfragen erreichen Sie uns telefonisch unter WertTelefon (WertSachbearbeiter)}
\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031{\rtlch \ltrch\loch
Empfehlen Sie uns weiter.}
\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031{\rtlch \ltrch\loch
Mit freundlichem Gru\u223\'df }
\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par \pard\plain \s0\widctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af6\afs24\alang1081\loch\f3\hich\af3\fs24\lang1031\rtlch \ltrch\loch

\par }

_________________
PB Spickzettel

Erkenntnisapparat einschalten entscheidet über das einzig bekannte Leben im sichtbaren Universum.
Bitte Frage fragen.
Jürgen Kulow Wersten :D_üsseldorf NRW D Europa Erde Sonnensystem Lokale_Flocke Lokale_Blase Orion-Arm
Milchstraße Lokale_Gruppe Virgo-Superhaufen Laniakea Sichtbares_Universum


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Frage zum "Print"-Verständnis
BeitragVerfasst: 03.11.2017 18:19 
Offline
Benutzeravatar

Registriert: 28.08.2017 17:23
Hallo juergenkulow!

Das war jetzt aber mal pfiffig! Dein Tipp, den Ausdruck via LibreOffice zu machen, ist genauso genial wie einfach! Du hast mein Proggi-Projekt gerettet, denn damit sind die schlimmsten Hürden einfach aus dem Weg geräumt. Vielen, vielen Dank!

Ich fände es zwar schöner, wenn mein Proggi selbst drucken könnte, aber so funktioniert das schon mal sehr gut. Falls jemandem da was geeignetes in die Hände fällt, ich bin für jeden Tipp dankbar!

_________________
Was das Programmieren angeht, bin ich ein Anfänger mit fast 40 Jahren Erfahrung, mit gelegentlichen, mitunter jahrzehntelangen Unterbrechungen. Kann mich noch dunkel an den TI58 bei der Bundeswehr Anfang der 1980er erinnern. Habe da mit "Mondlandung" viele Stunden der Heimatverteidung verbracht - Insider werden's kennen.
... wir hatten doch sonst nix!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye