Français
Forum

RTF et Ausdrucken

 
- page 1 -



Thomas
Freier
trouvé J'ai eu de Andreas:
KompilierenMarqueSéparation
 $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&)
Fin

malheureusement endet qui Druck pour 3 Seiten. WordPad druckt alles. comment geht's avec XProfan?

2.867 kB
Hochgeladen:06.10.2010
Downloadcounter89
Download
 
Gruß Thomas
Windows XP SP2, XProfan X2
06.10.2010  
 



« cette Beitrag wurde comme Solution gekennzeichnet. »

- page 3 -



Uwe
''Pascal''
Niemeier
Hi Thomas!

Anscheinend wird aus qui FORMATRANGE-Struktur pas seulement qui trop bedruckende Bereich ausgelesen, mais pour dem Drucken aussi qui réellement genutzte Bereich hinterlegt (ou bien quelque chose comme dans qui Art). tout autor doit qui betroffene paragraphe qui Struktur chez chaque Schleifendurchlauf récente bestückt volonté.

SeeYou
Pascal

6 kB
Version:2
Kurzbeschreibung: RTF drucken
Hochgeladen:26.10.2010
Downloadcounter151
Download
 
26.10.2010  
 



 
- page 3 -


 
- page 2 -



Thomas
Freier
je serait es besser trouver, si deine Scrips, qui oui très bien sommes, aussi bekannt gewordene faute pas plus hätten.
Ist doch aussi possible, dass Uwes Beispiel sous certain Umständen dans einer Endlosschleife endet. Zur Sicherheit hat il maintenant qui max. trop druckenden Seiten vorgegeben. voilà beim Einsatz naturellement cela Problem, dass sich qui Seitenanzahl des Dokumentes selten ermitteln läßt.
 
Gruß Thomas
Windows XP SP2, XProfan X2
21.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi gens!

si on alle Funktionen, qui den Drucker direct ansprechen (StartDoc/EndDoc, StartPage/EndPage) auskommentiert, peux on qui FormatRange-Routine aussi "im Leerlauf" betreiben et so vorab ermitteln, wieviele Seiten gedruckt würden .

avec quelque chose Geschick peux on so sogar avant dem Drucken am Seitenanfang et / ou bien Seitenende zusätzliche Textes einbauen, z.B. "Ende page 1" "Anfang page2" "Seite 1 de 3" usw.

Incidemment scheint es chez meiner letzten Demo im Fil nebenan chez Dokumenten avec Bildern Abweichungen chez den eingestellten Rändern trop geben; là avoir lieu partiellement Seitenumbrüche, wohin aucun nötig wären. la fois voyons, si sich là encore quoi faire läßt.

@ Thomas: Hoffe dans Kürze une Solution zum Bearbeitern de RTF dans RTF  trouvé trop avons.

SeeYou
Pascal
 
21.10.2010  
 



Thomas Freier
je serait es besser...


aucun Frage, sobald je wieder à diesem PC ...
 
22.10.2010  
 




Thomas
Freier
hé Pascal,
konntest du à cette Stelle encore une amélioration trouver?

Incidemment scheint es chez meiner letzten Demo im Fil nebenan chez Dokumenten avec Bildern Abweichungen chez den eingestellten Rändern trop geben; là avoir lieu partiellement Seitenumbrüche, wohin aucun nötig wären. la fois voyons, si sich là encore quoi faire läßt.


j'ai hin et her probiert et folgendes festgestellt:
si je à qui, z.B. Hemmelsdorf, erstellte RTF quelques grand Bilder (P1010404.JPG= 640x480) comme grand anhänge, so ist qui 1. page OK. sur den Folgenden ist jeweils seulement un Bild pro page.
si je qui Bilder sur qui récente erstellten page lösche jusqu'à sur den Text et sechsmal cela Bild (P1010404.JPG) comme grand einfüge, volonté pro page 2 Bilder gedruckt.
 
Gruß Thomas
Windows XP SP2, XProfan X2
24.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi Thomas!

Anscheinend wird aus qui FORMATRANGE-Struktur pas seulement qui trop bedruckende Bereich ausgelesen, mais pour dem Drucken aussi qui réellement genutzte Bereich hinterlegt (ou bien quelque chose comme dans qui Art). tout autor doit qui betroffene paragraphe qui Struktur chez chaque Schleifendurchlauf récente bestückt volonté.

SeeYou
Pascal

6 kB
Version:2
Kurzbeschreibung: RTF drucken
Hochgeladen:26.10.2010
Downloadcounter151
Download
 
26.10.2010  
 




Thomas
Freier
hé Pascal,
cela sieht super aus. merci!


avec quelque chose Geschick peux on so sogar avant dem Drucken am Seitenanfang et / ou bien Seitenende zusätzliche Textes einbauen, z.B. "Ende page 1" "Anfang page2" "Seite 1 de 3" usw.


la hâte du là encore une tolle concept?
Bisher habe je :
KompilierenMarqueSéparation
startpaint DC&
DrawText 2250,6725,"Seite "+str$(x%)'..........bei A4 hoch
endpaint
inc x%
~StartPage(DC&)'------------Seite beginnen > Vorbereitung Drucken/pre>
eingesetzt. pouvoir beim Font encore Probleme. la fois wird qui Font qui 1. la ligne sur deux Seiten verwendet et ensuite folgt un anderer. un d'autre la fois wird il sur allen Seiten verwendet.
 
Gruß Thomas
Windows XP SP2, XProfan X2
26.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi Thomas!

Voraussetzung pour qui de mir verwendete technologie ist, qui Dokument et gedruckte page juste viele Zeilen enthalten, weil qui entsprechende Routine avant dem Drucken direct ins RTF-Éditer écrit. Es darf alors aucun unkontrollierten Zeilenumbrüche am rebord de Dokument et/ou bien page donner.
Aussi gibt's encore Probleme à cause de qui Bilder.

SeeYou
Pascal
 
29.10.2010  
 




Thomas
Freier
hé Pascal,
wohin es du sur Probleme avec Bildern gestoßen? j'ai so à qui vingt Beispiele, grand/kleine Bilder et Textzeilen insérer/effacer, getestet et qui Druck était toujours OK.
Pour qui Seitenzahl mets je unteren Blattrand avec 12mm et drucke qui Seitenzahl dans cette rebord sans Prüfung sur bedruckbaren Bereich et Blattausrichtung wird zwangsweise sur A4-hoch gesetzt.
 
Gruß Thomas
Windows XP SP2, XProfan X2
30.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi Thomas!

Comme je le disais, mon Methode ist, avant dem réel Drucken tête- et/ou bien Fußzeilen direct ins RTF-Éditer trop écrivons.
Hat pour mon Zwecke bisher bien funktioniert, hat mais plan aussi Nachteile bzw. ist pas pour jeden le cas anwendbar. la fois voyons, si sich le reste changement läßt.
Werde mir deine technologie mais aussi nochmal anschauen.

BTW: cet RTF-Version [...]  peux aussi dans Word erstellte Tabellen avec mehreren Zeilen représenter.

SeeYou
Pascal
 
30.10.2010  
 




Thomas
Freier
hé Pascal,
meinst du : den Typ RichEdit50W (RichEdit 4.1) ?
Aus einer alten Anwendung (ici reduziert) habe je encore:
KompilierenMarqueSéparation
' ab XProfan 8.0
Def SetEditNumeric(1) SetWindowLong(@&(1),-16, (GetWindowLong(@&(1),-16) | $2002))
Def SetWindowLong(3) !"USER32", "SetWindowLongA"
Def GetWindowLong(2) !"USER32", "GetWindowLongA"
Def GetSysColor(1) !"USER32","GetSysColor"
Declare text$,text1$,x%,h$
Declare ed1&,ed2&
Declare sed1&,sed2&,sed3&,sed4&,sed5&
Declare hed1&
Declare but&,sich&
Declare font&
SetTrueColor 1
Window 10,10 - 900,600
cls GetSysColor(15)
font&=CreateFont("Arial",16,0,0,0,0)
SetDialogFont  font&
ed1&=Create("RichEdit",%hwnd,"",11,10,700,500)
ed2&=Create("RichEdit",%hwnd,"",0,00,0,0)
CreateText(%hwnd,"Spaltenbreite",760,80,100,22)
sed1&=CreateEdit(%hwnd,"200",760,110,100,22)
sed2&=CreateEdit(%hwnd,"200",760,140,100,22)
sed3&=CreateEdit(%hwnd,"200",760,170,100,22)
sed4&=CreateEdit(%hwnd,"",760,200,100,22)
sed5&=CreateEdit(%hwnd,"",760,230,100,22)
SetEditNumeric(sed1&)
SetEditNumeric(sed2&)
SetEditNumeric(sed3&)
SetEditNumeric(sed4&)
SetEditNumeric(sed5&)
CreateText(%hwnd,"Zeilenhöhe",760,300,100,22)
hed1&=CreateEdit(%hwnd,"12",760,330,100,22)
SetEditNumeric(hed1&)
but&=CreateButton(%hwnd,"Einfügen",760,360,100,24)
sich&=CreateButton(%hwnd,"Speichern",760,460,100,24)
SetFocus(ed1&)
settext Ed1&,"Bitte eine Tabellenzeile einfügen\nund für weitere Zeilen"+ \
" den Curser ans Zeilenende setzen und die Taste ENTER drücken.\n"+ \
"Die Spaltenbreite ist nachträglich nicht mehr zu verändern."+Chr$(13)+Chr$(10)
SendMessage(Ed1&,$00B1,-1,-1)

While 1

    WaitInput
    case %key=2:BREAK
    case GetFocus(But&) AND (val(GetText$(sed1&))>0) : RTF_Zeile

    If GetFocus(sich&)

        Text$ = @SaveFile$("Speichern","Neu.rtf")
        case Len(trim$(Text$))>0 : call(&SaveRTF,Ed1&,addr(Text$))

    EndIf

wend

DeleteObject font&
End

Proc RTF_Zeile

    Assign #1,"Zeile.tmp"
    Rewrite #1
    Print #1,"{\"+chr$(114)+"tf1\"+chr$(097)+"nsi\"+chr$(097)+"nsicpg1252\deff0\deflang1049\deflangfe1049{\"+chr$(102)+"onttbl{\"+chr$(102)+"0\"+chr$(102)+"nil\"+chr$(102)+"charset0 Arial;}}"
    Print #1,"\viewkind4\uc1"
    text$="\"+chr$(116)+"rowd\"+chr$(116)+"rgaph30"
    x%= int(val(GetText$(sed1&))*10)
    text$=text$+"\cellx"+str$(x%)
    text1$="\cell"
    h$= str$(int(val(GetText$(hed1&))*2))

    If val(GetText$(sed2&))>0

        x%= x%+int(val(GetText$(sed2&))*10)
        text$=text$+"\cellx"+str$(x%)
        text1$=text1$+"\cell"

    EndIf

    If val(GetText$(sed3&))>0

        x%= x%+int(val(GetText$(sed3&))*10)
        text$=text$+"\cellx"+str$(x%)
        text1$=text1$+"\cell"

    EndIf

    If val(GetText$(sed4&))>0

        x%= x%+int(val(GetText$(sed4&))*10)
        text$=text$+"\cellx"+str$(x%)
        text1$=text1$+"\cell"

    EndIf

    If val(GetText$(sed5&))>0

        x%= x%+int(val(GetText$(sed5&))*10)
        text$=text$+"\cellx"+str$(x%)
        text1$=text1$+"\cell"

    EndIf

    Print #1,text$+"\pard\intbl\lang1031\"+chr$(102)+"s"+h$+text1$+"\"+chr$(114)+"ow"
    Print #1,"\par}"
    Close #1
    Rtf("LoadRTF",ed2&,"Zeile.tmp")
    SetFocus(ed2&)
    sendmessage(ed2&,$00B1,0,-1)
    Sendmessage(ed2&,$301,0,0)
    Sendmessage(ed1&,$302,0,0)
    SetFocus
n>ed1&) ENDPROC

mais malheureusement läßt sich cela Raster pas formatieren, d.h. wenigens deutlicher représenter.
 
Gruß Thomas
Windows XP SP2, XProfan X2
31.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi Thomas!

Zur Einblendung de tête/Fußzeilen:
Anscheinend venez chez qui FormatRange-Message une Funktion zum Einsatz, qui ähnlich comment DrawText wirkt. tout autor peux chez deiner eingeblendeten la ligne qui Font échanger. renversé peux on den Font pas vorgeben, weil sich cela sur cela ganze Dokument auswirkt.
Solution: Den Text dans qui Profan-Speicherbitmap anlegen et ensuite dans qui Seiten einblenden:
KompilierenMarqueSéparation
...
~StartDoc(DC&,DocInfo#)'-------Druckauftrag beginnen

whileloop 1,Seiten%'-----------Anzahl ermittelte Seiten

    mcls 500,100,255'--Farbe nur zu Testzwecken
    startpaint -1'-----%HDC nach StartPaint -1: DC der Speicherbitmap
    usefont "Balloon",50,0,0,0,0
    drawtext 0,0,"Seite "+str$(&loop)+" von "+str$(Seiten%)
    ~BitBlt(DC&,10,10,500,100,%hdc,0,0,~SRCCOPY)'--Parameter 2+3: Position in der Seite
    endpaint
    ~StartPage(DC&)'------------Seite beginnen > Vorbereitung Drucken   ...

Schriftgröße et Position doit à den jeweiligen Drucker ajusté werden; avant Allem, si es une Fußzeile volonté soll. peux on sûrement sur Seitegröße/Auflösung berechnen.
mais cette Trick ist sur jeden le cas um Längen besser comme mon Technik; merci pour den Tipp!

trop Tabellen:
réellement verhält sich dein Code avec einem 50W-Contrôle anders.
mais cet Verhalten ist eh bien la fois undokumentiert et tout autor sollte on sich pas absolument sur elle sortir de. Tipp: si du qui Tabelle avec Word erstellst et weiße Linien wählst, ist vous im 50W pas comme Tabelle trop erkennen.

SeeYou
Pascal
 
02.11.2010  
 




Thomas
Freier
Deinen Script pour qui Fußzeile werde je encore testen.
quoi qui Tabelle angeht, so J'ai eu vous, versehen avec Platzhaltern, 2005 pour Listen (Auftragsbestätigung, la facture, usw.) verwendet et seulement sur XProfan gedruckt. qui Listen sahen avec dem schwach grauen Tabellenraster toujours besser aus comme sans et qui page konnte comme RTF gespeichert volonté.
 
Gruß Thomas
Windows XP SP2, XProfan X2
02.11.2010  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

17.007 Views

Untitledvor 0 min.
Uwe Lang18.02.2024
H.Brill18.09.2020
boh111.09.2020
Alibre25.12.2019
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie