2018年2月5日月曜日

人名の旧字・異字体・異体字を新漢字に変換 [C#]

-----------------------------------------------------------------------------
class ConvertClass
{
    Dictionary<string, string> KanjiDict = new Dictionary<string, string>();

    public ConvertClass()
    {
        KanjiDict.Add("亞", "亜");
        KanjiDict.Add("惡", "悪");
        KanjiDict.Add("爲", "為");
        KanjiDict.Add("逸", "逸");
        KanjiDict.Add("榮", "栄");
        KanjiDict.Add("衞", "衛");
        KanjiDict.Add("謁", "謁");
        KanjiDict.Add("圓", "円");
        KanjiDict.Add("緣", "縁");
        KanjiDict.Add("薗", "園");
        KanjiDict.Add("應", "応");
        KanjiDict.Add("櫻", "桜");
        KanjiDict.Add("奧", "奥");
        KanjiDict.Add("橫", "横");
        KanjiDict.Add("溫", "温");
        KanjiDict.Add("禍", "禍");
        KanjiDict.Add("價", "価");
        KanjiDict.Add("海", "海");
        KanjiDict.Add("悔", "悔");
        KanjiDict.Add("壞", "壊");
        KanjiDict.Add("懷", "懐");
        KanjiDict.Add("樂", "楽");
        KanjiDict.Add("渴", "渇");
        KanjiDict.Add("卷", "巻");
        KanjiDict.Add("陷", "陥");
        KanjiDict.Add("寬", "寛");
        KanjiDict.Add("漢", "漢");
        KanjiDict.Add("氣", "気");
        KanjiDict.Add("祈", "祈");
        KanjiDict.Add("器", "器");
        KanjiDict.Add("僞", "偽");
        KanjiDict.Add("戲", "戯");
        KanjiDict.Add("虛", "虚");
        KanjiDict.Add("峽", "峡");
        KanjiDict.Add("狹", "狭");
        KanjiDict.Add("響", "響");
        KanjiDict.Add("曉", "暁");
        KanjiDict.Add("勤", "勤");
        KanjiDict.Add("謹", "謹");
        KanjiDict.Add("駈", "駆");
        KanjiDict.Add("勳", "勲");
        KanjiDict.Add("薰", "薫");
        KanjiDict.Add("惠", "恵");
        KanjiDict.Add("揭", "掲");
        KanjiDict.Add("鷄", "鶏");
        KanjiDict.Add("藝", "芸");
        KanjiDict.Add("擊", "撃");
        KanjiDict.Add("縣", "県");
        KanjiDict.Add("儉", "倹");
        KanjiDict.Add("劍", "剣");
        KanjiDict.Add("險", "険");
        KanjiDict.Add("檢", "検");
        KanjiDict.Add("圈", "圏");
        KanjiDict.Add("驗", "験");
        KanjiDict.Add("顯", "顕");
        KanjiDict.Add("嚴", "厳");
        KanjiDict.Add("恆", "恒");
        KanjiDict.Add("黃", "黄");
        KanjiDict.Add("廣", "広");
        KanjiDict.Add("國", "国");
        KanjiDict.Add("黑", "黒");
        KanjiDict.Add("穀", "穀");
        KanjiDict.Add("碎", "砕");
        KanjiDict.Add("雜", "雑");
        KanjiDict.Add("視", "視");
        KanjiDict.Add("兒", "児");
        KanjiDict.Add("濕", "湿");
        KanjiDict.Add("實", "実");
        KanjiDict.Add("社", "社");
        KanjiDict.Add("者", "者");
        KanjiDict.Add("煮", "煮");
        KanjiDict.Add("壽", "寿");
        KanjiDict.Add("收", "収");
        KanjiDict.Add("臭", "臭");
        KanjiDict.Add("從", "従");
        KanjiDict.Add("澁", "渋");
        KanjiDict.Add("縱", "縦");
        KanjiDict.Add("獸", "獣");
        KanjiDict.Add("祝", "祝");
        KanjiDict.Add("暑", "暑");
        KanjiDict.Add("署", "署");
        KanjiDict.Add("緖", "緒");
        KanjiDict.Add("諸", "諸");
        KanjiDict.Add("敍", "叙");
        KanjiDict.Add("將", "将");
        KanjiDict.Add("祥", "祥");
        KanjiDict.Add("涉", "渉");
        KanjiDict.Add("燒", "焼");
        KanjiDict.Add("奬", "奨");
        KanjiDict.Add("條", "条");
        KanjiDict.Add("狀", "状");
        KanjiDict.Add("淨", "浄");
        KanjiDict.Add("乘", "乗");
        KanjiDict.Add("剩", "剰");
        KanjiDict.Add("疊", "畳");
        KanjiDict.Add("孃", "嬢");
        KanjiDict.Add("讓", "譲");
        KanjiDict.Add("釀", "醸");
        KanjiDict.Add("神", "神");
        KanjiDict.Add("眞", "真");
        KanjiDict.Add("寢", "寝");
        KanjiDict.Add("愼", "慎");
        KanjiDict.Add("盡", "尽");
        KanjiDict.Add("粹", "粋");
        KanjiDict.Add("醉", "酔");
        KanjiDict.Add("穗", "穂");
        KanjiDict.Add("瀨", "瀬");
        KanjiDict.Add("齊", "斉");
        KanjiDict.Add("靜", "静");
        KanjiDict.Add("攝", "摂");
        KanjiDict.Add("節", "節");
        KanjiDict.Add("專", "専");
        KanjiDict.Add("戰", "戦");
        KanjiDict.Add("纖", "繊");
        KanjiDict.Add("禪", "禅");
        KanjiDict.Add("祖", "祖");
        KanjiDict.Add("爭", "争");
        KanjiDict.Add("壯", "壮");
        KanjiDict.Add("莊", "荘");
        KanjiDict.Add("搜", "捜");
        KanjiDict.Add("巢", "巣");
        KanjiDict.Add("裝", "装");
        KanjiDict.Add("僧", "僧");
        KanjiDict.Add("層", "層");
        KanjiDict.Add("騷", "騒");
        KanjiDict.Add("增", "増");
        KanjiDict.Add("藏", "蔵");
        KanjiDict.Add("憎", "憎");
        KanjiDict.Add("臟", "臓");
        KanjiDict.Add("贈", "贈");
        KanjiDict.Add("卽", "即");
        KanjiDict.Add("帶", "帯");
        KanjiDict.Add("滯", "滞");
        KanjiDict.Add("瀧", "滝");
        KanjiDict.Add("單", "単");
        KanjiDict.Add("嘆", "嘆");
        KanjiDict.Add("團", "団");
        KanjiDict.Add("彈", "弾");
        KanjiDict.Add("晝", "昼");
        KanjiDict.Add("鑄", "鋳");
        KanjiDict.Add("著", "著");
        KanjiDict.Add("徵", "徴");
        KanjiDict.Add("聽", "聴");
        KanjiDict.Add("懲", "懲");
        KanjiDict.Add("廳", "庁");
        KanjiDict.Add("鎭", "鎮");
        KanjiDict.Add("轉", "転");
        KanjiDict.Add("傳", "伝");
        KanjiDict.Add("都", "都");
        KanjiDict.Add("燈", "灯");
        KanjiDict.Add("盜", "盗");
        KanjiDict.Add("嶋", "島");
        KanjiDict.Add("稻", "稲");
        KanjiDict.Add("德", "徳");
        KanjiDict.Add("突", "突");
        KanjiDict.Add("難", "難");
        KanjiDict.Add("拜", "拝");
        KanjiDict.Add("盃", "杯");
        KanjiDict.Add("梅", "梅");
        KanjiDict.Add("賣", "売");
        KanjiDict.Add("髮", "髪");
        KanjiDict.Add("拔", "抜");
        KanjiDict.Add("繁", "繁");
        KanjiDict.Add("晚", "晩");
        KanjiDict.Add("卑", "卑");
        KanjiDict.Add("祕", "秘");
        KanjiDict.Add("碑", "碑");
        KanjiDict.Add("賓", "賓");
        KanjiDict.Add("敏", "敏");
        KanjiDict.Add("冨", "富");
        KanjiDict.Add("侮", "侮");
        KanjiDict.Add("福", "福");
        KanjiDict.Add("拂", "払");
        KanjiDict.Add("佛", "仏");
        KanjiDict.Add("勉", "勉");
        KanjiDict.Add("步", "歩");
        KanjiDict.Add("峯", "峰");
        KanjiDict.Add("墨", "墨");
        KanjiDict.Add("飜", "翻");
        KanjiDict.Add("每", "毎");
        KanjiDict.Add("萬", "万");
        KanjiDict.Add("默", "黙");
        KanjiDict.Add("埜", "野");
        KanjiDict.Add("藥", "薬");
        KanjiDict.Add("與", "与");
        KanjiDict.Add("搖", "揺");
        KanjiDict.Add("樣", "様");
        KanjiDict.Add("謠", "謡");
        KanjiDict.Add("來", "来");
        KanjiDict.Add("賴", "頼");
        KanjiDict.Add("覽", "覧");
        KanjiDict.Add("欄", "欄");
        KanjiDict.Add("龍", "竜");
        KanjiDict.Add("虜", "虜");
        KanjiDict.Add("凉", "涼");
        KanjiDict.Add("綠", "緑");
        KanjiDict.Add("淚", "涙");
        KanjiDict.Add("壘", "塁");
        KanjiDict.Add("類", "類");
        KanjiDict.Add("禮", "礼");
        KanjiDict.Add("歷", "歴");
        KanjiDict.Add("曆", "暦");
        KanjiDict.Add("練", "練");
        KanjiDict.Add("鍊", "錬");
        KanjiDict.Add("郞", "郎");
        KanjiDict.Add("朗", "朗");
        KanjiDict.Add("廊", "廊");
        KanjiDict.Add("錄", "録");
    }
   
    public string kanziConvert(string moji)
    {
        for (int i = 0; i < moji.Length; i++)
        {
            string moji1 = moji.Substring(i, 1);
            if (KanjiDict.ContainsKey(moji1))
            {
                moji = moji.Replace(moji1, KanjiDict[moji1]);
            }
        }
        return moji;
    }
}
-----------------------------------------------------------------------------

このクラスでほとんどの字は新漢字に変換出来るけど、
C#のstringで文字化けしてしまう拡張文字はこの方法では無理。

𣘺とか𡈽とか𡧃とか𦚰とか・・・。
この辺は結局メモ帳で置換・・・。

2018年2月2日金曜日

pdfの印字位置をプリンターによってズレないように設定 [Windows]

pdfをAdobeReaderで印刷したときにプリンターによって印字位置がズレる。

印刷ダイアログの"ページサイズ処理"が"合わせる"になっていると、
ダイアログ右側の"倍率"がプリンターによって自動で変わってしまう。



"ページサイズ処理"を"実際のサイズ"にすれば印字位置は変わらないのでどのプリンターでも印字位置は変わらなそう。

一度変えれば次からは前回の設定を覚えているみたい。

pdfに設定を埋め込むには"印刷ダイアログプリセット"を設定すれば良いみたいだけど、pdf生成ツールにこれが対応しているのは少なそう・・・。

"印刷ダイアログプリセット"はpdfを開いて
 ファイル>プロパティ>詳細設定
で確認。

他にもページの"拡大/縮小"・"両面印刷モード"・"ページ指定"・"部数"などの設定を埋め込めるみたい。