PDFを自分で、作ってみよう♪

Similar documents
PDF の作り方 PDF の作り方には 2 通りある デジタル生まれの PDF( こちらが起源 ) アプリケーション ソフトから PDF を出力 紙から作成する PDF(PDF の本質ではない ) 紙をスキャナで読み PDF に変換 同じ PDF でも特性が根本的に異なる デジタル生まれの PDF

フォント埋め込みに関する調査報告 プラネットファーマソリューションズ株式会社 2019 年 05 月 31 日 Copyright 2019 Planet Pharma Solutions, Inc. All Rights Reserved.

JavaプログラミングⅠ

Microsoft PowerPoint SUTF-4-pdfsign.ppt [互換モード]

PowerPoint プレゼンテーション

PDF の作成方法 PDF を作成する主な方法は次の 4 つである 1 ページ記述言語 (Postscript) から変換する 2 Windows アプリケーションの印刷機能を使って作成 3 アプリケーションから直接 PDF ファイルを作成 4 書類をスキャナや複合機でスキャンしたデータを PDF

情報処理演習 B8クラス

以下のソフトウェアに専用ライセンスを設定することで 変換機能が使えるようになります アプリケーション名バージョン日付 JPGIS-XML ビュー F 7.1.0α 以降 2013/06/27 以降 フリーウェア JPGIS-XML ビュー F のバージョン から XML の 筆 と 図郭

基本作図・編集

CubePDF ユーザーズマニュアル

.

基本作図・編集

< F2D D E6A7464>

<907D945D F D C789C195CF8D5888EA97978CF68A4A97702E786C7378>

Microsoft PowerPoint - 5Chap15.ppt

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

IGESデータの基礎知識

プログラミング実習I

2. 印刷対象のサイズの確認 大判印刷を行う場合 まず 印刷をする文書のサイズを確認する必要があります サイズの確認の方法はアプリケーションによって異なるので ここでは PowerPoint(2010/2013) と Adobe Acrobat を例に説明します PowerPoint2010 の場合

目次 1. 変換の対象 砂防指定地 XML 作成メニュー シェープファイルからXMLへ変換 砂防指定地 XMLとシェープファイルの対応.csv 変換処理 CSVファイルによる属性指定... 5

第 32 回文書ファイルの保存に関する Word の裏技 WORD2013 の裏技 第 32 回文書ファイルの保存に関する Word の裏技 1. 新しく作成した文書に名前を付けて保存する方法 作成した文書をファイルとして保存しておけば 後から何度でも利用できる 文書をはじめて保存する場合は 文書に

Word2013基礎 基本操作

エクセルの基礎を学びながら、金額を入力すると自動的に計算され、1年分の集計も表示される「おこづかい帳」を作りしょう

だれでもできる3Dイラスト_基本操作マニュアル

講習No.1

Adobe Readerの使い方

Microsoft Word - 30-PDFガイド.doc

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

PDF・画像の貼付け

Microsoft Word - 205MSPowerpoint2010

WebReportCafe

Microsoft Word - 2._5)OLAPツール『Query & Analysis』の「データ転送」機能.docx

(Microsoft Word - 01PowerPoint\217\343\213\211C\203p\203^\201[\203\223\222m\216\257\225\\\216\206.doc)

UIOUSBCOM.DLLコマンドリファレンス

Android Layout SDK プログラミング マニュアル

問題 1 次の文章は 作業環境について述べたものである を解答群 { } より選び その記号で答えよ にあてはまる適切なもの 設問 1. < 図 1>はルーラーの一部である 1に示されるインデントマーカーを移動することにより を設定することができる < 図 1> { ア. 1 行目のインデントイ.

出力可能なバーコードの種類 出力可能なバーコードの種類各バーコードはそれぞれのバーコードの仕様に準拠します バーコードの種類 PDF417 MICROPDF417 対応バーコードの名称 PDF417 マイクロ PDF417 操作例 PDF417 商品コードの内容を PDF417 にする 作成された

基本作図・編集

目次 1. アニメーションの軌跡の概要と仕組み 3 2. パノラマ写真にアニメーションの軌跡を設定 まとめ 課題にチャレンジ 19 レッスン内容 アニメーションの軌跡の概要と仕組み アニメーションの軌跡とは スライドに配置したオブジェクト ( テキストや図形 画像など ) を

PowerPoint プレゼンテーション

Microsoft Word A02

改訂履歴

Marionette操作説明

Microsoft Word - ECALSDS01_Vr1_5_080305_ja.doc

Microsoft PowerPoint - ad11-09.pptx

スライド 1

目次 Adobe PDF でチェック & コメントのススメ チェック & コメントをはじめる前に チェック & コメントでよく使うツール ( その ) 6 チェック & コメントでよく使うツール ( その ) 8 コメントの確認と返信 0 共有レビュー機能で効率をさらにアップ 共有レビュー機能を使う

NFC ucode タグのメモリフォーマット規定

20180308森の日県南支部 林

GrWinを用いたグラフィクス・プログラミング

スライド 1

(Microsoft PowerPoint -

Word2007 Windows7 1 パンジーを描こう 暮らしのパソコンいろは 早稲田公民館 ICT サポートボランティア

Microsoft PowerPoint - 講義資料-mlib

Microsoft PowerPoint - prog04.ppt

Word で納涼祭のポスターを作成しましょう 図形を使ってビールと枝豆のイラストを描き ワードアートとテキストボックスを挿入して文字を書きます 背景には 図形や写真を挿入してみましょう I. Word の起動 Word2013 別紙 2-1 参照 1 ( スタート ) をクリックします 2 すべての

スライド 1

BACREX小売パターンドキュメント

Create!Form V11 - インポート

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

SIMA地番テキスト配置 操作説明書

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

Taro-ファイル処理(公開版).jtd

_責)Wordトレ1_斉木

2 文字列と間隔 文字の横幅のみを変更 文書内の文字間隔は一定で ペー ジ設定 で設定するが 特定の文字 だけ変更する時に使用する 文字の書式には自動継続機能がありますので 書式を設定した次の文字にも同じ書式が設定されます Enter キーを押して 改行しても同様です その為 文字を入力した後で選択

目次 第 1 章はじめに 取扱いについて 記載内容について... 6 第 2 章基本操作 Excel Online を開く ファイル ( ブック ) を作成する ファイル ( ブック ) を開く..

<< 目次 >> 1 PDF コンバータのインストール ライセンスコードの入力 PDF にフォントを埋め込みたい場合の設定 PDF オートコンバータ EX で使用しない場合 PDF コンバータ単体で使用する場合の説明 PDF コンバータのアン

Transcription:

アジェンダ PDFとは何か PDFの作成方法 PDFのファイル構造 PDFの文法 要素 文書構造 PDFのグラフィックス テキストの描画

PDF とは何か < そんなのみんな知ってるだろうけど Adobe Systems 社によって開発された 電子文書のためのフォーマット Portable Document Format 印刷ページ記述言語 PostScript が原型になっている Adobe Reader 等で PDF 文書の閲覧できる ファイルフォーマットの仕様は公開されている http://www.adobe.com/devnet/pdf/pdf_reference.html 最新版の PDF リファレンス (PDF1.7, Acrobat 8, 英語 )» http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference_1-7.pdf 日本語版 (PDF リファレンス第 2 版 Adobe Portable Document Format Version 1.3)» http://www.amazon.co.jp/dp/4894713381

PDF の作成方法 ( http://ja.wikipedia.org/wiki/pdf の方が詳しい w) Acrobat を使う 購入する必要がある! 2007 Microsoft Office プログラム用 Microsoft PDF/XPS 保存アドイン 2007 Office が必要 http://www.microsoft.com/downloads/details.aspx?familyid=4d951911-3e7e-4ae6-b059- a2e79ed87041&displaylang=ja その他 http://ja.wikipedia.org/wiki/pdf%e3%82%bd%e3%83%95%e3%83%88%e3%82%a6%e3%82%a7%e3%82%a2%e3%81%ae%e4%b8%8 0%E8%A6%A7 商用ソフトウェア オープンソースソフトウェア (OpenOffice.org, GhostScript, 等など ) フリーウェア ( クセロ PDF, PrimoPDF 等 ) ライブラリ (itext, PDFLib )

PDF の仕様は公開されているので PDF リファレンス (PDF Reference, version 1.7) http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference_1-7.pdf があれば誰でも作成できるはず! 実は基本はテキストベースです 暇人プログラマなら一度は PDF の内部を解析してみたいと思いませんか! 自分で作成してみましょう! 以下に最小のサンプルがありますが PDF Reference, version 1.7(p.1057)» APPENDIX G - GExample PDF Files-G.1Minimal PDF File

ヘッダ %PDF-1.4 ボディ PDF のファイル構造 バイナリを含む場合この後に 4bytes 以上のバイナリ文字推奨 ファイル転送ソフトにバイナリファイルとして認識させるため 間接オブジェクト ( 詳細後述 ) の並び ( オブジェクト参照番号 ) ( 生成番号 ) obj ~ endobj 1 0 obj ( ここに内容詳しくは後述 ) endobj

相互参照表 PDF のファイル構造 各間接オブジェクトのオフセットの表 トレーラ xref ( サブセクション 1) ( サブセクション 2) サブセクション ( 通常 1 つでよい ) ( 先頭オブジェクト番号 ) ( エントリ数 ) エントリ nnnnnnnnnn ggggg (n か f) (eol) 計 20 bytes 例 :0000000010 00000 n trailer ( トレーラ辞書 Root のオフセットなど詳細後述 ) startxref (xref のオフセット Reader はここから読む ) %%EOF

最小限の PDF ファイルのサンプル %PDF-1.4 ヘッダ 1 0 obj <</Type /Catalog /Pages 2 0 R ボディ >> endobj 2 0 obj <</Type /Pages /Kids [3 0 R] /Count 1 >> endobj 3 0 obj <</Type /Page /Parent 2 0 R /MediaBox [0 0 612 792 ] /Contents 4 0 R /Resources <</ProcSet 5 0 R >> >> endobj 4 0 obj <</Length 0 >> stream endstream endobj 5 0 obj [/PDF ] endobj xref 0 6 0000000000 65535 f 0000000010 00000 n 0000000063 00000 n 0000000125 00000 n 0000000251 00000 n 0000000305 00000 n trailer << /Size 6 /Root 1 0 R >> startxref 331 %%EOF 相互参照表 トレーラ まっさらな A4 白紙 1 ページ の PDF です まだ小さくできるはずです!

文字 通常文字 ( 下記以外 ) PDF の文法 区切り文字 (,),<,>,[,],{,},/,% 空白文字 ( 連続していても 1 つとして扱われる ) 0x00 (NULL),0x09,(TAB) 0x0A (LF),0x0D(CR), 0x20(SPACE). コメント % から行末まで ヘッダ %PDF-1.4 と %%EOF 以外意味はない

PDF の要素 オブジェクト (PDF の基本要素 ) オブジェクト説明例 ヌルなしを意味する null 論理値 true / false true false 整数符号付き整数値 0-10 100 実数符号付き実数値 0.2 2-1.1.003 文字列 文字列 (abc) <FEFF006100620063> 名前一意の識別子 /AAA /BBB 配列 1 次元のコレクション [0 0 200 100] [[1 0] [0 1]] 辞書名前 - オブジェクトの連想配列 <</A 1 /B 2 /C 3>> ストリームバイト列辞書 +stream ~endstream

PDF の要素 文字列オブジェクト 文字列をあらわすバイト列 リテラル表記 () で囲む 例 :(ABC) 一部の文字はエスケープする必要あり 16 進表記 <> で囲む 文字コードを 16 進数で表記 例 :<FEFF006100620063> リテラル文字列エスケープシーケンス 意味 n 改行 (LF) r 復帰 (CR) t タブ b バックスペース f 改頁 ( 左括弧 ) 右括弧

辞書オブジェクト PDF の要素 PDF の主要な構成要素 << と >> に囲まれたキーと値オブジェクトの並び << /Key1 Value1 /Key2 Value2.. >> キーは名前オブジェクトである必要がある Type 項目によって型を特定する ( 値は名前オブジェクト )

PDF の要素 ストリームオブジェクト バイト列を表す ( 画像やページコンテンツに使用 ) ( ストリーム辞書 ) stream ( バイトの並び ) endstream ストリーム辞書 主な項目 キー値の型説明 Length 整数バイト列の長さ Filter 名前 配列バイト列に適用されるフィルタ種類

間接オブジェクト オブジェクト識別子 オブジェクト番号 PDF の要素 生成番号 新しいファイルでは 0 間接オブジェクトの定義 ( オブジェクト番号 ) ( 生成番号 ) obj ( 内容 ) endobj 間接オブジェクトの参照 ( オブジェクト番号 ) ( 生成番号 ) R

trailer 辞書 PDF のファイル構造 2 文書レベルでの特殊なオブジェクトの情報 PDF を読み込むアプリのために存在する キー 値の型 説明 Size 整数 相互参照表に含まれるエントリの数 Root 辞書 Catalog 辞書 Encrypt 辞書 暗号化辞書 Info 辞書 文書情報辞書 ID 配列 ファイル識別子

文書カタログ ページツリー PDF の文書構造 ページ1» コンテントストリーム ページ2» コンテントストリーム. Catalog Pages Page Page Page Outlines Outlines アウトラインツリー ( 今回は説明割愛 ) アウトラインエントリ 1. Outlines

文書カタログ Catalog 辞書 PDF の文書構造 PDF 文書のルート Trailer 辞書のRootの値となる 主な項目 キー 値の型 説明 Type 名前 Catalog Pages 辞書 ページツリーのルート Outlines 辞書 しおりツリーのルート

ページツリー ページノード辞書 ページツリーのノード 主な項目 PDF の文書構造 キー 値の型 説明 Type 名前 Pages Parent 辞書 親 Pages 辞書 Kids 配列 PagesまたはPage 辞書の配列 Count 整数 子孫 Pageの数

ページツリー ( ページ ) PDF の文書構造 ページオブジェクト辞書 ページツリーのリーフ 主な項目 キー値の型説明 Type 名前 Page Parent 辞書親 Pages 辞書 Resources 辞書 コンテントストリームの中で参照するリソー スの辞書 MediaBox 矩形 ( 配列 ) 印刷時の出力可能最大領域 Contents ストリーム内容を記述するコンテントストリーム

ページ内容 リソース辞書 PDF の文書構造 ページコンテントストリームから使用する文書レベルのオブジェクトの参照 キー値の型説明 ProcSet 配列手続きセット (PostScript 時代の名残 ) Font 辞書コンテントストリームの中で参照するリソースの辞書 Pattern 辞書塗りつぶし模様 Sading 辞書塗りつぶし模様 ColorSpace 辞書色空間の指定 コンテントストリーム ストリームオブジェクトである ページに描画するグラフィックスオペレータから構成される ( 次のスライド以降で説明 ) グラフィックスオブジェクト パス テキストからなるベクタグラフィックスが基本 ラスタイメージ フォント 塗りつぶしパターン

グラフィックスの要素 PDF グラフィックス パスと呼ばれる 直線とベジエ曲線で構成される図形が基本 グラフィックスオブジェクト パスオブジェクト テキストオブジェクト インラインイメージ グラフィックスオペレータ ( 大 小文字区別あり ) ( オペランドの並び ) ( オペレータ )

パス構築オペレータ PDF グラフィックス パスオブジェクトを作成する オペランドオペレータ説明 x y m パスを開始 カレントポイントを (x,y) に移動する いわゆるMoveTo x y l カレントポイントを始点 (x,y) を終点とする線分を描き カレントポイントを (x,y) に移動いわゆるLineTo x1 y1 x2 y2 x3 y3 c 3 次 Bezier 曲線を描画 h Path を閉じる ( カレント - 始点を結ぶ ) x y w h re 左下座標 (x, y) 幅 w 高さ h の矩形

PDF グラフィックス パスペイントオペレータ パスを終了し ペイントする オペランド オペレータ 説明 s ストロークする ( 輪郭を描く ) f パスの内部を塗りつぶす b パスの内部を塗りつぶしストロークする f* fと同じ 塗りつぶしがALTERNATEモード b* bと同じ 塗りつぶしがALTERNATEモード n ( パスを終了するだけ )

PDF グラフィックス グラフィックス状態オペレータ 状態を操作するもの オペランドオペレータ説明 q Q カレントグラフィックス状態をスタックに保存 SaveDC のようなもの カレントグラフィックス状態をスタックから復元 RestoreDC のようなもの a b c d e f cm カレント座標変換行列に行列を連結 linewidth w 線幅 LineCap J 線の端の形状 (0,1: ラウンド,2: スクウェア ) linejoin j 線の結合部の形状 (0,1: ラウンド,2: ベベル )

カラーオペレータ オペランド オペレータ PDF グラフィックス 説明 r g b RG ストロークの色をセットする (0.0-1.0) r g b rg 塗りつぶしの色をセットする (0.0-1.0) gray G ストロークの色をセットする (0.0-1.0) gray g 塗りつぶしの色をセットする (0.0-1.0) c m y k K ストロークの色をセットする (0.0-1.0) c m y k k 塗りつぶしの色をセットする (0.0-1.0) c1 c2 c3 name SCN ストロークの色空間の設定 c1 c2 c3 name scn 塗りつぶしの色空間の設定

イメージ PDF グラフィックス イメージ XObject( 今回は残念ながら割愛 ) インラインイメージ (4KB 以下推奨 ) オペレータ BI ID EI 説明 インラインイメージオブジェクトを開始 イメージデータの開始 インラインイメージオブジェクトを終了 詳細略 例 : BI /W 16 %( 幅 ) /H 16 %( 高さ ) /BPC 8 %(bit 深度 ) /D [0 1] %(bit 色 ) ID ( データ ) EI

テキストオブジェクトオペレータ PDF のテキストの描画 オペレータ BT ET 説明 テキストオブジェクトを開始 テキストオブジェクトを終了 テキスト配置オペレータ オペランド オペレータ 説明 x y Td カレントを相対座標 (x,y) に移動する a b c d e f Tm テキスト行列を指定のものに置き換える テキスト表示オペレータ オペランド オペレータ 説明 string Tj Stringを表示 テキスト状態オペレータ オペランド オペレータ 説明 font size Tf カレントフォントとカレントフォントサイズを設定 charspace Tc 文字間スペーシング scale Tz 水平スケーリング

フォントデータ PDF のフォント フォント辞書で定義される いくつかのフォントタイプに分類され Subtype 項目で指定される Subtype Type0 Type1 TrueType CIDFontType2 説明 コンポジットフォント 通常の欧米圏フォント TrueType に基づく Type0 の子になるフォント TrueType に基づく日本語フォントはすべてこれ

PDF のフォント フォント辞書 ( とても詳細にご紹介しきれないです ) 例だけで許してください 小さいですが Type0(CIDFontType2) フォント MS Pゴシック の例 : % FontDescriptor 辞書 Type1 フォント Helvetica(Arial) の例 : << /Type /Font /Subtype /Type1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> 7 0 obj << /Type /Font /Subtype /Type0 /BaseFont /MSPGothic /Encoding /90msp-RKSJ-H /DescendantFonts [8 0 R] >> endobj 8 0 obj << /Type /Font /Subtype /CIDFontType2 /BaseFont /MSPGothic /FontDescriptor 9 0 R 9 0 obj << /Type /FontDescriptor /Ascent 859 /CapHeight 859 /Descent -141 /Flags 6 /FontBBox [-100-141 842 1000] /FontName /MSPGothic /ItalicAngle 0 /StemV 76 /XHeight 430 /StemH 76 /MissingWidth 418 /MaxWidth 742 /AvgWidth 418 /Style <</Panose <000000000000000000000000>>> >> /CIDSystemInfo << /Registry (Adobe) /Ordering (Japan1) /Supplement 2 >> /W 10 0 R % 文字幅配列の参照 ( 詳細略 ) /DW 1000 >>

まとめ 結論 (?) PDF ファイルは主に辞書オブジェクトとストリームオブジェクトからなる 目に見える部分はグラフィックスオペレータで描画されている ご紹介しきれなかったことも多数あります ごめんなさい 無駄な努力茨の道かもしれません 本格的な画像挿入や日本語の表示をするとなると かなり面倒です ( 笑 ) というわけで 実用的には itext などのライブラリの使用を推奨します ( 笑 )