Deutsch
Forum

RTF und Ausdrucken

 
- Seite 1 -



Thomas
Freier
Gefunden hatte ich von Andreas:
KompilierenMarkierenSeparieren
 $I Profalt.inc
'################################
'Drucken mit dem Richedit-Control
'################################
DEF StartDoc(2)      ! "gdi32","StartDocA"
DEF StartPage(1)     ! "gdi32","StartPage"
DEF EndPage(1)       ! "gdi32","EndPage"
DEF EndDoc(1)        ! "gdi32","EndDoc"
DEF CreateDC(4)      ! "gdi32","CreateDCA"
DEF DeleteDC(1)      ! "gdi32","DeleteDC"
DEF GetDeviceCaps(2) ! "gdi32","GetDeviceCaps"
DEF PrintDlg(1)      ! "comdlg32","PrintDlgA"
Declare Richedit&,RichDLL&,Ende&,Print&,Exit&,FileName$,Driver$,Printer$
Declare Horzres&,Vertres&,PixelsX&,PixelsY&,iWidthTwips&,iHeightTwips&
Declare iTextOut&,iTextLength&,DocName$
Declare PrinterDC&
Declare FormatRange#,PrintDLG#,cRect#
Declare DocInfo#
Dim FormatRange#,48
Dim DocInfo#,12
Clear DocInfo#
Dim PrintDLG#,66
Clear PrintDLG#
Dim cRect#,16
SetTrueColor 1
Window 0,0-640,480
CLS RGB(196,196,196)
Print& = CreateButton(%hwnd,"Drucken",500,40,80,24)
Exit& = CreateButton(%hwnd,"Ende",500,70,80,24)
RichEdit& = Create("RichEdit",%hwnd,"",0,2,460,430)
FileName$ = LoadFile$("Als RTF öffnen","*.RTF")

If FileName$ <> ""

    RTF("LoadRTF",Richedit&,Filename$)

EndIf

DocName$ = "Profan-RTFPrinter"

Whilenot Ende&

    Waitinput

    If GetFocus(Exit&)

        Ende& = 1

    ElseIf GetFocus(Print&)

        Long PrintDLG#,0  = 66
        Long PrintDLG#,4  = %hwnd
        Long PrintDLG#,20 = $0140'PD_RETURNDC,PD_PRINTSETUP
        PrintDlg(PrintDLG#)
        PrinterDC& = Long(PrintDLG#,16)

        If PrinterDC&

            HorzRes& = GetDeviceCaps(PrinterDC&,8)
            VertRes& = GetDeviceCaps(PrinterDC&,10)
            PixelsX& = GetDeviceCaps(PrinterDC&,88)
            PixelsY& = GetDeviceCaps(PrinterDC&,90)
            iWidthTwips& = Int((HorzRes&/PixelsX&))*1440
            iHeightTwips& = Int((VertRes&/PixelsY&))*1440
            Long cRect#,0 = 0
            Long cRect#,4 = 0
            Long cRect#,8 = iWidthTwips&
            Long cRect#,12 = iHeightTwips&
            Long DocInfo#,0 = 12
            Long DocInfo#,4 = ADDR(Docname$)
            Long FormatRange#,0 = PrinterDC&'HDC
            Long FormatRange#,4 = PrinterDC&'TargetHDC
            Long FormatRange#,8 = 0'linker Rand in Twips
            Long FormatRange#,12 = 0'oberer Rand in Twips
            Long FormatRange#,16 = iWidthTwips&'rechter Rand in Twips
            Long FormatRange#,20 = iHeightTwips&'unterer Rand in Twips
            Long FormatRange#,24 = 0'linker Rand in Twips
            Long FormatRange#,28 = 0'oberer Rand in Twips
            Long FormatRange#,32 = iWidthTwips&'rechter Rand in Twips
            Long FormatRange#,36 = iHeightTwips&'unterer Rand in Twips
            Long FormatRange#,40 = 0'CharRange-MIN
            Long FormatRange#,44 = -1'CharRange MAX ( -1 = alles )
            iTextOut& = 0
            iTextLength& = SendMessage(RichEdit&, 14, 0, 0)- SendMessage(RichEdit&,186,0,0)
            StartDoc(PrinterDC&,DocInfo#)

            Whilenot OR(iTextOut& >= iTextLength&,itextOut& = -1)

                StartPage(PrinterDC&)
                Long FormatRange#,44 = -1
                iTextOut& = SendMessage(RichEdit&, 1081, 1, FormatRange#)
                Long FormatRange#,40 = iTextOut&
                SendMessage(RichEdit&,1075,0,cRect#)
                EndPage(PrinterDC&)

            Wend

            EndDoc(PrinterDC&)
            SendMessage(RichEdit&, 1081, 1, 0)

        Endif

    Endif

EndWhile

Dispose FormatRange#
Dispose DocInfo#
Dispose PrintDLG#
DeleteDC(PrinterDC&)
End

Leider endet der Druck nach 3 Seiten. WordPad druckt alles. Wie geht's mit XProfan?

2.867 kB
Hochgeladen:06.10.2010
Ladeanzahl89
Herunterladen
 
Gruß Thomas
Windows XP SP2, XProfan X2
06.10.2010  
 



 
- Seite 2 -


« Dieser Beitrag wurde als Lösung gekennzeichnet. »

- Seite 3 -



Uwe
''Pascal''
Niemeier
Hi Thomas!

Anscheinend wird aus der FORMATRANGE-Struktur nicht nur der zu bedruckende Bereich ausgelesen, sondern nach dem Drucken auch der tatsächlich genutzte Bereich hinterlegt (oder sowas in der Art). Darum muß der betroffene Abschnitt der Struktur bei jedem Schleifendurchlauf neu bestückt werden.

SeeYou
Pascal

6 kB
Version:2
Kurzbeschreibung: RTF drucken
Hochgeladen:26.10.2010
Ladeanzahl151
Herunterladen
 
26.10.2010  
 




Thomas
Freier
Prima, jetzt läuft es auch bei mir. Nur durchsteigen, warum das so ist, kann ich nicht. Auch kann ich eine Einstellung für den oberen Randabstand nicht ausmachen oder besteht diese Möglichkeit nicht?
 
Gruß Thomas
Windows XP SP2, XProfan X2
08.10.2010  
 



Setzen liesse sich der obere Rand wohl...
KompilierenMarkierenSeparieren
KompilierenMarkierenSeparierengibt bei mir 0 aus - vlt. per separatem Thema klären bzw. schau mal vlt. bei Suche nach Ränder/ z.B.  [...]  .
 
09.10.2010  
 




Thomas
Freier
Der Ansatz ist schon OK. Danke iF, geht so sehr gut. Ich setze den Randabstand links und oben wie folgt:
KompilierenMarkierenSeparieren
var RANDLI%=0'in Twips
var RANDOB%=500'in Twips
var CXPHYSOFFSET%=GETDEVICECAPS(HDCC&, 112)+RANDLI%
var CYPHYSOFFSET%=GETDEVICECAPS(HDCC&, 113)+RANDOB%

Den bedruckbaren Bereich zu holen lohnt heute kaum, da die meisten Drucker randlos drucken können. Also werde ich nur einen oberen- und Heft-Rand vorgeben, bzw. einstellen lassen.
 
Gruß Thomas
Windows XP SP2, XProfan X2
09.10.2010  
 



Ah, ok & gern geschehen. ^^
 
09.10.2010  
 



Einfach nur 1 RTF komplett ausdrucken funktioniert bei mir so jetzt ganz super:

(hab dispose fr# in der Funktion vergessen)

931 kB
Hochgeladen:13.10.2010
Ladeanzahl2
Herunterladen
 
13.10.2010  
 




Thomas
Freier
Bei mir "hängt" immer eine Datei. Erste Vermutung, da die Datei erst vorm Druck erzeugt wird, dass der Drucker schon auf die erzeugende Datei zugreift, bevor der Speichervorgang beendet ist, scheint nicht zu zutreffen.
Könnte einer einmal auf seinem System die beigefügte Datei mit der TEXT130.exe testen.
Mit anderer Software ist sie problemlos zu öffnen und zu drucken.

3.252 kB
Hochgeladen:14.10.2010
Ladeanzahl59
Herunterladen
 
Gruß Thomas
Windows XP SP2, XProfan X2
14.10.2010  
 



Stimmt, "hängt" zeigt bei mir das er aus dem Loop nicht herauskommt und hunderte Seiten in Auftrag gibt. ^^

Morgen mal schauen was da "abgeht" bzw. warum das Break-Argument scheinbar nie zutrifft.
 
14.10.2010  
 




Thomas
Freier
Ja, ist verrückt, den andere RTFs mit mehr oder weniger Bildern wurden planmäßig gedruckt. Auch dieses Blatt wird ordentlich gedruckt, wenn nach dem letzten Bild noch Text oder eine Leerzeile eingefügt wird. Es entsteht dann eine neue Seite. Das Problem ist vermutlich: Das letzte, auf diesem Blatt mögliche Bild (Objekt), löst weder einen Seitenwechsel noch Druckende aus.
 
Gruß Thomas
Windows XP SP2, XProfan X2
14.10.2010  
 



SendMessage em_formatRange gibt die letzte Position zurück, dieser Wert dürfte z.B. von Seite zu Seite nicht "gleich" sein - vlt. passt etwas nicht auf die Seite weshalb man da die Position vlt. "manuell" weitergehen sollte. Ich prüfe in dem Beispiel die Position auch anders als rein von msdn übersetzt damits mit StartPrint/ nextPage klappt ohne StartDoc-Api - vlt. hab ich hier was übersehen.
 
15.10.2010  
 




Thomas
Freier

.... vlt. hab ich hier was übersehen.


Und etwas übersehen?
 
Gruß Thomas
Windows XP SP2, XProfan X2
20.10.2010  
 



Ah, garnicht geschaut - Uwe und Dieter sind da deutlich kompetentere Ansprechpartner weshalb ich von ausging das bereits geholfen ist.
 
20.10.2010  
 




Thomas
Freier
Ich würde es besser finden, wenn deine Scrips, die ja sehr gut sind, auch bekannt gewordene Fehler nicht mehr hätten.
Ist doch auch möglich, dass Uwes Beispiel unter bestimmten Umständen in einer Endlosschleife endet. Zur Sicherheit hat er jetzt die max. zu druckenden Seiten vorgegeben. Da ist beim Einsatz natürlich das Problem, dass sich die Seitenanzahl des Dokumentes selten ermitteln läßt.
 
Gruß Thomas
Windows XP SP2, XProfan X2
21.10.2010  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

17.035 Betrachtungen

Unbenanntvor 0 min.
Uwe Lang18.02.2024
H.Brill18.09.2020
boh111.09.2020
Alibre25.12.2019
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie