comparison xdwaddpage2.cpp @ 8:61ce4754737e

bug fix.
author pyon@macmini
date Tue, 03 Apr 2018 00:11:01 +0900
parents 8de5b1bd9506
children cc5262d43399
comparison
equal deleted inserted replaced
7:8de5b1bd9506 8:61ce4754737e
1 /* Makefile 1 /* Makefile
2 debug: xdwaddpage2.c 2 debug: xdwaddpage2.cpp
3 #cls 3 #cls
4 g++ -g -O0 -I. xdwaddpage2.c xdwapi.lib 4 gcc -g -O0 -I. xdwaddpage2.cpp xdwapi.lib
5 5
6 release: xdwaddpage2.c 6 release: xdwaddpage2.cpp
7 g++ -I. xdwaddpage2.c xdwapi.lib -static -o xdwaddpage2.exe 7 gcc -I. xdwaddpage2.cpp xdwapi.lib -static -o xdwaddpage2.exe
8 strip xdwaddpage2.exe 8 strip xdwaddpage2.exe
9 9
10 clean: 10 clean:
11 rm -rf tempXXXX 11 rm -rf tempXXXX
12 */ 12 */
13 13
14 #include <unistd.h>
15 #include <stdbool.h>
14 #include <stdio.h> 16 #include <stdio.h>
15 #include <string.h> 17 #include <string.h>
16 #include <stdlib.h> 18 #include <stdlib.h>
17 #include <time.h> 19 #include <time.h>
18 #include <io.h> 20 #include <io.h>
48 fprintf( stderr, "エラーが発生しました。" ); 50 fprintf( stderr, "エラーが発生しました。" );
49 break; 51 break;
50 } 52 }
51 } 53 }
52 54
55 void print_help() {
56 char prog[12] = "xdwaddpage2";
57 fprintf( stderr, "Usage:\n" );
58 fprintf( stderr, " %s infile\n", prog );
59 fprintf( stderr, " %s -l infile\n", prog );
60 fprintf( stderr, " %s -ltxt infile\n", prog );
61 fprintf( stderr, " %s -s S infile\n", prog );
62 fprintf( stderr, " %s -v infile\n", prog );
63 }
64
53 void print_now( char const *msg ) { 65 void print_now( char const *msg ) {
54 time_t now = time( NULL ); 66 time_t now = time( NULL );
55 struct tm *ts = localtime( &now ); 67 struct tm *ts = localtime( &now );
56 68
57 char buf[80]; 69 char buf[80];
78 } 90 }
79 91
80 int main( int argc, char* argv[] ) { 92 int main( int argc, char* argv[] ) {
81 93
82 /* オプションの解析 */ 94 /* オプションの解析 */
83 char prog[128]; 95 bool pnow = false;
84 strcpy( prog, argv[0] ); 96 bool pleft = false;
97 char *ltext = NULL;
98 int sp = 1;
85 99
86 int pnow = 0; 100 int opt;
87 int pstart = 0; 101 while ( ( opt = getopt( argc, argv, "vs:l::" ) ) != -1 ) {
88 int pleft = 0; 102 switch ( opt ) {
89 char c; 103 case 'v':
90 while ( --argc > 0 && ( *++argv )[0] == '-' ) { 104 pnow = true;
91 while ( c = *++argv[0] ) { 105 print_now( "start." );
92 switch ( c ) { 106 break;
93 case 'v': 107 case 'l':
94 pnow = 1; 108 pleft = true;
95 print_now( "start." ); 109 ltext = optarg;
96 break; 110 break;
97 case 'l': 111 case 's':
98 pleft = 1; 112 sp = atoi( optarg );
99 break; 113 if ( sp == 0 ) {
100 case 's': 114 print_help();
101 pstart = 1;
102 break;
103 default:
104 fprintf( stderr, "error: illegal option '%c'.\n", c );
105 exit( 1 ); 115 exit( 1 );
106 } 116 }
117 break;
118 default:
119 print_help();
120 exit( 1 );
107 } 121 }
108 } 122 }
109 123
110 int sp = 1;
111 char in_path[ _MAX_PATH ]; 124 char in_path[ _MAX_PATH ];
112 if ( argc == 1 ) { 125 _fullpath( in_path, argv[ argc - 1 ], _MAX_PATH );
113 _fullpath( in_path, argv[0], _MAX_PATH );
114 } else if ( argc == 2 ) {
115 if ( pstart == 1 ) {
116 sp = atoi( argv[0] );
117 _fullpath( in_path, argv[1], _MAX_PATH );
118 }
119 } else {
120 fprintf( stderr, "%s infile\n", prog );
121 fprintf( stderr, "%s -l infile\n", prog );
122 fprintf( stderr, "%s -s S infile\n", prog );
123 fprintf( stderr, "%s -v infile\n", prog );
124 exit( 1 );
125 }
126 126
127 /* 本処理 */ 127 /* 本処理 */
128 if ( pnow ) print_now( "adding pages." );
129
130 int api_result = 0; 128 int api_result = 0;
131 129
132 XDW_DOCUMENT_HANDLE h = NULL; // 文書ハンドルを開く 130 XDW_DOCUMENT_HANDLE h = NULL; // 文書ハンドルを開く
133 XDW_OPEN_MODE_EX mode = { sizeof( XDW_OPEN_MODE_EX ), XDW_OPEN_UPDATE, XDW_AUTH_NODIALOGUE }; 131 XDW_OPEN_MODE_EX mode = { sizeof( XDW_OPEN_MODE_EX ), XDW_OPEN_UPDATE, XDW_AUTH_NODIALOGUE };
134 api_result = XDW_OpenDocumentHandle( in_path, &h, (XDW_OPEN_MODE*)&mode ); 132 api_result = XDW_OpenDocumentHandle( in_path, &h, (XDW_OPEN_MODE*)&mode );
141 XDW_GetDocumentInformation( h, &info ); 139 XDW_GetDocumentInformation( h, &info );
142 int last_page = info.nPages; 140 int last_page = info.nPages;
143 141
144 int sz = 80; // 文字サイズ 142 int sz = 80; // 文字サイズ
145 int tr = 1; // 透明フラグ 143 int tr = 1; // 透明フラグ
146 char pagenum[18]; 144 char pagenum[18], lpagenum[30];
147 145
148 // アノテーションを貼り付ける 146 // アノテーションを貼り付ける
149 for ( int p = 0; p < last_page; p++ ) { 147 for ( int p = 0; p < last_page; p++ ) {
150 sprintf( pagenum, "%05d-%05d-%05d", p + sp, p + 1,last_page ); 148 sprintf( pagenum, "%05d-%05d-%05d", p + sp, p + 1, last_page );
151 if ( pleft == 1 )
152 api_result = add_annotation( h, p + 1, 1700, 5600, pagenum, &sz, tr ); // 左上
153 api_result = add_annotation( h, p + 1, 17500, 28500, pagenum, &sz, tr ); // 右下 149 api_result = add_annotation( h, p + 1, 17500, 28500, pagenum, &sz, tr ); // 右下
150 if ( pleft ) {
151 if ( ltext != NULL )
152 sprintf( lpagenum, "%s%s", pagenum, ltext );
153 else
154 sprintf( lpagenum, "%s", pagenum );
155 api_result = add_annotation( h, p + 1, 1700, 5600, lpagenum, &sz, tr ); // 左上
156 }
154 if ( api_result < 0 ) { 157 if ( api_result < 0 ) {
155 print_error( api_result ); 158 print_error( api_result );
156 break; 159 break;
157 } 160 }
158 } 161 }