[SSRS] Reporting Services 文字化け:PDF の文字をコピーして貼り付けると文字化け

 

みなさん、こんにちは。

Reporting Services では PDF ファイルへのエクスポートが可能です。
その PDF ファイルを 2 次利用する場合において文字化けが発生するケースがあります。

再現手順
1) Reporting Services でエクスポートした PDF ファイルを開きます。
2) 表示されているデータの文字列を [Ctrl] + [C] キーなどでクリップボードにコピーします。
3) メモ帳などを開き、コピーした値を貼り付けると文字化けが発生します。(2 バイト日本語など)

要因
これは、Reporting Services が出力する PDF のフォントが、グリフ形式で記録される場合に発生します。
日本語のフォントの場合は、グリフで扱われています。

グリフって? 文字の形状のことです。コンピュータの画面表示や紙に印刷するための、文字を形づくる輪郭線、グラフィック的な情報です。
これは、Unicode などの文字コードとは異なる情報です。

コピー&ペーストのようにアプリケーションが値を文字列として扱うケースでは、グリフ のほかに文字コードが必要になります。現在、Reporting Services が出力する PDF では、埋め込まれているグリフから Unicode への変換を行う機能を持っていないため、コピー&ペーストを行った場合は正確な Unicode 文字コードが得られず文字化けします。

この動作は、大変恐縮ではあるのですが Reporting Services で生成された PDF を扱う上での制限事項です。

補足
Reporting Services 文字化けといえば、異なる OS 間の PDF 文字化けもあります。
リンク先のブログで紹介しているように、異なる OS 間の文字化けの現象は、フォントの埋め込み対応バージョンの Reporting Services では発生しませんが、コピー&ペーストでの文字化け現象は埋め込みフォント対応有無にかかわらず再現します。フォントが PDF に埋め込まれるようになりましたが、グリフ形式で扱っている点には変更がないためです。

回避するには
残念ながら、出力された PDF ファイルからの操作では 回避策はありません。
出力した内容をコピー&ペーストするなど 2 次利用したい場合には、HTML や Excel などあらかじめ他の形式でエクスポートすることが代替案となります。

参考になれば幸いです。

 

2016/07/15 更新
この問題は、SQL Server 2016 で修正されました。
[SSRS] SQL Server 2016 での PDF エクスポートの改善点