comparison xdwaddpage2.cpp @ 9:cc5262d43399

small changes.
author pyon@macmini
date Thu, 05 Apr 2018 21:06:13 +0900
parents 61ce4754737e
children
comparison
equal deleted inserted replaced
8:61ce4754737e 9:cc5262d43399
57 fprintf( stderr, "Usage:\n" ); 57 fprintf( stderr, "Usage:\n" );
58 fprintf( stderr, " %s infile\n", prog ); 58 fprintf( stderr, " %s infile\n", prog );
59 fprintf( stderr, " %s -l infile\n", prog ); 59 fprintf( stderr, " %s -l infile\n", prog );
60 fprintf( stderr, " %s -ltxt infile\n", prog ); 60 fprintf( stderr, " %s -ltxt infile\n", prog );
61 fprintf( stderr, " %s -s S infile\n", prog ); 61 fprintf( stderr, " %s -s S infile\n", prog );
62 fprintf( stderr, " %s -c infile1 infile2 ...\n", prog );
63 fprintf( stderr, " %s -s S -c infile1 infile2 ...\n", prog );
64 fprintf( stderr, " %s -s S -ltxt -c infile1 infile2 ...\n", prog );
62 fprintf( stderr, " %s -v infile\n", prog ); 65 fprintf( stderr, " %s -v infile\n", prog );
63 } 66 }
64 67
65 void print_now( char const *msg ) { 68 void print_now( char const *msg ) {
66 time_t now = time( NULL ); 69 time_t now = time( NULL );
87 } 90 }
88 91
89 return api_result; 92 return api_result;
90 } 93 }
91 94
92 int main( int argc, char* argv[] ) { 95 int add_page( const char* file, int sp, bool pleft, const char* ltext )
93 96 {
94 /* オプションの解析 */
95 bool pnow = false;
96 bool pleft = false;
97 char *ltext = NULL;
98 int sp = 1;
99
100 int opt;
101 while ( ( opt = getopt( argc, argv, "vs:l::" ) ) != -1 ) {
102 switch ( opt ) {
103 case 'v':
104 pnow = true;
105 print_now( "start." );
106 break;
107 case 'l':
108 pleft = true;
109 ltext = optarg;
110 break;
111 case 's':
112 sp = atoi( optarg );
113 if ( sp == 0 ) {
114 print_help();
115 exit( 1 );
116 }
117 break;
118 default:
119 print_help();
120 exit( 1 );
121 }
122 }
123
124 char in_path[ _MAX_PATH ];
125 _fullpath( in_path, argv[ argc - 1 ], _MAX_PATH );
126
127 /* 本処理 */
128 int api_result = 0;
129
130 XDW_DOCUMENT_HANDLE h = NULL; // 文書ハンドルを開く 97 XDW_DOCUMENT_HANDLE h = NULL; // 文書ハンドルを開く
131 XDW_OPEN_MODE_EX mode = { sizeof( XDW_OPEN_MODE_EX ), XDW_OPEN_UPDATE, XDW_AUTH_NODIALOGUE }; 98 XDW_OPEN_MODE_EX mode = { sizeof( XDW_OPEN_MODE_EX ), XDW_OPEN_UPDATE, XDW_AUTH_NODIALOGUE };
132 api_result = XDW_OpenDocumentHandle( in_path, &h, (XDW_OPEN_MODE*)&mode ); 99 int api_result = XDW_OpenDocumentHandle( file, &h, (XDW_OPEN_MODE*)&mode );
133 if ( api_result < 0 ) { 100 if ( api_result < 0 ) {
134 print_error( api_result ); 101 print_error( api_result );
135 return 0; 102 return 0;
136 } 103 }
137 104
143 int tr = 1; // 透明フラグ 110 int tr = 1; // 透明フラグ
144 char pagenum[18], lpagenum[30]; 111 char pagenum[18], lpagenum[30];
145 112
146 // アノテーションを貼り付ける 113 // アノテーションを貼り付ける
147 for ( int p = 0; p < last_page; p++ ) { 114 for ( int p = 0; p < last_page; p++ ) {
148 sprintf( pagenum, "%05d-%05d-%05d", p + sp, p + 1, last_page ); 115 sprintf( pagenum, "%05d-%04d-%04d", p + sp, p + 1, last_page );
149 api_result = add_annotation( h, p + 1, 17500, 28500, pagenum, &sz, tr ); // 右下 116 api_result = add_annotation( h, p + 1, 17500, 28500, pagenum, &sz, tr ); // 右下
150 if ( pleft ) { 117 if ( pleft ) {
151 if ( ltext != NULL ) 118 if ( ltext != NULL )
152 sprintf( lpagenum, "%s%s", pagenum, ltext ); 119 sprintf( lpagenum, "%s%s", pagenum, ltext );
153 else 120 else
162 129
163 if ( api_result >= 0 ) // 変更をファイルに反映する 130 if ( api_result >= 0 ) // 変更をファイルに反映する
164 api_result = XDW_SaveDocument( h, NULL ); 131 api_result = XDW_SaveDocument( h, NULL );
165 132
166 XDW_CloseDocumentHandle( h, NULL ); // 文書ハンドルを閉じる 133 XDW_CloseDocumentHandle( h, NULL ); // 文書ハンドルを閉じる
134 return sp + last_page;
135 }
136
137 int main( int argc, char* argv[] ) {
138
139 /* オプションの解析 */
140 bool pnow = false;
141 bool pleft = false;
142 bool chain = false;
143 char *ltext = NULL;
144 int sp = 1;
145
146 int opt;
147 while ( ( opt = getopt( argc, argv, "vs:l::c" ) ) != -1 ) {
148 switch ( opt ) {
149 case 'v':
150 pnow = true;
151 print_now( "start." );
152 break;
153 case 'l':
154 pleft = true;
155 ltext = optarg;
156 break;
157 case 's':
158 sp = atoi( optarg );
159 if ( sp == 0 ) {
160 print_help();
161 exit( 1 );
162 }
163 break;
164 case 'c': // chain mode
165 chain = true;
166 break;
167 default:
168 print_help();
169 exit( 1 );
170 }
171 }
172
173 char in_path[ _MAX_PATH ];
174
175 /* 本処理 */
176 int api_result = 0;
177 if ( chain ) {
178 int lp = sp;
179 for ( int i = optind; i < argc; i++ ) {
180 _fullpath( in_path, argv[ i ], _MAX_PATH );
181 lp = add_page( in_path, lp, pleft, ltext );
182 if ( pnow ) print_now( in_path );
183 }
184 }
185 else {
186 _fullpath( in_path, argv[ argc - 1 ], _MAX_PATH );
187 add_page( in_path, sp, pleft, ltext );
188 }
167 189
168 if ( pnow ) print_now( "done." ); 190 if ( pnow ) print_now( "done." );
169 return 0; 191 return 0;
170 } 192 }
171 193