Rysunek utworzony w OO Calc kopiuję do OO Draw następnie zapisuję jako PDF. Jest prawie dobrze -- prawie bo MediaBox, czyli najmniejszy prostokąt zawierający rysunek jest zły -- OO Draw zapisuje rysunek jak całą stronę. Są dwa rozwiązania:
Rysunek zapisany w OO Draw przyciąć używając do tego pdfcrop
.
Ten pdfcrop
to skrypt w Perlu, dostępny w TeXlive i MikTeX.
Zamiast do OO Draw skopiować (poprzez kopiuj/wklej) do Inkscape. Teraz zaznaczyć obiekt (with the rubber band selector) i następnie kliknąć w Właściwości Dokumentu → Dopasuj do ramki zaznaczenia. Teraz export do PDF da w rezultacie rysunek z prawidłowo przyciętym MediaBoxem. Por. też tutaj.
Próbowałem kopiuj/wklej do Infranview ale wynikowy plik PDF jest złej jakości (fonty są zamieniane na bitmapy)... Być może można to dokonfigurować.
Jak zamienić wiele plików w formacie MS Powerpoint na dokumenty PDF
przy pomocy programu OpenOffice ale z poziomu wiersza poleceń
opisał Bob DuCharme w tekście
Moving to OpenOffice:
Batch Converting Legacy Documents. W skrócie postępuje się
następująco: w OO należy przejść do okna dialogowego
Narzędzia->Makra->Zarządzaj Makrami. Następnie
utworzyć moduł, np. MyConversion
i wpisać do okienka następującą treść :
' BASIC, see: http://www.xml.com/pub/a/2006/01/11/from-microsoft-to-openoffice.html ' Based on code from http://www.oooforum.org/forum/viewtopic.phtml?t=3772 ' Save document as an Acrobat PDF file. Sub SaveAsPDF( cFile ) cURL = ConvertToURL( cFile ) ' Open the document. Just blindly assume that the document ' is of a type that OOo will correctly recognize and open ' without specifying an import filter. oDoc = StarDesktop.loadComponentFromURL( cURL, "_blank", 0, _ Array(MakePropertyValue( "Hidden", True ),)) cFile = Left( cFile, Len( cFile ) - 4 ) + ".pdf" cURL = ConvertToURL( cFile ) ' Save the document using a filter. oDoc.storeToURL( cURL, Array(_ MakePropertyValue( "FilterName", "writer_pdf_Export" ),) oDoc.close( True ) End Sub ' Save document as a Microsoft Word file. Sub SaveAsDoc( cFile ) ' mostly a copy of SaveAsPDF cURL = ConvertToURL( cFile ) oDoc = StarDesktop.loadComponentFromURL( cURL, "_blank", 0, (_ Array(MakePropertyValue( "Hidden", True ),)) cFile = Left( cFile, Len( cFile ) - 4 ) + ".doc" cURL = ConvertToURL( cFile ) oDoc.storeToURL( cURL, Array(_ MakePropertyValue( "FilterName", "MS WinWord 6.0" ),) oDoc.close( True ) End Sub ' Save document as an OpenOffice 2 file. Sub SaveAsOOO( cFile ) ' mostly a copy of SaveAsPDF. Save as an OpenOffice file. cURL = ConvertToURL( cFile ) oDoc = StarDesktop.loadComponentFromURL( cURL, "_blank", 0, _ Array(MakePropertyValue( "Hidden", True ),)) ' Set output file extension based on lower-case ' version of input extension. Select Case LCase(Right(cFile,3)) Case "ppt" ' PowerPoint file. cFileExt = "odp" Case "doc" ' Word file. cFileExt = "odt" Case "xls" ' Excel file. cFileExt = "ods" Case Else cFileExt = "xxx" End Select cFile = Left( cFile, Len( cFile ) - 3 ) + cFileExt cURL = ConvertToURL( cFile ) oDoc.storeAsURL( cURL, Array() ) oDoc.close( True ) 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
Uruchamia się to następująco (Linux):
ooffice -invisible "macro:///Standard.MyConversion.SaveAsPDF($PWD/plik.ppt)"
albo via prosty jednoargumentowy skrypt oo2pdf
:
#!/bin/bash # Konwersja do formatu PDF echo "Konwertuję $1..." ooffice -invisible "macro:///Standard.MyConversion.SaveAsPDF($PWD/$1)"
Koniecznie trzeba podać pełną ścieżkę
do pliku (stąd zmienna PWD
) bo inaczej zgłoszony zostanie błąd.
W MS Windows też trzeba podać pełną nazwę, co nie do końca może być
wygodne. Ale to już nie moje zmartwienie. Makra działają nie tylko
dla plików .ppt
,
ale też .doc
i .odt/odp
.
Na ww. stronie jest też podana następująca zgrabna pętla zamieniająca wszystkie pliki (w tym przypadku .ppt) w katalogu bieżącym i jego podkatalogach:
for i in $(find ./ -name "*.ppt"); do oo2pdf $i ; done
Być może to find ./ -name
jest nawet przesadne i wystarczy
zwykłe for i in *.ppt; do
.