On 4/2/07, Daniel Hrbac <[EMAIL PROTECTED]> wrote:
Dobrý den,
já používám na konverzi do PDF jednoduché makro a jednoduchý skript v shellu ...
[EMAIL PROTECTED]:~> cat ~/bin/ooo2pdf.sh
#!/bin/bash
if [ "$1" = "" ]; then exit; fi
fullpath=`cd \`dirname "$1"\` ; echo "\`pwd\`/\`basename "$1"\`"`
openoffice.org-1.9 -invisible -headless -norestore
"macro:///Standard.Module1.ConvertToPDF($fullpath)"
[EMAIL PROTECTED]:~>
... a funguje takto ...
[EMAIL PROTECTED]:~/Documents> ooo2pdf.sh ./stehovani.odt
[EMAIL PROTECTED]:~/Documents> ls stehovani.*
stehovani.odt stehovani.pdf
[EMAIL PROTECTED]:~/Documents>
... makro je přiloženo na konci mailu. Možná budou rozházené konce
řádků, ... ale to si dokážete opravit. Toto makro načte jakýkoliv
formát, který je podporovaný OpenOffice.org a vytvoří z něj PDF. Když
si exportní filtr změníte na Word, nebudou se dokumenty konvertovat do
PDF, ale do DOC. Seznam exportních filtrů a jejich uhozených názvů je
v Developer's Guide. Jak je patrné z shellového skriptu, makro patří
do Standard.Module1. Další varianta je přidání druhého parametru a
volba exportního filtru z příkazové řádky.
No a jak na celou adresářovou strukturu?
find -name '*.odt' -exec ~/bin/ooo2pdf.sh {} \;
Po mírných úpravách docílíte kýženého výsledku.
<-- MAKRO -->
Function RightDotPos( cFile ) As Integer
Dim iPos As Integer
iPos = Len( cFile )
Do
If Mid( cFile, iPos, 1 ) = "." Then
Goto GotIt
End If
iPos = iPos - 1
Loop While iPos > 0
GotIt:
RightDotPos() = iPos
End Function
Sub ConvertToPDF( cFile )
Dim oDoc As Object
Dim cFilter As String
On Error Goto Leave
oDoc = StarDesktop.loadComponentFromURL( ConvertToURL( cFile ),
"_blank", 0, Array(_
MakePropertyValue( "Hidden", True ),_
MakePropertyValue( "UpdateDocMode",
com.sun.star.document.UpdateDocMode.QUIET_UPDATE ),_
) )
If oDoc.SupportsService( "com.sun.star.text.TextDocument" ) Then
cFilter = "writer_pdf_Export"
ElseIf oDoc.SupportsService( "com.sun.star.sheet.SpreadsheetDocument" )
Then
cFilter = "calc_pdf_Export"
ElseIf oDoc.SupportsService(
"com.sun.star.presentation.PresentationDocument" ) Then
cFilter = "impress_pdf_Export"
ElseIf oDoc.SupportsService( "com.sun.star.draw.DrawDocument" ) Then
cFilter = "draw_pdf_Export"
ElseIf oDoc.SupportsService( "com.sun.star.text.WebDocument" ) Then
cFilter = "writer_pdf_Export"
Else
oDoc.Close( True )
Goto Leave
EndIf
Dim RDP As Integer
RDP = RightDotPos( cFile )
If RDP = 0 Then
oDoc.Close( True )
Goto Leave
End If
cFile = Left( cFile, RDP - 1 ) + ".pdf"
oDoc.storeToURL( ConvertToURL( cFile ), _
Array(_
MakePropertyValue( "FilterName", cFilter ),_
) )
oDoc.Close( True )
Leave:
End Sub
Function MakePropertyValue( Optional cName As String, Optional uValue
) As com.sun.star.beans.PropertyValue
Dim oPropertyValue As New com.sun.star.beans.PropertyValue
If Not IsMissing( cName ) Then
oPropertyValue.Name = cName
EndIf
If Not IsMissing( uValue ) Then
oPropertyValue.Value = uValue
EndIf
MakePropertyValue() = oPropertyValue
End Function
<-- MAKRO -->
--
Robert Vojta