Hallo
In deze post plaats ik het resultaat van mijn eigen zoeken. Het is nog wel wat rommelig om dat ik nog niet geheel tevreden ben. In de eerste sub zit mogelijk ook de oplossing over het ontleden van een struc die een datum bevat.
Code: Selecteer alles
sub onSaveDocument
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
dim oDoc
dim oCreationDate
dim oDocumentProperties
oDoc= thiscomponent
oDocumentProperties=oDoc.DocumentProperties 'Here we can find the standard properties
oCreationDate=oDocumentProperties.CreationDate ' We want have the creation date
'Format takes carefor double digit in month and day. I use underscore
dim sFileName ' we create the filename
sFileName = oDocumentProperties.getUserDefinedProperties.Aan ' Userdefined names are deeper
sFileName =sFileName & format(oCreationDate.year,"_0000"
sFileName =sFileName & format(oCreationDate.month,"_00")
sFileName =sFileName & format(oCreationDate.day,"_00")
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(4) as new com.sun.star.beans.PropertyValue
'args1(0).Name = "URL"
'args1(0).Value = "file:///home/romgro/Documenten/opof/data/writer/Hulpprogramma/savefilename/goedgedaan.pdf"
args1(1).Name = "FilterName"
args1(1).Value = "writer_pdf_Export"
args1(2).Name = "FilterData"
args1(3).Name = "SuggestedSaveAsDir"
args1(3).Value = "file:///home/romgro/Documenten/opof/data/writer/Hulpprogramma/savefilename/"
args1(4).Name = "SuggestedSaveAsName"
args1(4).Value = "Warempel01"
dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args1())
end sub
Dit deel onderzoekt allerlei services die gebruikt kunnen worden. Dit is om inzicht te krijgen in de verschillende services
Code: Selecteer alles
Sub Savetopdfromke
'On error resume next
oDoc = ThisComponent
oTFS = oDoc.getTextFields
enum = oTFS.createEnumeration
While enum.hasMoreElements
oTF = enum.nextElement
if oTF.supportsService("com.sun.star.text.textfield.docinfo.CreateAuthor") then
print "auteur"
elseif oTF.supportsService("com.sun.star.text.TextField.InputUser") then
print oTF.Content
print Otf.Anchor.string
elseif oTF.supportsService("com.sun.star.text.TextField.User") then
'print oTF.Content
print Otf.Anchor.string
elseif oTF.supportsService("com.sun.star.text.TextField.DocInfo.Description") then
print oTF.Content
print Otf.Anchor.string
print Oft.CurrentPresentation
elseif oTF.supportsService("com.sun.star.text.TextField.DocInfo.Custom") then
'mri OTF
print oTF.Name
print Otf.Anchor.string
print Otf.CurrentPresentation
elseif oTF.supportsService("com.sun.star.text.TextField.Database") then
print oTF.Content
print Otf.CurrentPresentation
print Otf.Anchor.string
else
mri OTF
end if
Wend
end sub
Uit mijn bijdragen blijkt dat er mogelijk twee benaderings methoden zijn. Je kunt gebruik maken van textfields en op die manier letterlijk de tekst doorlopen. Het kan zijn dat een textfield heel vaak gebruikt en dan moet dat geheel door gewerkt worden. Documentinfo maakt voorzover ik het nu begrijp gebruik van de zelfde basis gegevens maar die staan slechts een enkele keer benoemd. Het is niet eens nodig dat ze in de tekst staan.
Sjabloon
Gezien het feit dat het in principe een sjabloon is vraag ik mij ook af hoe dat gebruikt kan worden. Ik heb nog gekeken naar variabelen in combinatie met een inputveld. Ik het veld al wel vinden met de sub voor veel services maar kan het nog niet vinden als ik zoek op naam. Het eind resultaat is dan ook afhankelijk hoe alles gegenereerd word.
Romke