Forum | | | | - page 1 - |
| Thomas Freier | Alle Eigenversuche schlugen fehl. Hat einer une Vorschlag, comment deux RTFs fester Taille et une Dritte beliebig long ausgedruckt volonté peut. Analog eines Beispiel de Uwe 'Pascal' wird ici seulement une page gedruckt. mais comment geht's plus? KompilierenMarqueSéparation $H Windows.ph
$H RichEdit.ph
$U RTFHandling.pcu = R_'RTF-PCU einbinden
$U objects.pcu = R_
proc DrawRichText2'---------------------------------------------------------DrawRichText2
parameters RTF&,PosX%,PosY%,MaxX%,MaxY%'--Position + Grösse in Pixeln!
declare PrinterDpiX%,PrinterDpiY%
declare WindowDpiX%,WindowDpiY%
declare fx!,fy!
if %printing'--Bei Druck: %HDC2 = %HDC = &PDC
~SetMapMode(%hdc2,1)
~SetWindowExtEx(%hdc2,1,1,0)
~SetViewPortExtEx(%hdc2,1,1,0)
PosX%=PosX%+30'--Korrektur ???
PosY%=PosY%+30'--Korrektur ???
endif
PrinterDpiX%=~GetDeviceCaps(%hdc2,~LOGPIXELSX)'--dpi X des Druckers
PrinterDpiY%=~GetDeviceCaps(%hdc2,~LOGPIXELSY)'--dpi X des Druckers
WindowDpiX%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSX)'--dpi X des Bildschirms (!)
WindowDpiY%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSY)'--dpi Y des Bildschirms (!)
PosX%=int(PosX%/WindowDpiX%*1440)
PosY%=int(PosY%/WindowDpiX%*1440)
MaxX%=int(MaxX%/WindowDpiX%*1440)
MaxY%=int(MaxY%/WindowDpiX%*1440)
declare Range#
dim Range#,48
clear Range#
long Range#, 0=%hdc2,%hdc2
long Range#, 8=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
long Range#,24=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
long Range#,44=-1
sendmessage(RTF&,~EM_FORMATRANGE,1,Range#)
if %printing
fx!=~GetDeviceCaps(%hdc2,~LOGPIXELSX)/300
fy!=~GetDeviceCaps(%hdc2,~LOGPIXELSY)/300
~SetMapMode(%hdc2,~MM_ANISOTROPIC)
~SetWindowExtEx(%hdc2,6400,9600,0)
~SetViewPortExtEx(%hdc2,int(2200*fx!),int(3300*fy!),0)
endif
dispose Range#
casenot %printing:repaint
endproc'---------------------------------------------------------------------------------
window 0,0-%maxX,800
var rtf_dll& = R_INTITFORCREATERTF()'DLL laden mit PCU
var _RichEdit& = R_CREATERICHEDIT(%hwnd,"",70,0,350,100,9000)' Richedit erstellen mit PCU
RTF("LoadRTF",_RichEdit&,"Bootsplatz.rtf")
var __RichEdit& = R_CREATERICHEDIT(%hwnd,"",480,0,280,100,9000)' Richedit erstellen mit PCU
RTF("LoadRTF",__RichEdit&,"Label 105x42.rtf")
var RichEdit& = R_CREATERICHEDIT(%hwnd,"",0,102,800,400,9000)' Richedit erstellen mit PCU
var rtf_hdc& = R_PREPAREFORLINEBREAK(RichEdit&)' Device Context erzeugen mit PCU
R_Init_object(RichEdit&)'Zum Bildempfang vorbereiten
RTF("LoadRTF",RichEdit&,"Bilder-Album.rtf")
startprint "*xx"
DrawRichText2 _RichEdit&,80,10,400,150
DrawRichText2 __RichEdit&,500,10,250,150
DrawRichText2 RichEdit&,0,150,800,14900
endprint
waitkey
R_DEINITRTF(RichEdit&,rtf_hdc&,rtf_dll&)'RTF-Aufräumen
R_DEINITRTF(_RichEdit&,rtf_hdc&,rtf_dll&)
R_DEINITRTF(__RichEdit&,rtf_hdc&,rtf_dll&)
R_DeInit_object()'RTF-Aufräumen<
Fin
reste dans qui zip. |
| | | | |
| | « cette Beitrag wurde comme Solution gekennzeichnet. » | | Uwe ''Pascal'' Niemeier | Hi Thomas!
alors ist "RTF dans RTF per OLE" für's Ausdrucken déjà la fois OK? et es scheitert daran, qui qui eingebetteten RTFs (qui zusammen oui so 'ne Art Briefkopf bilden) pas bearbeitet volonté peut, si ne...aucune Word vorhanden ist?
Habe cela avec dem Drucken la fois getestet; allerdings seulement im MS Image Writer, weil je momentan keinen "echten" Drucker zur Disposition habe. Sieht exakt so aus comment per Wordpad ausgedruckt. Sollte alors brauchbar son. Siehe Anhang.
avec dem Travailler sans Word: la fois voyons...
encore un mot trop dem Code am Anfang cet Threads: qui wurde ursprünglich entwickelt, um un Bild au cours de des Druckens dans un Dokument sans OLE-Unterstützung einzublenden. tout autor trouver sich y verschiedene APIs zur Größenanpassung, qui zum Drucken reiner Dokumente (avec OLE) pas nötig sommes (hoffe je zumindest).
SeeYou Pascal |
| | | | | |
| | | allô Thomas,
funktioniert qui Solution aus diesem Fil [...] chez Dir um une komplette RTF auszudrucken et hilft Dir cet? |
| | | | |
| | Thomas Freier | allô iF,
im Moment pas. Manipulationen meinerseits étions erfolglos et quoi ist avec gemeint: "hilft Dir cet?" . aussi avec qui Solution aus dem Fil suis je encore pas glücklich. chez mir sommes pour dem Druck qui Zeilen zerstückelt. |
| | | | |
| | | Bild imprimer-ende.jpg zeigt wohl cela une trop geringe Breite gesetzt ist - tambour wirds alles so à gauche gefercht.
Vlt. devrait wir erstmal cela reine normale simple RTF-Ausdrucken "sauber" et "überall" hinbekommen et puis aufbauend ensuite solche Specials comment ici im Fil behandeln.
je serait dire zurück trop dem alten Fil si cela Programme là pas tut quoi es soll et ensuite vlt. puis aufbauen.
Deinen obigen Code peux je mir seulement aujourd'hui soir richtig regarder et testen. |
| | | | |
| | Thomas Freier | oui, vois je aussi so. cet Umbrüche sommes mais aussi chez qui Text99. Merkwürdig mais aussi, si le Dossier vorm Druck gespeichert et après erneut geladen wird, rester qui Veränderungen bestehen sommes mais so pas dans qui gespeicherten Dossier. qui Versuch qui gespeicherte Dossier zum Druck dans un trop diesem Zwecke erstelltes KompilierenMarqueSéparation trop poser, endet toujours avec Schutzverletzung (RTF.pcu). la fois voyons comment je cela behebe. |
| | | | |
| | | Ok verstehe, aussi wenns ego encore pas überschaue. ^ ^ |
| | | | |
| | | Druckt cette Code car wenigstens la première page halbwegs korrekt? KompilierenMarqueSéparation'{$cleq}
'{$pushkeyword R_*}
$H Windows.ph
$H RichEdit.ph
$U RTFHandling.pcu = R_'RTF-PCU einbinden
$U objects.pcu = R_
proc DrawRichText2'---------------------------------------------------------DrawRichText2
parameters RTF&,PosX%,PosY%,MaxX%,MaxY%'--Position + Grösse in Pixeln!
declare PrinterDpiX%,PrinterDpiY%
declare WindowDpiX%,WindowDpiY%
declare fx!,fy!
if %printing'--Bei Druck: %HDC2 = %HDC = &PDC
~SetMapMode(%hdc2,1)
~SetWindowExtEx(%hdc2,1,1,0)
~SetViewPortExtEx(%hdc2,1,1,0)
endif
PrinterDpiX%=~GetDeviceCaps(%hdc2,~LOGPIXELSX)'--dpi X des Druckers
PrinterDpiY%=~GetDeviceCaps(%hdc2,~LOGPIXELSY)'--dpi X des Druckers
WindowDpiX%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSX)'--dpi X des Bildschirms (!)
WindowDpiY%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSY)'--dpi Y des Bildschirms (!)
PosX%=int(PosX%/WindowDpiX%*1440)
PosY%=int(PosY%/WindowDpiX%*1440)
MaxX%=int(MaxX%/WindowDpiX%*1440)
MaxY%=int(MaxY%/WindowDpiX%*1440)
declare Range#
dim Range#,48
clear Range#
long Range#, 0=%hdc2,%hdc2
long Range#, 8=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
long Range#,24=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
long Range#,44=-1
sendmessage(RTF&,~EM_FORMATRANGE,1,Range#)
if %printing
fx!=~GetDeviceCaps(%hdc2,~LOGPIXELSX)/300
fy!=~GetDeviceCaps(%hdc2,~LOGPIXELSY)/300
~SetMapMode(%hdc2,~MM_ANISOTROPIC)
~SetWindowExtEx(%hdc2,6400,9600,0)
~SetViewPortExtEx(%hdc2,int(2200*fx!),int(3300*fy!),0)
endif
dispose Range#
casenot %printing:repaint
endproc'---------------------------------------------------------------------------------
window 0,0-%maxx,%maxy
var rtf_dll& = R_INTITFORCREATERTF()'DLL laden mit PCU
var _RichEdit& = R_CREATERICHEDIT(%hwnd,"",10000,0,350,100,9000)' Richedit erstellen mit PCU
RTF("LoadRTF",_RichEdit&,"Bootsplatz.rtf")
var __RichEdit& = R_CREATERICHEDIT(%hwnd,"",10000,0,280,100,9000)' Richedit erstellen mit PCU
RTF("LoadRTF",__RichEdit&,"Label 105x42.rtf")
var RichEdit& = R_CREATERICHEDIT(%hwnd,"",10000,102,800,400,9000)' Richedit erstellen mit PCU
var rtf_hdc& = R_PREPAREFORLINEBREAK(RichEdit&)' Device Context erzeugen mit PCU
R_Init_object(RichEdit&)'Zum Bildempfang vorbereiten
RTF("LoadRTF",RichEdit&,"Bilder-Album.rtf")
startprint "*xx"
DrawRichText2 _RichEdit&,70,0,350,100
DrawRichText2 __RichEdit&,480,0,280,100
DrawRichText2 RichEdit&,70,100,640,960
endprint
waitinput
external("kernel32","ExitProcess",0)
R_DEINITRTF(RichEdit&,rtf_hdc&,rtf_dll&)'RTF-Aufräumen
R_DEINITRTF(_RichEdit&,rtf_hdc&,rtf_dll&)
R_DEINITRTF(__RichEdit&,rtf_hdc&,rtf_dll&)
R_DeInit_object()'RTF-Aufräumen >
Fin
|
| | | | |
| | Thomas Freier | | | | | |
| | | Juhu oui c'est ca, alors klappt doch Schonmal 3 RTFs...
bleibt seulement übrig de qui Bilder-RTF ab 2. page trop drucken?! |
| | | | |
| | Thomas Freier | | | | | |
| | | aussi wieder avec den 2 RTF's im tête ou bien ab 2. page sans? |
| | | | |
| | Thomas Freier | Folgeseiten sans 1. et 2. RTF. Hintergrund ist, si MS Word sur dem System ist, peux homme weitere RTFs dans qui tête-RTF einbetten et vous aussi Travailler et ensuite aussi alles drucken. Im anderen le cas devrait je qui trois RTFs getrennt drucken sans, dass pour Druck qui 1. et 2. RTF un Seitenvorschub erfolgt. |
| | | | |
|
répondreOptions du sujet | 10.324 Views |
Themeninformationencet Thema hat 3 participant: |