Mercurial > mercurial > hgweb_xdwtools.cgi
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 |