Seite 1 von 1
Re: Makro Wasserzeichen
Verfasst: Mo, 27.10.2008 17:38
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
Re: Makro Wasserzeichen
Verfasst: Mo, 27.10.2008 22:49
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)
Re: Makro Wasserzeichen
Verfasst: Di, 28.10.2008 11:39
von komma4
Claudia123 hat geschrieben:Was mache ich da falsch ?
"Eigentlich" nicht.
Zeige uns doch mal Deinen Code... ein
ThisComponent.print( Array() ) sollte drucken.
Re: Makro Wasserzeichen
Verfasst: Di, 28.10.2008 13:57
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...
Re: Makro Wasserzeichen
Verfasst: Di, 28.10.2008 23:14
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]
Re: Makro Wasserzeichen
Verfasst: Mi, 29.10.2008 16:38
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
Re: Makro Wasserzeichen
Verfasst: Mi, 29.10.2008 21:32
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?
Re: Makro Wasserzeichen
Verfasst: Do, 30.10.2008 09:47
von komma4
Wo ist die
FUNCTION MakePropertyValue definiert?
setze für eine bessere Lesbarkeit Deinen Code doch bitte
in die entsprechenden tags
Re: Makro Wasserzeichen
Verfasst: Do, 30.10.2008 11:34
von komma4
Du rufst die FUNCTION MakrPropertyValue()von DannyB auf... die musst Du in Deinem Code dann auch einbauen...
Re: Makro Wasserzeichen
Verfasst: Do, 30.10.2008 21:13
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
Re: Makro Wasserzeichen
Verfasst: Do, 30.10.2008 23:19
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)
Re: Makro Wasserzeichen
Verfasst: Fr, 31.10.2008 09:53
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.
Re: Makro Wasserzeichen
Verfasst: Fr, 31.10.2008 16:37
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
Re: Makro Wasserzeichen
Verfasst: Sa, 01.11.2008 07:39
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