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

Odpovedet emailem