☆Docuworks SDKを利用する。
Fuji XeroxのDocuworksには、Docuworksと連携するための開発キットが公開されています。その内容は、各APIの細かな解説と簡単なサンプルコードがあり、とても丁寧にわかりやすく作られています。しかしながら、当然のようにC++向けとなっており、Delphiからそのまま使うことはできません。
とりあえず、サンプルにある「イメージファイルからDocuWorks文書を作成する」をDelphiで試してみました。(ヘッダーを全てDelphi向けに作ればいいんでしょうけど・・・面倒)
DocuWorks Development Tool Kit 6.2 日本語版
DocuWorks Development Tool Kit 6.2 日本語版
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; OpenDialog1: TOpenDialog; procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} const XDW_GI_DWINPUTPATH = 10; XDW_GI_DWDESKPATH = 11; type XDW_CREATE_OPTION = record nSize: Integer; nFitImage: Integer; nCompress: Integer; nZoom: Integer; nWidth: Integer; nHeight: Integer; nHorPos: Integer; nVerPos: Integer; end; function XDW_GetInformation(nIndex: Integer; lpszOutput: PAnsiChar; nSize: Integer; reserved : Pointer): Integer; stdcall; external 'xdwapi.dll'; function XDW_CreateXdwFromImageFile(const lpszInputPath: PAnsiChar; const lpszOutputPath: PAnsiChar; var pOption: XDW_CREATE_OPTION): Integer; stdcall; external 'xdwapi.dll'; procedure TForm1.Button1Click(Sender: TObject); var Desk_Path, lpszOutput: array[0..MAX_PATH-1] of Char; Check: Integer; InputFile, OutputFile: String; pOption: XDW_CREATE_OPTION; begin if not OpenDialog1.Execute then Exit; InputFile := OpenDialog1.FileName; // Jpeg,Bmp,Tiffのみ // 下記で取得するフォルダにファイルを作成すると、Docuworksを起動させたときに // 自動的に読み込み、表示しているフォルダにそのファイルを移動させます。 // ちょっとややこしい仕様ですね。 Check := XDW_GetInformation(XDW_GI_DWINPUTPATH, lpszOutput, MAX_PATH, nil); if (Check > -1) then begin OutputFile := String(lpszOutput) + '\aaa.xdw'; pOption.nSize := SizeOf(XDW_CREATE_OPTION); pOption.nFitImage := 1; pOption.nCompress := 0; pOption.nZoom := 0; pOption.nWidth := 0; pOption.nHeight := 0; pOption.nHorPos := 0; pOption.nVerPos := 0; Check := XDW_CreateXdwFromImageFile(PAnsiChar(InputFile), PAnsiChar(OutputFile), pOption); if (Check > -1) then begin XDW_GetInformation(XDW_GI_DWDESKPATH, Desk_Path, MAX_PATH, nil); WinExec(Desk_Path, SW_SHOW); end; end; end; end.
| 固定リンク