Alexander Thurgood<alex.thurgood@gmail.com> writes:
Hi Lee,
Now I would like to make it so that I can press a button and be
presented with a form or the like that lets me fill in the variable
data, inserts the data at the appropriate places into the document,
saves the document to a file I specify and exports the document as PDF
with a password for access rights to the PDF file set.
How do I do that? Does it take some kind of advanced programming?
If you don't want to go down the mailmerge route, then the answer is
yes, you will need to be able to program it in Basic or some other
scripting language that LibO knows how to interpret (Javascript or
Python for example) and can bind with UNO dialog components.
Well, I'm thinking about using it, I just don't see yet how I could make
it really useful.
Really, the simplest way would be to use a Calc spreadsheet to hold the
data, and then bind those fields to your text document.
That is exactly what I'm trying to avoid. The workflow is like:
while(webpages) {
check out the web page
decide whether to send my document or not
if(I send it) {
create a new directory to save the document in // this is already
// automated by a
// shell script
paste a unique reference number generated by the shell script into
the document
copy and paste some data like a company name and address and a
persons name into the document
adjust the salutation as needed
go to another place in the document and enter the companys name and
city
save the document in the directory created by the shell script with
a meaningful file name (like "<documentname>-<company>")
export the document as pdf with a permissions password set
create an email by editing an email template appropriately to send
the pdf file by email
save the webpage in the same directory as the LO document
make a note in a text file that the document was sent in response to
the particular web page
}
}
I can hear this crying for (at least some more) automation from 10 miles
away ...
It is possible to gather the data inserted into the document in
advance. The problem is that when I do that, I think it would become
rather difficult to keep track of what happens. And I need to keep track
of what happens because I have to do some of the steps manually because
it would be too much effort to automate all of them.
Perhaps there is way to make things easier that I just don't see? I'm
free to change the workflow in whatever way I like, only the outcome
needs to be the same.
Even here though, if you want it to automatically export your filled
in text document as a password protected PDF, you will need to learn
some kind of programming to automate it.
Hm, I think someone here posted about commandline options for converting
to PDF. Perhaps I can use those ...
ther is a Basic example for a macro to export to PDF
its not clean code, but it should work:
sub export_to_PDF
rem define variables
dim document as object
dim dispatcher as object
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(3) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///G:/test/test.pdf" ' you can use a variable to hold the path
args1(1).Name = "FilterName"
args1(1).Value = "calc_pdf_Export"
args1(2).Name = "FilterData"
args1(2).Value = Array(Array("UseLosslessCompression",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("Quality",0,90,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("ReduceImageResolution",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("MaxImageResolution",0,300,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("UseTaggedPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("ExportNotes",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("UseTransitionEffects",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("IsSkipEmptyPages",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("FormsType",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("Selection",0,com.sun.star.beans.PropertyState.DIRECT_VALUE))
args1(3).Name = "SelectionOnly"
args1(3).Value = true
dispatcher.executeDispatch(document, ".uno:||ExportDirectToPDF||", "", 1, args1())
end sub
if you want I can translate this code in clean code without using the dispatcher
regards frieder