# HG changeset patch # User pyon@macmini # Date 1564744364 -32400 # Node ID e07f9f1d1cc57a6979d0024381b245894e0cfe15 # Parent 3cecce3b2ce34e797cdff18610a04c28a16dc734 add xdw2pdf. diff -r 3cecce3b2ce3 -r e07f9f1d1cc5 xdw2pdf.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xdw2pdf.cpp Fri Aug 02 20:12:44 2019 +0900 @@ -0,0 +1,99 @@ +/* Makefile +debug: xdw2pdf.cpp + gcc -g -O0 -I. xdw2pdf.cpp xdwapi.lib + #date + #./a.exe target.xdw + #date + +release: xdw2pdf.cpp + gcc -I. xdw2pdf.cpp xdwapi.lib -static -o xdw2pdf.exe + strip xdw2pdf.exe +*/ + +#include +#include +#include +#include + +void print_error(int code) { + fprintf(stderr, "Error code : %d\n", code); + switch (code) { + case XDW_E_NOT_INSTALLED: + fprintf(stderr, "DocuWorksがインストールされていません。"); + break; + case XDW_E_FILE_NOT_FOUND: + fprintf(stderr, "指定されたファイルが見つかりません。"); + break; + case XDW_E_FILE_EXISTS: + fprintf(stderr, "指定されたファイルはすでに存在します。"); + break; + case XDW_E_ACCESSDENIED: + case XDW_E_INVALID_NAME: + case XDW_E_BAD_NETPATH: + fprintf(stderr, "指定されたファイルを開くことができません。"); + break; + case XDW_E_BAD_FORMAT: + fprintf(stderr, "指定されたファイルは正しいフォーマットではありません。"); + break; + case XDW_E_INVALID_ACCESS: + fprintf(stderr, "指定された操作をする権利がありません。"); + break; + default: + fprintf(stderr, "エラーが発生しました。"); + break; + } +} + +void print_help(const char *prog) { + fprintf(stderr, "%s in.xdw out.pdf\n", prog); +} + +int main(int argc, char* argv[]) { + + if (argc != 3) { + print_help(argv[0]); + exit(1); + } + + char in_path[_MAX_PATH], out_path[_MAX_PATH]; + _fullpath(in_path, argv[1], _MAX_PATH); + _fullpath(out_path, argv[2], _MAX_PATH); + remove(out_path); + + int api_result = 0; + + // 文書ハンドルを開く + XDW_DOCUMENT_HANDLE h = NULL; + XDW_OPEN_MODE_EX mode = {sizeof(XDW_OPEN_MODE_EX), XDW_OPEN_READONLY, XDW_AUTH_NODIALOGUE}; + api_result = XDW_OpenDocumentHandle(in_path, &h, (XDW_OPEN_MODE*)&mode); + if (api_result < 0) { + print_error(api_result); + return 1; + } + + XDW_DOCUMENT_INFO info = { sizeof(XDW_DOCUMENT_INFO), 0, 0, 0 }; // 総ページ数を得る + XDW_GetDocumentInformation(h, &info); + + XDW_IMAGE_OPTION_PDF pdf = { + sizeof(XDW_IMAGE_OPTION_PDF), + XDW_COMPRESS_MRC_NORMAL, //劣化有 標準(MRC) (default) + XDW_CONVERT_MRC_OS, + info.nPages + }; + + XDW_IMAGE_OPTION_EX ex = { + sizeof(XDW_IMAGE_OPTION_EX), + 600, // dpi + XDW_IMAGE_MONO_HIGHQUALITY, + XDW_IMAGE_PDF, + &pdf + }; + api_result = XDW_ConvertPageToImageFile (h, 1, out_path, (XDW_IMAGE_OPTION*)&ex); + + // 文書ハンドルを閉じる + XDW_SaveDocument(h, NULL); + XDW_CloseDocumentHandle(h, NULL); + + return 0; +} +