Makro Wasserzeichen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Makro Wasserzeichen

Re: Makro Wasserzeichen

von turtle47 » Sa, 01.11.2008 07:39

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

Re: Makro Wasserzeichen

von turtle47 » Fr, 31.10.2008 16:37

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

von komma4 » Fr, 31.10.2008 09:53

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

von komma4 » Do, 30.10.2008 23:19

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

von turtle47 » Do, 30.10.2008 21:13

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

von komma4 » Do, 30.10.2008 11:34

Du rufst die FUNCTION MakrPropertyValue()von DannyB auf... die musst Du in Deinem Code dann auch einbauen...

Re: Makro Wasserzeichen

von komma4 » Do, 30.10.2008 09:47

Wo ist die FUNCTION MakePropertyValue definiert?

setze für eine bessere Lesbarkeit Deinen Code doch bitte in die entsprechenden tags

Re: Makro Wasserzeichen

von komma4 » Mi, 29.10.2008 21:32

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

von komma4 » Mi, 29.10.2008 16:38

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

von komma4 » Di, 28.10.2008 23:14

"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

von komma4 » Di, 28.10.2008 13:57

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

von komma4 » Di, 28.10.2008 11:39

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

von komma4 » Mo, 27.10.2008 22:49

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

von komma4 » Mo, 27.10.2008 17:38

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

Nach oben