[リストへもどる]
一括表示
タイトルxdoc2txtのCOM.DLL版での文字化け
記事No791
投稿日: 2015/04/25(Sat) 13:31:39
投稿者スコミール
お忙しいところ失礼いたします。

xdoc2txtのCOM.DLL版で、

Set obj = CreateObject("xd2txcom.Xdoc2txt.1")
fileText = obj.ExtractText("sample.pdf",False)

UTF-8でエンコードされたPDFファイルからテキストを抽出する際に、
一部文字化け(正確には一部の文字が"?"に変換されます)してしまいます。

勿論、コマンドライン版では、"-8"オプションを指定することで、正常なテキストを抽出できます。
COM.DLL版ではそのオプションが設定できない以上、どうしようもない問題なのでしょうか?

タイトルRe: xdoc2txtのCOM.DLL版での文字化け
記事No792
投稿日: 2015/04/25(Sat) 17:25:27
投稿者hishida
> お忙しいところ失礼いたします。
>
> xdoc2txtのCOM.DLL版で、
>
> Set obj = CreateObject("xd2txcom.Xdoc2txt.1")
> fileText = obj.ExtractText("sample.pdf",False)
>
> UTF-8でエンコードされたPDFファイルからテキストを抽出する際に、
> 一部文字化け(正確には一部の文字が"?"に変換されます)してしまいます。
>
> 勿論、コマンドライン版では、"-8"オプションを指定することで、正常なテキストを抽出できます。
> COM.DLL版ではそのオプションが設定できない以上、どうしようもない問題なのでしょうか?

COMから受け渡される文字列はBSTR型で、内部Unicodeのはずです。
表示段階でShiftJISへの変換が起きているのではないでしょうか。

タイトルRe^2: xdoc2txtのCOM.DLL版での文字化け
記事No793
投稿日: 2015/04/25(Sat) 20:30:18
投稿者スコミール
VBScriptで、
xdoc2txt.exeコマンドライン版でUTF-8で抽出したテキストを、
バイナリで読み込んで
ADODB.Streamを使って、変換しても同様の文字化けが起こりました。

その文字化けをする文字が、"年月日"の"日"の文字なのですが、
文字化けする箇所としない箇所があり、よく調べてみると、

文字化けする"日"の文字コードは、U+2F47、バイナリだと"e2 bd 87"(http://www.charbase.com/2f47-unicode-kangxi-radical-sun)
が使われており、
文字化けしない"日"の文字コードは、U+65E5、バイナリだと"e6 97 a5"(http://www.charbase.com/65e5-unicode-cjk-unified-ideograph)
が使われていました。

大抵は日本語のPDFは後者を使用しているようなので、文字化けしないのですが、
希に、中国語?の"日"を使っている方は文字化けしてしまっておりました。

どうもVB(Unicode)では、扱えないのか、文字化けするようです。

この場合だと、読み込み前のバイナリの段階で"e2 bd 87"→"e6 97 a5"に
置換すると直りました。

こういった対処法しかないでしょうか?