de façon très similaire :)
Here est le tutoriel décrivant toutes les fonctionnalités utilisées pour la configuration du document généré.
Pour l'exemple suivant, j'ai choisi l'agrandissement en fonction de la largeur, la protection par mot de passe et les contrôles de fenêtre cachés. L'exportation est effectuée en mode caché lorsque la fenêtre OpenOffice n'est pas affichée lors de la conversion.
Notez que le code suivant est à nouveau sans traitement des erreurs.
uses
ComObj;
procedure OpenOfficeExportToPDF(const ASourceFileURL: string; const ATargetFileURL: string);
var
StarOffice: Variant;
StarDesktop: Variant;
StarDocument: Variant;
FilterParams: Variant;
ExportParams: Variant;
ExportObject: Variant;
function CreateProperty(const AName: AnsiString; AValue: Variant): Variant;
begin
Result := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
Result.Name := AName;
Result.Value := AValue;
end;
begin
StarOffice := CreateOleObject('com.sun.star.ServiceManager');
StarDesktop := StarOffice.CreateInstance('com.sun.star.frame.Desktop');
FilterParams := VarArrayCreate([0, 0], varVariant);
FilterParams[0] := CreateProperty('Hidden', True);
StarDocument := StarDesktop.LoadComponentFromURL(ASourceFileURL, '_blank', 0, FilterParams);
ExportParams := VarArrayCreate([0, 3], varVariant);
ExportParams[0] := CreateProperty('Magnification', 2);
ExportParams[1] := CreateProperty('EncryptFile', True);
ExportParams[2] := CreateProperty('DocumentOpenPassword', AnsiString('StackOverflow'));
ExportParams[3] := CreateProperty('HideViewerWindowControls', True);
ExportObject := StarOffice.Bridge_GetValueObject;
ExportObject.Set('[]com.sun.star.beans.PropertyValue', ExportParams);
FilterParams := VarArrayCreate([0, 1], varVariant);
FilterParams[0] := CreateProperty('FilterName', AnsiString('writer_pdf_Export'));
FilterParams[1] := CreateProperty('FilterData', ExportObject);
StarDocument.StoreToURL(ATargetFileURL, FilterParams);
StarDocument.Close(True);
StarDesktop.Terminate;
StarDocument := Unassigned;
StarDesktop := Unassigned;
StarOffice := Unassigned;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenOfficeExportToPDF('file:///C:/SourceFile.odt', 'file:///C:/TargetFile.pdf');
end;
Merci: si vous pouvez développer le code, je pense que non seulement moi mais beaucoup de membres de la communauté vont l'apprécier! – LaBracca
De rien, j'ai ajouté quelques paramètres de paramètres d'exportation PDF à l'exemple;) – TLama