从OpenOffice保存为pdf [英] Saving to pdf from OpenOffice

查看:165
本文介绍了从OpenOffice保存为pdf的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于我刚刚问这个问题并得到一个非常有用的答复我不知道是否有人已经使用在Open Office中内置的documentTopdf例程的代码将odt,doc,docx文件保存为pdf。

Since I just asked this question and got a very useful reply I wonder if anyone has already the code for using the documentTopdf routine built in in Open Office for saving odt, doc, docx files to pdf.

这里有C#示例,因为在Delphi中直接使用它对于许多用户来说是很好的。

Here there is the c# example anyway since having it in Delphi direcly would be great for many users.

推荐答案

非常相似:)


这里是描述用于生成文档配置的所有功能的教程。


对于以下示例,我选择了适合宽度放大,密码保护和隐藏窗口控件。当OpenOffice窗口在转换时未显示时,导出将以隐藏模式完成。


请注意,以下代码再次无错误处理。

Very similarly :)

Here is the tutorial describing all features used for configuration of the generated document.

For the following example I chose fit to width magnification, password protection and hidden window controls. The export is done in hidden mode when the OpenOffice window isn't shown at conversion.

Note that the following code is again without error handling.

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;

这篇关于从OpenOffice保存为pdf的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆