Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: g202e am 15.01.04 - 16:42:31
-
Ja, da haben wir wieder unser Lieblingsthema: Notes und Drucken
Das Szenario sieht folgendermaßen aus: Ich wähle über einen Dialog ein oder mehrere Dokumente aus die dann ausgedruckt werden. Das war bisher (unter LN R4) von irgendeinem mir unbekannten Freak über eine extra programmierte DLL gelöst worden und funzt natürlich unter R5 überhaupt nicht mehr: statt die Dokumente schön linksbündig zu drucken werden diese nunmehr rechtsbündig gedruckt und das sieht natürlich sch.. aus.
Da ich von DLL nicht allzuviel weiß, habe ich diese erstmal beiseite gelegt und mir also eine neue Druckmaske definiert(s.u.).
Die hat dieselben Felder wie die eigentliche Dokument-Maske und ein kleiner Agent sammelt jetzt meine zu druckenden Dokumente und wechselt einfach die Maske und rendert das ganze dann in ein RT-Item eines sog. "Druckdokuments" das dann am Bildschirm angezeigt wird.
Code: ******schnipp**********
If coll.count > 0 Then
Set doc = coll.GetFirstDocument
Do Until doc Is Nothing
If doc.getItemValue( "Form" )(0) = "Auftrag" Then
Call doc.ReplaceItemValue( "Form", "frmDruck" )
success = doc.RenderToRTItem( rtItem )
Call docDruck.Save( True, True )
End If '"Form" )(0) = "Auftrag"
Set doc = coll.GetNextDocument( doc )
Loop
Set uidoc = ws.EditDocument( False, docDruck )
*******schnapp********
Klappt auch alles ganz genial, aber nun soll ich noch dafür sorgen, dass es NIE vorkommt, dass beim folgenden Ausdruck mit @Command([FilePrint]) ein Seitenumbruch innerhalb eines Dokuments vorkommt!
Ich weiß nicht wie viele Dokumente gedruckt werden, ich weiß nicht wie lang die einzelnen Feldeinträge sind(z.B. könnten ja unter Bemerkungen durchaus 3 oder 4 Zeilen stehen), soll aber dafür sorgen, dass kein seitenumbruch innerhalb meiner Druckmaske auftritt!
Hat jemand eine Idee?
-
Dürfen denn die Dokumente einzeln ausgedruckt werden (pro Blatt eines) oder müssen sie bei vorhandenem Platz auf dieselbe Seite platziert werden?
Wenn sie einzeln sein sollen, versuche, am Ende jedes Dokumentes einen FormFeed (Chr$(12)) einzubetten.
Sonst wird Dir der Weg über Word oder so wohl nicht erspart bleiben.
-
Dürfen denn die Dokumente einzeln ausgedruckt werden (pro Blatt eines) oder müssen sie bei vorhandenem Platz auf dieselbe Seite platziert werden?
Eben nicht!
Solange Platz ist, sollen die auf ein Blatt.
Aber trotzdem: Verrate mir doch mal, wie ich z. B. nach jedem vierten Dokument so einen Formfeed in mein RT-Item bekomme.
Alle mir zur Verfügung stehenden Echtdaten haben im Feld Bemerkungen nichts drinstehen und in dieser Konstellation würden bequem 4 Dokumente auf eine Seite gehen und ich hätte noc ca. 5-6 Zeilen Reserve. Für eine schnelle Lösung muss das reichen!
-
Ok, wenn das reicht, Du renderst das Ding ja in ein rtItem. Wenn Du das hast, machst Du einen AppendRTItem (ist vielleicht nicht einmal nötig).
Und da sehe ich gleich auch, dass man gar keinen FormFeed braucht. Bei jedem vierten Dokument rufst Du die folgende Methode auf:
Call notesRichTextItem.AddPageBreak( [notesRichTextParagraphStyle] )
Die Hilfe zu NotesRichTextItem hilft Dir weiter
-
Danke, funzt prima!
Jetzt will ich mal hoffen, dass die nun nicht anfangen, plötzlich in ihre Doks ellenlange Bemerkungen zu schreiben.
Aber ich habe mich natürlich an die Testdaten gehalten, welche echt sind und so geheim, dass mein Auftraggeber diese jeden Tag, wenn er das Büro verlässt, löschen tut. Morgens kopiert er diese dann wieder in meine Testumgebung. (Allerdings lässt er immer die erzeugten Druckdokumente bestehen, also Geheimhaltung ausgehebelt! ;D )
-
Mensch .... du sein big brother ....... ;)