Makro Wasserzeichen

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: Makro Wasserzeichen

Beitrag von komma4 »

Hallo Claudia,

A) und B) sind trivial, ich frage mich aber, wie Dein Datumsfeld C) auszulesen ist.
Ein solcher Feldbefehl hat nämlich keinen Namen (mit welchem das Feld identifizierbar wäre).... hast Du auch andere Feldbefehle im Dokument (Seitennummer, etc.), oder kann es vielleicht irgendwie an der Positionierung (Fusszeile, Rahmen) aufgefunden werden?

Vielleicht reicht für C) auch: makeDayCopy
makeDayCopy hat geschrieben:Routine zum Erstellen einer Sicherungskopie des aktuellen Dokuments.

Das Makro ermittelt den Namen und den Speicherort des aktuellen Dokuments. Diese Datei-Adresse wird ergänzt um eine definierte Zeichenkette. Dann wird das Speichern an gleicher Stelle versucht.

Es erscheint keine Meldung über den Ausgang des Versuchs. Im Allgemeinen erscheint aber eine Fehlermeldung, wenn es nicht klappt.

Eingestellt ist ein Unterstrich und das Datum im ISO-Format. Text.odt wird zu Text.odt_20060520.[/[uote]

Hier der erste Teil der "Hausaufgabe":

Code: Alles auswählen

' 2008-10-27
' Drucken, Wasserzeichen, Sicherungskopie
Sub de20479

' A) Dokument drucken
ThisComponent.print( Array() )

' B) Wasserzeichen auf alle Seiten
' Bilddateien der Wasserzeichen
sHochDatei = "/zentrale/firma/images/Entwurf-A4-hoch.png"
sQuerDatei = "/zentrale/firma/images/Entwurf-A4-quer.png"
' umwandeln in URL
With GlobalScope.BasicLibraries
If ( Not .isLibraryLoaded("Tools") ) Then
  .LoadLibrary( "Tools" )
End If
End With 

sWZhochURL = ConvertToURL( sHochDatei ) 
sWZquerURL = ConvertToURL( sQuerDatei ) 


oDokPageStyles = _
ThisComponent.getStyleFamilies().getByName( "PageStyles" )

for i = 0 to oDokPageStyles.Count - 1
   oStyle = oDokPageStyles.getByIndex( i )
   if oStyle.isInUse() then
      if oStyle.isLandscape() Then
         oStyle.BackGraphicURL = sWZquerURL
      else 	
         oStyle.BackGraphicURL = sWZhochURL   
      end if      
   end if
next

End Sub
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)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makro Wasserzeichen

Beitrag von komma4 »

Claudia123 hat geschrieben:mit welchem Befehl kann ich ein Dokument am Ende eines Makros in ein PDF umwandeln
Standardfrage: 409 Treffer der Suchfunktion hier im Forum, bei Suche nach "PDF exportieren" (im dritten Posting fand ich ein Makrobeispiel)

ThisComponent.dispose() schliesst Dir das aktuelle Dokument ohne Nachfrage (und ohne weiteres Sichern)
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)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makro Wasserzeichen

Beitrag von komma4 »

Claudia123 hat geschrieben:Was mache ich da falsch ?
"Eigentlich" nicht.

Zeige uns doch mal Deinen Code... ein ThisComponent.print( Array() ) sollte drucken.
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)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makro Wasserzeichen

Beitrag von komma4 »

nachgetestet: das ist ein timing-Problem. Wenn der zweite .print()-Befehl zu schnell nach dem ersten kommt, wird er nicht ausgeführt.
Ich habe nach dem Drucken jeweils ein WAIT 3000 eingefügt - so komme ich zu zwei Ausdrucken. Musste mal probieren, ob bei Dir auch 3 Sekunden ausreichen...
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)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makro Wasserzeichen

Beitrag von komma4 »

"Im Prinzip, ja."
(schätze mal, dass Du oFrame nicht gesetzt hast)

Sieh' Dir doch mal an: DannyB Writer Examples [CodeSnippets] und PDF Exportoptionen [Basic]
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)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makro Wasserzeichen

Beitrag von komma4 »

bei den dispatcher calls ist oFrame = ThisComponent.CurrentController.Frame (Objekt zum Zugriff auf den "Rahmen", in welchem sich Dein Dokument befindet).

Bei Deinem Codestück fehlt der Pfadtrenner vor dem Dateinamen, und ...

Code: Alles auswählen

oDoc.storeToURL( ConvertToURL( cFolder & "\" & "Test1.pdf") ,_
Array( _
MakePropertyValue( "FilterName", "writer_pdf_Export" ) ) 
... und anscheinend die Function MakePropertyValue() aus DannyBs Toolsammlung (wenn die Fehlermeldung auf der Zeile storeToURL() steht. Ansonsten sollte es passen
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)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makro Wasserzeichen

Beitrag von komma4 »

Meine Glaskugel ist kaputt: bitte, stelle die Codezeilen mit ihrem Zusammenhang hier da, verwende die CODE tags (Code im Edit-Feld markieren, die Schaltfläche am oberen Rand drücken).

Im ersten Fall kann ich nur raten: wie ist oDisp. definiert und gesetzt?
Im zweiten Fall: wo kommt die Fehlermeldung? Hast Du die Function eingebunden? Wie?
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)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makro Wasserzeichen

Beitrag von komma4 »

Wo ist die FUNCTION MakePropertyValue definiert?

setze für eine bessere Lesbarkeit Deinen Code doch bitte in die entsprechenden tags
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)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makro Wasserzeichen

Beitrag von komma4 »

Du rufst die FUNCTION MakrPropertyValue()von DannyB auf... die musst Du in Deinem Code dann auch einbauen...
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)
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Makro Wasserzeichen

Beitrag von turtle47 »

Hi Claudia,

ich habe jetzt nicht alles gelesen was Du schon alles gemacht hast, aber folgender Code läuft hier einwandfrei:

Code: Alles auswählen

sub ExportPDF
dim argsF(1) as new com.sun.star.beans.PropertyValue
argsF(0).Name  = "PageRange"
argsF(0).Value = "1" 'Zwei Seiten 1-2 ; Drei Seiten 1-3
argsF(1).name  = "CompressMode"
argsF(1).value  = 1
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name  = "FilterName"
args1(0).Value = "writer_pdf_Export"
args1(1).name  = "Overwrite"
args1(1).value = True
args1(2).name  = "FilterData"
args1(2).value = argsF()
ThisComponent.storeToURL(ConvertToUrl("C:\test.pdf"), args1())'Achtung: Pfad anpassen
end sub 
Viel Erfolg.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makro Wasserzeichen

Beitrag von komma4 »

Claudia123 hat geschrieben:geht es um diesen Zeile ????
Ja.
Du nutzt da einen Funktionsaufruf - also musst Du die Funktion auch codieren (bzw. von DannyBs Beispiel kopieren)
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)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makro Wasserzeichen

Beitrag von komma4 »

Die mitgelieferte Bibliothek TOOLS hat Routinen zumrBearbeitung von URLs, auch eine zum Extrahieren des Dateinamens (ohne Erweiterung):
siehe
FileNameOutOfPath()
GetFileNameWithoutExtension()



Nutze meine Erweiterung BTL2 - BasicTextListe2 zum leichteren Lesen
BTL2 hat geschrieben:Gibt alle vorhandenen BASIC-Module aus allen installierten Bibliotheken in ein Writer-Dokument aus.
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)
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Makro Wasserzeichen

Beitrag von turtle47 »

Kurz und schmerzlos:

Code: Alles auswählen

Sub PDF_Export1
	GlobalScope.BasicLibraries.LoadLibrary("Tools")
	sURL = ConvertFromURL(ThisComponent.getURL())
	URL1 = FilenameOutOfPath(sURL )
	Extr_Filename = GetFileNameWithoutExtension(URL1)
	dim argsF(1) as new com.sun.star.beans.PropertyValue
	argsF(0).Name  = "PageRange"
	argsF(0).Value = "1" 'Zwei Seiten 1-2 ; Drei Seiten 1-3
	argsF(1).name  = "CompressMode"
	argsF(1).value  = 1
	dim args1(2) as new com.sun.star.beans.PropertyValue
	args1(0).Name  = "FilterName"
	args1(0).Value = "writer_pdf_Export"
	args1(1).name  = "Overwrite"
	args1(1).value = True
	args1(2).name  = "FilterData"
	args1(2).value = argsF()
	ThisComponent.storeToURL(ConvertToUrl("C:\" & Extr_Filename & ".pdf"), args1())'Achtung: Pfad anpassen
End Sub
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Makro Wasserzeichen

Beitrag von turtle47 »

Claudia123 hat geschrieben:Kann das pdf-Dokument auch automatisch in dem Ordner abgelegt werden in dem sich die odt.-datei befindet welche ins pdf. Format abgespeichert wird
Ja, mit folgendem Code. Aber ohne Überprüfung, ob ein solcher Dokumentenname schon vorhanden ist!!!
Ob das sinnvoll ist?

Code: Alles auswählen

Sub PDF_Store_Same_Folder
	GlobalScope.BasicLibraries.LoadLibrary("Tools")
	sURL = ConvertFromURL(ThisComponent.getURL())
	URL1 = FilenameOutOfPath(sURL)
	PathDoc = RTrimStr(sURL,URL1)
	Extr_Filename = GetFileNameWithoutExtension(URL1)
	dim argsF(1) as new com.sun.star.beans.PropertyValue
	argsF(0).Name  = "PageRange"
	argsF(0).Value = "1" 'Zwei Seiten 1-2 ; Drei Seiten 1-3
	argsF(1).name  = "CompressMode"
	argsF(1).value  = 1
	dim args1(2) as new com.sun.star.beans.PropertyValue
	args1(0).Name  = "FilterName"
	args1(0).Value = "writer_pdf_Export"
	args1(1).name  = "Overwrite"
	args1(1).value = True
	args1(2).name  = "FilterData"
	args1(2).value = argsF()
	ThisComponent.storeToURL(ConvertToUrl (PathDoc & Extr_Filename & ".pdf"), args1())
End Sub
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Antworten