pdftkで日本語ファイルを使ってみる
pdftkつかうとWindows上でコマンドラインからpdfファイルを連結できる。
まるごとPDFあたりでもできるけど,ファイル名の並び替えが面倒なんで,コマンドラインからできるのがほしかった。
でも,日本語ファイル名が通らない。
バッチ内に,ナンバリングしてコピーして,使ってたけど,う~んやっぱり面倒。
ってことで,パッチを当てることを考える。
どうやら,JvNewStringLatin1の文字コード変換でだめらしい。
ならばってことで,SJIS(CP932)からUTF-8にiconvしてやって,JvNewStringUTF8する関数(JvNewStringSJIS)にかえてやる。
というわけで,
pdftk.hにて,JvNewStringLatin1をJvNewStringSJIS(SJIS→UTF-8)に変換する。
#define JvNewStringLatin1 JvNewStringSJIS
jstring JvNewStringSJIS(const char* bytes);
pdftk.ccの最後のほうに,以下を追加する。
#include "iconv.h"
jstring JvNewStringSJIS(const char* bytes)
{
const char* fromcode = "CP932";
const char* tocode = "UTF-8";
static iconv_t cd = iconv_open(tocode,fromcode);
if(cd==0){
return NULL;
}
const char* src_ptr = bytes;
size_t src_size = strlen(bytes);
string utf8;
while(true){
const int BUF_SIZE = 64;
char dst[BUF_SIZE];
size_t dst_size = BUF_SIZE;
char* dst_ptr = dst;
int rc = iconv(cd,&src_ptr,&src_size,&dst_ptr,&dst_size);
if(rc==0){
utf8.append(dst,dst_ptr);
break;
}
else if(rc==-1 && errno==E2BIG){
utf8.append(dst,dst_ptr);
}
else if(rc==0){
return NULL;
}
}
return JvNewStringUTF(utf8.c_str());
}
| 固定リンク
トラックバック
この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/3881/16883029
この記事へのトラックバック一覧です: pdftkで日本語ファイルを使ってみる:
» NMプライベート写真流出!彼氏との入浴中写真・動画その後のハメ撮りまで全部見せます。 [NMプライベート写真流出!彼氏との入浴中写真・動画その後のハメ撮りまで全部見せます。]
芸能人N.Mさんのプライベート写真が流出!写真と動画でハメ撮りまで一挙公開!誰だかわかりましたか!? [続きを読む]
受信: 2007.10.27 03:24

コメント