1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
procedure SavePdf(const AFileName: String);
var
AApp, ADeskTop, AUno, ALocale, MySheet, MyBook, MyProp: Variant;
FichierPDF: String;
begin
try
AApp := CreateOleObject('com.sun.star.ServiceManager');
ADeskTop := CreateUnoService('com.sun.star.frame.Desktop');
AUno := CreateUnoService('com.sun.star.frame.DispatchHelper');
ALocale := CreateUnoService('com.sun.star.Lang.Locale');
MyBook := ADesktop.LoadComponentFromURL('file:///' + StringReplace(AFileName , '\', '/',[rfReplaceAll]), '_default', 0, FileProp);
// Activer la première feuille
MySheet := MyBook.getSheets.getByIndex(0);
MyBook.getCurrentController.setActiveSheet(MySheet);
// Change l'extension du nom du fichier en pdf
FichierPDF := StringReplace(AFileName, ExtractFileExt(AFileName), '.pdf', []);
// Propriété pour l'export
MyProp := VarArrayCreate([0, 1], varVariant);
MyProp[0] := AApp.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
MyProp[0].Name := 'URL';
MyProp[0].Value := 'file:///' + StringReplace(FichierPDF , '\', '/',[rfReplaceAll]);
MyProp[1] := AApp.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
MyProp[1].Name := 'FilterName';
MyProp[1].Value := 'calc_pdf_Export';
AUno.executeDispatch(ADesktop.CurrentFrame, '.uno:ExportDirectToPDF', '', 0, MyProp);
MyBook.Close(True);
ADeskTop.Terminate;
except
on E: Exception do
....
end;
MySheet := Unassigned;
MyBook := Unassigned;
AApp := Unassigned;
end; |
Partager