WRITER: "Abschrift drucken"

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: WRITER: "Abschrift drucken"

Beitrag von komma4 »

Das DIM gehört an den Anfang - und dann die .print() Zeilen austauschen

Wenn Du Meldungen loggen willst, dann starte soffice von der Kommandozeile und leite um

soffice > log.txt


Es sei noch angemerkt: hier funktioniert das Makro (mit einem PDF-Drucker), eingerichtet über Vorlage, mit Symbolleiste ohne Probleme.

Versuche es doch mal mit einem neuen Benutzer (oder: gesichertem und dann gelöschtem OOo-Benutzerverzeichnis)
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
peter007
*
Beiträge: 19
Registriert: Mo, 13.07.2015 22:15

Re: WRITER: "Abschrift drucken"

Beitrag von peter007 »

ok, ich bin nun endlich etwas weiter.

Ein Fehler war, dass im Skript folgende Zeile auskommentiert war:

Code: Alles auswählen

'frame.setPropertyValue("FrameStyleName","_ABSCHRIFT")
Ich habe also das ` am Anfang entfernt, nun wird der Rahmen mit Abschrift gedruckt.

Allerdings zerschießt die Zeile

Code: Alles auswählen

dok.dispose()
am Ende den Writer, d.h. wenn ich auskommentiere, bleibt OO zwar offen, der Aufdruck "Abschrift" wird aber (natürlich) auch nicht entfernt. Eine Fehler wird hier aber nicht geloggt.
peter007
*
Beiträge: 19
Registriert: Mo, 13.07.2015 22:15

Re: WRITER: "Abschrift drucken"

Beitrag von peter007 »

Habe gerade über Tante Google gelernt :), dass die Python-Anweisung dok.dispose das Dokument schließt, d.h. der Writer schmiert nicht ab, sondern wird gewollt geschlossen.

So wie ich als Skript-Unkundiger das verstehe, müsste doch also zum Schluss "nur noch" die Anweisung stehen, dass durch das Skript erfolgte Änderungen rückgängig gemacht bzw. nicht gespeichert werden, das Dokument aber geöffnet bleibt.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: WRITER: "Abschrift drucken"

Beitrag von komma4 »

dok.dispose() ist eine StarBasic Anweisung
SDK /com/sun/star/lang/XComponent.html#dispose hat geschrieben:The owner of an object calls this method to explicitly free all resources kept by this object and thus break cyclic references.
Die Funktion entspricht einem Datei>Schliessen>[Nein zum Speichern] - also genau das, was Du Dir vorstellst.

Zu einer Exception kann es dann (eigentlich) nur kommen, wenn der Druckauftrag noch nicht fertig ist.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Karolus
********
Beiträge: 7533
Registriert: Mo, 02.01.2006 19:48

Re: WRITER: "Abschrift drucken"

Beitrag von Karolus »

komma4 hat geschrieben:dok.dispose() ist eine StarBasic Anweisung
SDK /com/sun/star/lang/XComponent.html#dispose hat geschrieben:The owner of an object calls this method to explicitly free all resources kept by this object and thus break cyclic references.
Die Funktion entspricht einem Datei>Schliessen>[Nein zum Speichern] - also genau das, was Du Dir vorstellst.
.dispose ist eine Api-methode und sowohl aus Basic als auch aus Python aufrufbar.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: WRITER: "Abschrift drucken"

Beitrag von komma4 »

Ja :oops:

Siehst Du, was hier noch schief laufen könnte?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
peter007
*
Beiträge: 19
Registriert: Mo, 13.07.2015 22:15

Re: WRITER: "Abschrift drucken"

Beitrag von peter007 »

komma4 hat geschrieben:
Die Funktion entspricht einem Datei>Schliessen>[Nein zum Speichern] - also genau das, was Du Dir vorstellst.



Da haben wir uns vielleicht falsch verstanden: das Dokument soll geöffnet bleiben und der Abschriftenvermerk nur für den Druck eingesetzt und dann wieder aus dem (noch geöffneten) Dokument gelöscht werden.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: WRITER: "Abschrift drucken"

Beitrag von komma4 »

peter007 hat geschrieben:das Dokument soll geöffnet bleiben und der Abschriftenvermerk nur für den Druck eingesetzt und dann wieder aus dem (noch geöffneten) Dokument gelöscht werden.

Ok, habe ich falsch verstanden

neue Version:

Code: Alles auswählen

SUB de66021
' 20150713
' Erzeugen eines Textrahmens mit Inhalt "ABSCHRIFT"
' Ankern des Rahmens an jeder Seite des Dokuments
' Drucken des Dokuments, dann verwerfen der Änderungen
' 20150716
' Rücknahme der Änderung, Dokument nicht schliessen

' 20150715
' PrintOpts
DIM PrintOpts(0) AS NEW com.sun.star.beans.PropertyValue
PrintOpts(0).Name = "Wait"
PrintOpts(0).Value = True

dok = ThisComponent

' der Rahmen
frame = dok.createInstance("com.sun.star.text.TextFrame")
' interner Name
frame.setName("Abschrift")
' Verankern an der Seite
frame.AnchorType = com.sun.star.text.TextContentAnchorType.AT_PAGE
frame.attach(dok.CurrentController.ViewCursor)
' Übernahme eines Stils aus den Rahmen-Vorlagen des Dokuments/der Vorlage
frame.setPropertyValue("FrameStyleName","_ABSCHRIFT")
' schreiben des Inhalts
cursor = frame.createTextCursor()
frame.insertString(cursor, "Abschrift!", True)
cursor.gotoStart(FALSE) 
cursor.gotoEndOfParagraph(TRUE)
' Drucken des Dokuments
dok.print(PrintOpts) 
' Rücknahme der Textbox 
frame.dispose()
' "Keine Änderungen am Dokument"
dok.Modified = False

END SUB

Klappt es damit?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
peter007
*
Beiträge: 19
Registriert: Mo, 13.07.2015 22:15

Re: WRITER: "Abschrift drucken"

Beitrag von peter007 »

Nein, leider wieder nicht. Es erscheint folgender Fehler:
1.jpg
1.jpg (34.34 KiB) 6406 mal betrachtet
Mit dem folgenden Skript wird zwar der Abschriftenrahmen eingefügt, aber nicht mehr gelöscht:

Code: Alles auswählen

SUB Abschriftendruck
' 20150713
' Erzeugen eines Textrahmens mit Inhalt "ABSCHRIFT"
' Drucken des Dokuments, dann verwerfen der Änderungen


dok = ThisComponent

' Drucken des Originals
dok.print(Array())

' Rahmen
frame = dok.createInstance("com.sun.star.text.TextFrame")
' interner Name
frame.setName("Abschrift")
' Übernahme eines Stils aus den Rahmen-Vorlagen des Dokuments/der Vorlage
frame.setPropertyValue("FrameStyleName","_ABSCHRIFT")
' Verankern an der Seite
frame.AnchorType = com.sun.star.text.TextContentAnchorType.AT_PAGE
frame.attach(dok.CurrentController.ViewCursor)
' schreiben des Inhalts
cursor = frame.createTextCursor()
frame.insertString(cursor, "Abschrift", True)
' Drucken des Dokuments
dok.print(Array())
' Verwerfen der Änderungen
'dok.dispose()

END SUB

So langsam verzweifle ich :? :? :?
peter007
*
Beiträge: 19
Registriert: Mo, 13.07.2015 22:15

Re: WRITER: "Abschrift drucken"

Beitrag von peter007 »

Keiner mehr eine Idee?
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: WRITER: "Abschrift drucken"

Beitrag von komma4 »

Zum Verwerfen des Rahmens frame.dispose() verwenden?!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
peter007
*
Beiträge: 19
Registriert: Mo, 13.07.2015 22:15

Re: WRITER: "Abschrift drucken"

Beitrag von peter007 »

Hat leider auch nichts geändert.

Da wir hier momentan nicht weiterkommen: es ist von Anfang an so, dass der Rahmen in einer Breite von 0,57 cm und mit automatischer Höhe eingefügt wird. Das Ganze sieht dann so aus, obwohl ich in der Rahmenvorlage als feste Breite 4 cm und feste Höhe 0,8 cm vergeben habe:
Dateianhänge
Unbenannt.jpg
Unbenannt.jpg (62.89 KiB) 6329 mal betrachtet
peter007
*
Beiträge: 19
Registriert: Mo, 13.07.2015 22:15

Re: WRITER: "Abschrift drucken"

Beitrag von peter007 »

Eine Lösung ist da !

Ich habe auf OO 3.4.0 "downgegraded und, siehe da, der Abschriftendruck (und das anschließende automatische Löschen des Rahmens im Dokument) lüppt plötzlich.

Es muss also vom Versionssprung von OO 3 auf 4 irgend etwas an der Interpretation der Basic-Befehle geändert worden sein. Sei's drum, wir werden erst mal die 3er Version nehmen, da die für uns wichtigen Funktionen dort auch enthalten zu sein scheinen.

Danke an alle, die geholfen haben !
Dateianhänge
11.jpg
11.jpg (6.31 KiB) 6312 mal betrachtet
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: WRITER: "Abschrift drucken"

Beitrag von komma4 »

Ich habe den geposteten Code hier mit AOO 4.1.1 erfolgreich getestet.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
peter007
*
Beiträge: 19
Registriert: Mo, 13.07.2015 22:15

Re: WRITER: "Abschrift drucken"

Beitrag von peter007 »

Hm, komisch, kannst Du Dir einen Grund vorstellen, warum das bei mir erst nach dem Downgrade lief?
Antworten