1

我成功地使用此处讨论的技术使用 Openoffice 的 ActiveX 创建 pdf 文件(从 doc 文件)。

最近,使用 smae OO 版本(3.3),代码不再起作用,在这一行(请参阅上面链接中的代码):

FilterParams[0] := CreateProperty('FilterName', AnsiString('writer_pdf_Export'));

我得到了 EOLESysError“错误的变量类型”。

你能帮我解决这个问题吗?

4

1 回答 1

0

阅读此问题后,我以这种方式解决了问题:

function CreateProperty(const AName: AnsiString; const AValue: Variant): Variant;
  begin
    Result := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
    Result.Name := AName;
    Result.Value := AValue;
  end;

变成

function CreateProperty(const AName: AnsiString; const AValue: Variant): Variant;
  var
    AVal : Variant;
  begin
    Result := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
    Result.Name := AName;
    AVal := AValue; // this is done to avoid 'Bad Variable Type'
    Result.Value := AVal;
  end;

您也可以通过删除参数来解决constAValue

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;
于 2012-06-01T08:48:21.030 回答