トップ回答者
[VS2010]ReportViewerのローカル処理モードで出力したPDFの文字化け(※コピーしたテキスト内容が対象)

質問
-
開発環境:
・Windows 7 SP1(Windows Update.2013/07/31 時点の最新版を全て適応)
・Visual Studio 2010 (Windows Update.2013/07/31 時点の最新版を全て適応)
C# Windows Forms
・ReportViewerのバージョン(Microsoft.ReportViewer.WinForms 10)確認に使用したPDFViewer:
・Adobe Acrobat X Pro
・Adobe Reader X
・SkyPDF Viewer確認に使用したテキストエディタ.5.0]
・notepad.exe [Windows 7 標準のテキストエディタ]
下記質問事項を記述します。ローカル処理モードのReportViewer で、日本語混じりのレポートをPDF形式に出力
。
上記で記述したPDFViewerにて内容を確認すると文字化けは起きないのですが、
表示された文字をコピーし、上記で記述したテキストエディタにペーストすると
文字化けを起こします。
また当該PDFをテキストとして出力すると文字化けしてしまうことを確認しました
。当該のPDFに対して、Officeファイル[.xls,.doc,.ppt]、一太郎形式のファイルを
PDFに変換し、
マージすると.rdlcでデザインした部分のみが文字化けすることも確認しておりま
す。この文字化けしてしまう現象の解決方法をご教示をお願い致します。
--------------------------------------------------------------------
検証したこと1.全ての日本語が文字化けなのか?
-.rdlcでデザインした透かし文字に関しては、文字化けしないことを確認しまし
た。
-文字化け対象は半角英数では起きず、日本語(半角、全角)のみ起きること確認し
ました。検証したこと2.検証利用でxdoc2txt.exe[Ver.2.00]を使用し、OCR変換しテキスト
に出力
結果はNG。文字化けしまいました。(各文字コードを全て試しました)検証したこと3.フォントの問題。
表示されている全てのフォントをMS UI Gothic、MS Pゴシックにしましたが結果は
変わりませんでした。検証したこと4.フォント埋め込みの失敗の可能性
調べるとMicrosoft.ReportViewer.WinForms 10では必ず埋め込まれる仕様のため対象外の様子
また出力したPDFのプロパティでも埋め込みに成功していること確認しております。
--------------------------------------------------------------------
調査したが特定出来なかった可能性1.コピーや再配布を防止するために著作権保護
の仕様
透かし対象以外の文字列は暗号化されてしまうという仕様が施されてしまうので
はないかという懸念。
※日本語だけ文字化けとなるので、かなり薄いとは思いますが・・・
--------------------------------------------------------------------
回答
すべての返信
-
これはReportViewerの問題でしょうか? Office上で[名前を付けて保存]でPDF形式を選択しただけでも同じ問題が発生しませんか? 保存する際のオプションで[アクセシビリティ用のドキュメント構造タグ]にチェックが付けられていると発生します。
# 読み上げとかが容易になるとのことですが…コピーした文字列があんなふうになるのに読み上げが正常に行えるのか疑問ですが。ReportViewerでこれと同等の設定をする方法はよくわかりません…
-
TO:佐祐理さん
ご返信ありがとうございます。
>これはReportViewerの問題でしょうか?
はい。その通りです。
>[アクセシビリティ用のドキュメント構造タグ]にチェックが付けられていると発生します。
当該のドキュメントタグを制御するプロパティを調査しましたが見当たりませんでした。
上記の方で記述していなかった点として、Microsoft Report Viewer 2010 SP1 再頒布可能パッケージ
は適応済みです。
この問題による弊害は、PDF内の全文検索が行えません。
PDFの全文検索を行いたいので、ReportViewerでは使い物にならないようであれば
最悪、諦めることも検討しております。
PS.
自己調査により他の代替手段が見つかりました。
その代替手段はAdobe Acrobat SDKを利用し、PDF出力するというやり方です。
このやり方であれば上記のような問題が起きず、全文検索が行えることがわかりました。
念のため、当該内容を英訳して、米MSDNにもポストする予定です。