comparison xdw2pdf.cpp @ 12:e07f9f1d1cc5 default tip

add xdw2pdf.
author pyon@macmini
date Fri, 02 Aug 2019 20:12:44 +0900
parents
children
comparison
equal deleted inserted replaced
11:3cecce3b2ce3 12:e07f9f1d1cc5
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