Foro | | | | - Página 1 - |
| Thomas Freier | Alle Eigenversuche schlugen fehl. Tiene una una Vorschlag, como zwei RTFs fester Größe y una Dritte cualquier lang ausgedruckt voluntad puede. Analog uno Ejemplo de Uwe 'Pascal' se hier sólo una Página gedruckt. Aber como geht's más? KompilierenMarcaSeparación $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<
End
Rest en el zip. |
| | | | |
| | « Dieser Contribución wurde como Solución gekennzeichnet. » | | Uwe ''Pascal'' Niemeier | Hi Thomas!
Also es "RTF en RTF por OLE" für's Ausdrucken ya veces OK? Und lo scheitert daran, daß el eingebetteten RTFs (el zusammen sí así 'ne Art Briefkopf forma) no bearbeitet voluntad puede, si kein Word disponible es?
Posesiones el con el Drucken veces getestet; allerdings sólo en el MS Imagen Writer, porque Yo actualmente no "echten" Drucker disponible habe. Sieht exakt así de como por Wordpad ausgedruckt. Sollte also brauchbar ser. Siehe Anhang.
Mit el Editar sin Word: Tiempo sehen...
Noch una Wort a el Code al Anfang dieses Hilos: Der wurde ursprünglich entwickelt, en una Bild während des Druckens en una Dokument sin OLE-Unterstützung einzublenden. Darum encontrar se en él verschiedene APIs a Größenanpassung, el para Drucken reiner Dokumente (con OLE) no nötig son (hoffe Yo zumindest).
SeeYou Pascal |
| | | | | |
| | | Hola Tomás,
funktioniert el Solución de diesem Hilo [...] con usted una komplette RTF auszudrucken y hilft Usted esta? |
| | | | |
| | Thomas Freier | Hola si,
en el Moment no. Manipulationen meinerseits waren erfolglos y qué es con gemeint: "hilft Usted esta?" . Auch con el Solución de el Hilo bin Todavía no glücklich. En me son después de el Druck el Zeilen zerstückelt. |
| | | | |
| | | Bild imprimir-ende.jpg zeigt wohl el una a geringe Breite gesetzt es - tambor Será mejor que te va alles así después de links gefercht.
Vlt. debería wir primero el reine normale einfache RTF-Ausdrucken "sauber" y "überall" hinbekommen y darauf aufbauend entonces solche Specials como hier en el Hilo behandeln.
Yo sería sagen zurück a el alten Hilo si el Programa hay no tut qué lo se y luego vlt. darauf aufbauen.
Su obigen Code kann Yo sólo heute Abend correcto ansehen y testen. |
| | | | |
| | Thomas Freier | Sí, sehe Yo auch así. Diese Umbrüche son aber auch en Texto99. Merkwürdig aber auch, si la Expediente vorm Druck gespeichert y danach erneut geladen se, bleiben el Veränderungen bestehen son aber así no en el gespeicherten Expediente. Der Intento el gespeicherte Expediente para Druck en una a diesem Zwecke erstelltes KompilierenMarcaSeparación a legen, endet siempre con Schutzverletzung (RTF.pcu). Tiempo sehen como yo behebe. |
| | | | |
| | | Ok verstehe, auch wenns ego todavía no überschaue. ^ ^ |
| | | | |
| | | Druckt dieser Code porque wenigstens el erste Página halbwegs korrekt? KompilierenMarcaSeparación'{$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 >
End
|
| | | | |
| | Thomas Freier | | | | | |
| | | Juhu genau, also klappt doch schonmal 3 RTFs...
restos sólo übrig de el Bilder-RTF de 2. Página a drucken?! |
| | | | |
| | Thomas Freier | | | | | |
| | | Auch otra vez con el 2 RTF's en el Kopf oder de 2. Página sin? |
| | | | |
| | Thomas Freier | Folgeseiten sin 1. y 2. RTF. Hintergrund es, si MS Word en el Sistema es, kann mann weitere RTFs en el Haupt-RTF einbetten y ellos auch bearbeiten y luego auch alles drucken. Im otro Fall müßte Yo el drei RTFs getrennt drucken sin, dass después de Druck el 1. y 2. RTF una Seitenvorschub es. |
| | | | |
|
RespuestaTema opciones | 10.319 Views |
ThemeninformationenDieses Thema ha 3 subscriber: |