12
|
1 /* Makefile
|
|
2 debug: xdw2pdf.cpp
|
|
3 gcc -g -O0 -I. xdw2pdf.cpp xdwapi.lib
|
|
4 #date
|
|
5 #./a.exe target.xdw
|
|
6 #date
|
|
7
|
|
8 release: xdw2pdf.cpp
|
|
9 gcc -I. xdw2pdf.cpp xdwapi.lib -static -o xdw2pdf.exe
|
|
10 strip xdw2pdf.exe
|
|
11 */
|
|
12
|
|
13 #include <stdio.h>
|
|
14 #include <io.h>
|
|
15 #include <windows.h>
|
|
16 #include <xdw_api.h>
|
|
17
|
|
18 void print_error(int code) {
|
|
19 fprintf(stderr, "Error code : %d\n", code);
|
|
20 switch (code) {
|
|
21 case XDW_E_NOT_INSTALLED:
|
|
22 fprintf(stderr, "DocuWorksがインストールされていません。");
|
|
23 break;
|
|
24 case XDW_E_FILE_NOT_FOUND:
|
|
25 fprintf(stderr, "指定されたファイルが見つかりません。");
|
|
26 break;
|
|
27 case XDW_E_FILE_EXISTS:
|
|
28 fprintf(stderr, "指定されたファイルはすでに存在します。");
|
|
29 break;
|
|
30 case XDW_E_ACCESSDENIED:
|
|
31 case XDW_E_INVALID_NAME:
|
|
32 case XDW_E_BAD_NETPATH:
|
|
33 fprintf(stderr, "指定されたファイルを開くことができません。");
|
|
34 break;
|
|
35 case XDW_E_BAD_FORMAT:
|
|
36 fprintf(stderr, "指定されたファイルは正しいフォーマットではありません。");
|
|
37 break;
|
|
38 case XDW_E_INVALID_ACCESS:
|
|
39 fprintf(stderr, "指定された操作をする権利がありません。");
|
|
40 break;
|
|
41 default:
|
|
42 fprintf(stderr, "エラーが発生しました。");
|
|
43 break;
|
|
44 }
|
|
45 }
|
|
46
|
|
47 void print_help(const char *prog) {
|
|
48 fprintf(stderr, "%s in.xdw out.pdf\n", prog);
|
|
49 }
|
|
50
|
|
51 int main(int argc, char* argv[]) {
|
|
52
|
|
53 if (argc != 3) {
|
|
54 print_help(argv[0]);
|
|
55 exit(1);
|
|
56 }
|
|
57
|
|
58 char in_path[_MAX_PATH], out_path[_MAX_PATH];
|
|
59 _fullpath(in_path, argv[1], _MAX_PATH);
|
|
60 _fullpath(out_path, argv[2], _MAX_PATH);
|
|
61 remove(out_path);
|
|
62
|
|
63 int api_result = 0;
|
|
64
|
|
65 // 文書ハンドルを開く
|
|
66 XDW_DOCUMENT_HANDLE h = NULL;
|
|
67 XDW_OPEN_MODE_EX mode = {sizeof(XDW_OPEN_MODE_EX), XDW_OPEN_READONLY, XDW_AUTH_NODIALOGUE};
|
|
68 api_result = XDW_OpenDocumentHandle(in_path, &h, (XDW_OPEN_MODE*)&mode);
|
|
69 if (api_result < 0) {
|
|
70 print_error(api_result);
|
|
71 return 1;
|
|
72 }
|
|
73
|
|
74 XDW_DOCUMENT_INFO info = { sizeof(XDW_DOCUMENT_INFO), 0, 0, 0 }; // 総ページ数を得る
|
|
75 XDW_GetDocumentInformation(h, &info);
|
|
76
|
|
77 XDW_IMAGE_OPTION_PDF pdf = {
|
|
78 sizeof(XDW_IMAGE_OPTION_PDF),
|
|
79 XDW_COMPRESS_MRC_NORMAL, //劣化有 標準(MRC) (default)
|
|
80 XDW_CONVERT_MRC_OS,
|
|
81 info.nPages
|
|
82 };
|
|
83
|
|
84 XDW_IMAGE_OPTION_EX ex = {
|
|
85 sizeof(XDW_IMAGE_OPTION_EX),
|
|
86 600, // dpi
|
|
87 XDW_IMAGE_MONO_HIGHQUALITY,
|
|
88 XDW_IMAGE_PDF,
|
|
89 &pdf
|
|
90 };
|
|
91 api_result = XDW_ConvertPageToImageFile (h, 1, out_path, (XDW_IMAGE_OPTION*)&ex);
|
|
92
|
|
93 // 文書ハンドルを閉じる
|
|
94 XDW_SaveDocument(h, NULL);
|
|
95 XDW_CloseDocumentHandle(h, NULL);
|
|
96
|
|
97 return 0;
|
|
98 }
|
|
99
|