PDF 内部構造 テキスト 新しいページはコチラ
提供: yonewiki
(→日本語を扱う) |
(→日本語を扱う) |
||
160行: | 160行: | ||
=== '''日本語を扱う''' === | === '''日本語を扱う''' === | ||
+ | ==== '''日本語PDFファイルサンプル''' ==== | ||
残念ながら上記のような設定ではテキストで文字列配列の部分に日本語を入力しただけでは日本語は扱えません。簡単ではないってことですね。フォント設定にコツがいります。文字列配列の指定もエスケープシーケンスを意識した設定が必要です。で、実際に手作業で組んでいくのはかなり難しいので、ここでは既に日本語への変換方法を知っているアプリケーションにPDFを作成してもらって、そこから解析していくという、手法をとります。わかってる人たちはスゴイよ。自分は信頼できるアプリケーションとして、Windows10でMicrosoftWordを使います。やっぱね。この組み合わせは安定しているよ。完璧なアプリケーションとは言えないかもしれなけれど、PDFを出力する基本部分くらいなら、100%大丈夫だよね。さすがは世に出てきているだけのことはある。そんな感じです。個別のフォントでどういう設定にするべきかを調べようと思うと、また別のフォント解析アプリを使ったり、作ったりして立ち向かう必要がありますが、そういう基本的なことをWordとWindows10の組み合わせではやってくれます。 | 残念ながら上記のような設定ではテキストで文字列配列の部分に日本語を入力しただけでは日本語は扱えません。簡単ではないってことですね。フォント設定にコツがいります。文字列配列の指定もエスケープシーケンスを意識した設定が必要です。で、実際に手作業で組んでいくのはかなり難しいので、ここでは既に日本語への変換方法を知っているアプリケーションにPDFを作成してもらって、そこから解析していくという、手法をとります。わかってる人たちはスゴイよ。自分は信頼できるアプリケーションとして、Windows10でMicrosoftWordを使います。やっぱね。この組み合わせは安定しているよ。完璧なアプリケーションとは言えないかもしれなけれど、PDFを出力する基本部分くらいなら、100%大丈夫だよね。さすがは世に出てきているだけのことはある。そんな感じです。個別のフォントでどういう設定にするべきかを調べようと思うと、また別のフォント解析アプリを使ったり、作ったりして立ち向かう必要がありますが、そういう基本的なことをWordとWindows10の組み合わせではやってくれます。 | ||
177行: | 178行: | ||
少し長いサンプルソースなので、全部載せて、説明はしません。日本語を表示するために、使われているフォントやコード関連のオペレータの意味については解読して、日本語文書ファイルを作れるようにしていきます。 | 少し長いサンプルソースなので、全部載せて、説明はしません。日本語を表示するために、使われているフォントやコード関連のオペレータの意味については解読して、日本語文書ファイルを作れるようにしていきます。 | ||
+ | ==== '''日本語PDF仕組み''' ==== | ||
Windowsでのコマンドラインは、自分はSJISで動かしています。PDFtkはファイルをSJISで書かれている認識して処理しています。そうするとファイル中で日本語を使うときは、2種類の方法になります。ひとつはSJISの文字コードの数値あるいはテキストそのままを入れて文字を表現する。テキストをそのまま入れる場合は文字コードのレベルで数値化したレベルのPDFファイルとして認識してSJISとして処理されるという概念を常に意識します。もう一つは、SJIS以外の文字コードを使うとして、オペレータで文字コードはこういうものを使っていますと指定して、文字コードの数値で入力するという方法です。そのまま日本語の文字列をPDFファイル内に配置する訳にはいかないことが面倒なところです。ということは、テキストエディタだけでPDFを構成するのは簡単ではないと想像できると思います。この他、イメージなんかも全部テキストで表現するとしたら同じような理由でテキストエディタだけで操作するのは、困難を極めます。自分でPDF編集アプリをつくらないと楽にはならないでしょう。でも、理解するということは、そういうことをやっていくきっかけにはなるはずです。 | Windowsでのコマンドラインは、自分はSJISで動かしています。PDFtkはファイルをSJISで書かれている認識して処理しています。そうするとファイル中で日本語を使うときは、2種類の方法になります。ひとつはSJISの文字コードの数値あるいはテキストそのままを入れて文字を表現する。テキストをそのまま入れる場合は文字コードのレベルで数値化したレベルのPDFファイルとして認識してSJISとして処理されるという概念を常に意識します。もう一つは、SJIS以外の文字コードを使うとして、オペレータで文字コードはこういうものを使っていますと指定して、文字コードの数値で入力するという方法です。そのまま日本語の文字列をPDFファイル内に配置する訳にはいかないことが面倒なところです。ということは、テキストエディタだけでPDFを構成するのは簡単ではないと想像できると思います。この他、イメージなんかも全部テキストで表現するとしたら同じような理由でテキストエディタだけで操作するのは、困難を極めます。自分でPDF編集アプリをつくらないと楽にはならないでしょう。でも、理解するということは、そういうことをやっていくきっかけにはなるはずです。 | ||
183行: | 185行: | ||
+ | ==== '''日本語PDFフォント情報''' ==== | ||
では、日本語を入力することを考えていきましょう。 | では、日本語を入力することを考えていきましょう。 | ||
248行: | 251行: | ||
/Subtype /Type0 | /Subtype /Type0 | ||
/BaseFont /#82l#82r#83S#83V#83b#83N | /BaseFont /#82l#82r#83S#83V#83b#83N | ||
− | /ToUnicode | + | /ToUnicode 4 0 R |
/Encoding /Identity-H | /Encoding /Identity-H | ||
/DescendantFonts | /DescendantFonts | ||
[ | [ | ||
<< | << | ||
+ | /Type /Font | ||
/BaseFont /#82l#82r#83S#83V#83b#83N | /BaseFont /#82l#82r#83S#83V#83b#83N | ||
+ | /W 11 0 R | ||
+ | /CIDToGIDMap /Identity | ||
/CIDSystemInfo | /CIDSystemInfo | ||
<< | << | ||
/Supplement 0 | /Supplement 0 | ||
− | /Ordering | + | /Ordering (Identity) |
− | /Registry | + | /Registry (Adobe) |
>> | >> | ||
/Subtype /CIDFontType2 | /Subtype /CIDFontType2 | ||
264行: | 270行: | ||
<< | << | ||
/FontName /#82l#82r#83S#83V#83b#83N | /FontName /#82l#82r#83S#83V#83b#83N | ||
− | /StemV | + | /StemV 1000 |
/Ascent 859 | /Ascent 859 | ||
/Flags 6 | /Flags 6 | ||
/Descent -140 | /Descent -140 | ||
/ItalicAngle 0 | /ItalicAngle 0 | ||
− | /FontBBox | + | /FontBBox [-1000 -140 1000 859] |
/Type /FontDescriptor | /Type /FontDescriptor | ||
/CapHeight 679 | /CapHeight 679 | ||
>> | >> | ||
− | |||
− | |||
− | |||
>> | >> | ||
] | ] | ||
>> | >> | ||
+ | endobj | ||
+ | 4 0 obj | ||
+ | << >> | ||
+ | stream | ||
+ | |||
+ | endstream | ||
endobj | endobj | ||
… | … | ||
</syntaxhighlight2> | </syntaxhighlight2> | ||
+ | |||
+ | ==== '''日本語PDFフォント情報のオペレータ個別の意味''' ==== | ||
+ | |||
[[PDF 内部構造#説明|PDF 内部構造]]に戻る。 | [[PDF 内部構造#説明|PDF 内部構造]]に戻る。 |