Copper PDF 3.0 説明書 2015-11-19



Similar documents
Copper PDF 3.0 説明書

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

2 課 題 管 理 ( 科 学 研 究 費 補 助 金 ) 画 面 が 表 示 されます 補 助 事 業 期 間 終 了 後 欄 の[ 入 力 ] をクリックします [ 入 力 ]ボタンが 表 示 されていない 場 合 には 所 属 する 研 究 機 関 の 事 務 局 等 へお 問 い 合 わせく

工事記録写真チェックシステム 操作説明書

2 科 学 研 究 費 助 成 事 業 のトップページ 画 面 が 表 示 されます [ 研 究 者 ログイン]をクリック します 掲 載 している 画 面 は 例 示 です 随 時 変 更 されます 3 科 研 費 電 子 申 請 システムの 応 募 者 ログイン 画 面 が 表 示 されます e

C.1 共 有 フォルダ 接 続 操 作 の 概 要 アクセスが 許 可 されている 研 究 データ 交 換 システムの 個 人 用 共 有 フォルダまたは メーリングリストの 共 有 フォルダに 接 続 して フォルダを 作 成 したり ファイル をアップロードまたはダウンロードしたりすることがで

目 次 1. Web メールのご 利 用 について Web メール 画 面 のフロー 図 Web メールへのアクセス ログイン 画 面 ログイン 後 (メール 一 覧 画 面 ) 画 面 共 通 項 目

ファイルサーバー(NFS) 構築ガイド

Microsݯft Word - 91 forܠ2009November.docx

雇用保険被保険者資格取得届(様式)編

MetaMoJi ClassRoom/ゼミナール 授業実施ガイド

の と す る (1) 防 犯 カ メ ラ を 購 入 し 設 置 ( 新 設 又 は 増 設 に 限 る ) す る こ と (2) 設 置 す る 防 犯 カ メ ラ は 新 設 又 は 既 設 の 録 画 機 と 接 続 す る こ と た だ し 録 画 機 能 付 防 犯 カ メ ラ は

1.2. ご 利 用 環 境 推 奨 ブラウザ Internet Explorer Google Chrome(バージョン 32 時 点 で 動 作 確 認 済 み) Mozilla Firefox(バージョン 26 時 点 で 動 作 確 認 済 み) Safari 7

Copper PDF 3.2 説明書

項 目 設 定 設 置 可 能 項 目 数 100 項 目 投 票 フォームの 設 置 可 能 投 票 項 目 数 1 項 目 (10 選 択 肢 ) 必 須 項 目 設 定 条 件 項 目 設 定 添 付 ファイル 合 計 容 量 入 力 項 目 を 必 須 項 目 に 設 定 できます フォーム

あいち電子調達共同システム

医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート - 目 次 - < 第 1 章 > 共 通 事 項 説 明 医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート 目 次 1.1 本 システムの 注 意 点 入 力 項 目 について 基 本 情

PowerPoint プレゼンテーション

文科省様式3-2集計オプションマニュアル

目 次 機 能 運 用 上 の 注 意 処 理 手 順 画 面 説 明 ログイン 直 送 先 選 択

PDF閲覧制限システムLight版体験版マニュアル

SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 文 言 変 更 p.12(1. 基 本 事 項 ) (5)SXF 入 出 力 バージョン Ver.2 形 式 と Ver.3.0 形 式 および Ver.3.1 形 式 の 入 出 力 機 能 を

PowerPoint プレゼンテーション

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

< 目 次 > 8. 雇 用 保 険 高 年 齢 雇 用 継 続 給 付 27 ( 育 児 休 業 給 付 介 護 休 業 給 付 ) 8.1 高 年 齢 雇 用 継 続 給 付 画 面 のマイナンバー 設 定 高 年 齢 雇 用 継 続 給 付 の 電 子 申 請 高

iStorage ソフトウェア VMware vSphere Web Client Plug-in インストールガイド

節 実 施 期 間 実 施 級 実 施 期 間 情 報 処 理 第 回 は 級 と 級 のみ 実 施 各 期 間 内 回 の 受 験 となります C 言 語 Java Visual Basic ワードプロセッサ 第 回 は 級 のみ 実 施 第 回 は 級 のみ 実 施 第 回 は 級 と 級 のみ

目 次 ログインする 前 に... 4 メンバー 管 理 編 ( 管 理 者 )... 5 ログインする... 6 トップページについて... 7 メンバー 管 理 をする... 8 メンバー 管 理 画 面 について 医 療 機 関 指 定 新 規 追 加 指 定...

参加表明書・企画提案書様式

スライド 1

メール 受 信 画 面 のレイアウトを 変 更 することができます ここでは 初 期 設 定 のレイアウトで 表 示 されているボタ ンやマークについて 解 説 します メール 一 覧 画 面 には 受 信 したメールが 一 覧 表 示 されます メール 受 信 タブをクリックすると 受 信 箱 フ

SchITコモンズ【活用編】

変 更 履 歴 日 付 Document ver. 変 更 箇 所 変 更 内 容 2015/3/ 新 規 追 加 2015/9/24 誤 字 修 正 2016/2/ 動 作 環 境 最 新 のものへ 変 更 全 体 オペレーター の 表 記 を 削 除 2016/5/

アドイン翻訳について

贈与税 faq

Acrobat早分かりガイド

スライド 1

1-1 一覧画面からの印刷

<4D F736F F D2090C389AA8CA72D92F18F6F2D D F ED28CFC82AF91808DEC837D836A B E838B A815B816A2E646F6378>

R4財務対応障害一覧

POWER EGG V2.01 ユーザーズマニュアル ファイル管理編

研究者情報データベース

目 次 はじめに キャンパスメールを 利 用 するには キャンパスメール 利 用 申 請 を 行 う アカウント 有 効 化 (アクティベーション)を 行 う メールの 利 用 WEB ブラウザからメールを 利 用

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合

富士山チェックリスト

1.3. アドインボタンの 場 所 2007 / 2010 / 2013 / 2016 の 各 バージョンのアプリケーションにおいては アドインボタン はリボン 名 アンテナハウス に 登 録 されます アドインボタンの 表 示 状 態 (Word 2010 の 例 ) アドインボタンの 表 示 状

PowerPoint Presentation

ログイン ブラウザから TDPOST へアクセス ログイン GC-(お 客 様 名 )フォルダを 選 択 各 作 業 へ ブラウザを 起 動 します (Internet Explorer Safari Firefox など) 下 記 アドレスをブラウザのアドレス 入 力 欄 に 入 力 します ht

<4D F736F F D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A B E A2E646F63>

目 次 必 ずお 読 みください 接 続 方 法 WEB ブラウザ 操 作 方 法 閲 覧 用 PC で 直 接 ZERO 本 体 と 接 続 する 場 合 各 ページについて 発 電 状 況 画 面 表 示... 3

Microsoft PowerPoint _リビジョンアップ案内_最終.pptx

WEBメールシステム 操作手順書

CSV_Backup_Guide


目 次 第 1 章 は じ め に... 3 第 2 章 基 本 的 な キ ー 操 作... 4 第 3 章 メ ニ ュ ー 画 面... 6 第 4 章 入 荷 業 務... 7 第 5 章 出 荷 業 務... 9 第 6 章 商 品 照 会...11 第 7 章 棚 卸 業 務...12 第

Microsoft Word - Active.doc

目 次 アカウント 取 得... 1 Blogger にログイン... 3 Blogger の 基 本 ページ... 4 新 規 ブログの 作 成... 5 ブログの 管 理 画 面... 5 ブログの 投 稿... 6 挿 入 画 像 の 設 定... 7 ページの 作 成... 8 レイアウトの

Microsoft Word - 養生学研究投稿規定(改)

前 書 き 広 域 機 関 システム System for Organization for Cross-regional Coordination of Transmission Operators(OCCTO) rev: 商 標 類 Windows Office Excel

・モニター広告運営事業仕様書

インストール インストール ダウンロードしたファイルをダブルクリックすると 下 記 のファイルが 展 開 されます JigenApp.exe JigenRestart.exe JIGENctrl.dll PC 内 の 任 意 の 同 一 フォルダに 上 記 ファイル 全 てコピーします インストール

6 システムを 入 れているパソコンを 入 れ 替 えたいが どうしたらいいのか 元 のパソコンから 新 しいパソコンに 昨 年 度 入 力 データを 移 行 します 手 順 は 次 のとおりです 1 元 のパソコンでシステムを 起 動 して メニュー 画 面 から バックアップ リカバリ を 選

目 次. WEB メールへのログイン.... メール 送 信 手 順.... メール 受 信 手 順 アドレス 帳 の 操 作 手 順 フォルダーの 操 作 手 順 メール 発 信 者 登 録 署 名 登 録 手 順 基 本 的 な 設 定

入 札 参 加 資 格 申 請 システム 操 作 マニュアル 入 札 参 加 資 格 の 資 格 有 効 ( 変 更 ) 日 を 迎 えると 追 加 届 の 登 録 ができるようになります ( 入 札 参 加 資 格 申 請 の 定 時 受 付 では いずれかの 申 請 先 団 体 から 入 札 参

■ユーザ

スライド 1

ご 注 意 (1) 本 書 の 内 容 の 一 部 又 は 全 部 を 無 断 で 転 載 することは 禁 止 されています (2) 本 書 の 内 容 は 将 来 予 告 無 しに 変 更 することがあります (3) 本 書 の 内 容 は 万 全 を 期 して 作 成 しておりますが ご 不 審

同 期 を 開 始 する( 初 期 設 定 ) 2 1 Remote Link PC Sync を 起 動 する 2 1 接 続 機 器 の [PIN コード ] [ ユーザー 名 ] [ パスワード ] を 入 力 する [PIN コード ] などの 情 報 は 接 続 機 器 の 設 定 画 面

表紙

MapDK3のインストール

CENTNET 導 入 の 手 引 き 変 更 履 歴 No. 変 更 日 変 更 番 号 変 更 枚 数 備 考 /07/ 版 発 行 - システムリプレースにより 全 面 刷 新 //07/ 版 発 行 3 誤 字 等 の 修 正 /

目 次 目 次... 本 書 の 見 かた... 2 商 標 について... 2 オープンソースライセンス 公 開... 2 はじめに... 3 概 要... 3 使 用 環 境 について... 4 対 応 している OS およびアプリケーション... 4 ネットワーク 設 定... 4 Googl

<4D F736F F D B382F182AC82F18A4F88D B A82B D836A B5F8F898AFA90DD92E85F E646F E302E646F6378>

ThinkBoard Free60 Manual

「給与・年金の方」からの確定申告書作成編

Untitled

Cloud Disk とは インターネット 上 (クラウド)に 大 切 なデータを 保 存 することが 出 来 る 便 利 なアプリケーション (オンラインストレージ)です 本 資 料 について Cloud Disk サービスは マイナーバージョンアップ 等 もあるため 実 際 のクライアントと 本

Microsoft Word - FrontMatter.doc

Office365 ProPlus 利用方法について

目 次 目 次... 1 本 書 の 見 かた... 2 商 標 について... 2 オープンソースライセンス 公 開... 2 はじめに... 3 概 要... 3 使 用 環 境 について... 4 対 応 している OS およびアプリケーション... 4 ネットワーク 設 定... 4 Goo

BizDataBank とは インターネット 上 (クラウド)に 大 切 なデータを 保 存 することが 出 来 る 便 利 なアプリケーション (オンラインストレージ)です 本 資 料 について BizDataBank サービスは マイナーバージョンアップ 等 もあるため 実 際 のクライアントと

「1 所得税及び復興特別所得税の確定申告書データをお持ちの方」からの更正の請求書・修正申告書作成編

技術報告会原稿フォーマット

ATOK Syncの設定方法と使い方(Mac用)

別冊資料-11

<4D F736F F D F B B838082F090DD927582B782E995FB96405F E646F6378>

PDF閲覧制限システム(簡易版)概説書

目 次 機 能 概 要 配 信 管 理 1. メールの 配 信 履 歴 と 予 約 を 確 認 する

本 操 作 説 明 書 について 本 操 作 説 明 書 は 物 品 電 子 調 達 システム 入 札 参 加 資 格 審 査 申 請 についての 操 作 を 説 明 したものです 動 作 環 境 本 アプリケーションは 以 下 の 環 境 にて 動 作 致 します OS 日 本 語 Microso

この 章 では 電 子 入 札 システムをご 利 用 いただくための 事 前 準 備 について 説 明 します 事 前 準 備 と して ID 初 期 パスワードの 確 認 初 期 パスワード 初 期 見 積 用 暗 証 番 号 の 変 更 IC カード 登 録 またはICカード 更 新 を 行 っ

ozzio drive とは インターネット 上 (クラウド)に 大 切 なデータを 保 存 することが 出 来 る 便 利 なアプリケ ーション(オンラインストレージ)です 本 資 料 について ozzio drive サービスは マイナーバージョンアップ 等 もあるため 実 際 のクライアン ト

Microsoft Word - 311Tools_END

<4D F736F F D C97F195CF8AB DEC90E096BE8F912091E6312E313294C52E646F63>

CubePDF ユーザーズマニュアル

Microsoft Word - TechSmith Deployment Tool Documentation.docx

Microsoft PowerPoint - webサイト更新マニュアル ppt [互換モード]

CSS-Net インストール要領書

購買ポータルサイトyOASIS簡易説明書 b


5 振 込 依 頼 書 の 作 成 方 法 ()ツールの 起 動 コピーまたはダウンロードしたツールをダブルクリックして 開 いてください (ツール 起 動 の 際 マクロを 有 効 にしてください ) ダブルクリック 後 以 下 のメッセージが 出 力 されますので 読 み 取 り 専 用 ボタン

Transcription:

297mm height / 210mm width / HTML PDF変換サーバー Copper PDF バージョン 3.0 説明書 発売元 株式会社 GNN 2015-11-19

NOTICE Copper PDF 2011-2015 Zamasoft. All rights reserved. This product includes software developed by Andy Clark. This product includes software developed at The Apache Software Foundation (http://www.apache.org/). This software contains code from the World Wide Web Consortium (W3C) for the Document Object Model API (DOM API), SVG Document Type Definition (DTD) and the The Simple API for CSS (SAC API).

目 次 1.Copper PDF 入 門 1 1.1 Copper PDFの 概 要 1 1.1.1 Copper PDFとは 1 1.1.2 なぜCopper PDFが 必 要 か 2 1.2 動 作 環 境 4 1.2.1 サーバー 4 1.2.2 プログラミングインターフェース(API) 5 旧 インターフェース(CTIP 1.0) 5 Java ドライバ 5 Perlドライバ 5 PHPドライバ 5 新 インターフェース(CTIP 2.0) 5 Java ドライバ / transcode Antタスク 5 Perlドライバ 5 PHPドライバ 6.NETドライバ 6 HTTP / RESTインターフェース 6 1.3 機 能 一 覧 7 1.3.1 入 力 データ 形 式 7 ドキュメント 7 スタイルシート 7 ベクター 画 像 データ 7 ラスター(ビットマップ) 画 像 データ 8 1.3.2 PDF 出 力 8 1.3.3 画 像 出 力 8 1.3.4 フォント 関 連 機 能 9 1.3.5 HTTP 接 続 9 1.3.6 印 刷 サポート 9 1.3.7 目 次 ページ 参 照 9 1.3.8 プログラムインターフェース 10 Copper PDF 2.0 以 前 10 Copper PDF 2.1 以 降 10 1.3.9 その 他 の 機 能 10 1.4 とりあえず 使 ってみよう 11 1.4.1 Copper PDFのインストール 11 1.4.2 ウェブインターフェースでHTMLを 変 換 する 12 1.4.3 コマンドラインアプリケーションでHTMLを 変 換 する 13 1.4.4 プログラムからHTMLを 変 換 する 14 2. 管 理 者 ガイド 18 2.1 セットアップ 18 2.1.1 Java 実 行 環 境 のインストール 18 2.1.2 Copper PDF の 配 布 パッケージ 18 2.1.3 Windows 2000/XP/Vista/7 18 付 属 のプログラムを 使 ってサービスをインストールする 19 Windows XP 以 前 19 Windows Vista 以 降 19 Java Service Wrapperを 使 ってサービスをインストールする[2.1.4] 20 iii

サービスの 管 理 と 動 作 状 態 の 確 認 20 2.1.4 Red Hat Enterprise Linux(RHEL) / CentOS 21 Copper PDFサーバーの 起 動 停 止 22 2.1.5 Debian 22 Copper PDFサーバーの 起 動 停 止 23 2.1.6 FreeBSD 23 Copper PDFサーバーの 起 動 停 止 24 2.1.7 その 他 の 環 境 24 2.1.8 ディレクトリ 構 成 25 アーカイブ 内 のディレクトリ 構 成 25 RPMまたはDebianパッケージの 構 成 25 2.1.9 ライセンスキー ファイルの 配 置 26 2.1.10 旧 バージョンからのアップデート 26 2.2 Copper PDFのツール 27 2.2.1 copper コマンドラインアプリケーション 28 形 式 28 概 要 28 オプション 28 説 明 29 入 力 について 29 出 力 について 29 javaコマンドで 実 行 する 方 法 30 2.2.2 copper-webapp ウェブアプリケーション 30 概 要 30 javaコマンドで 実 行 する 方 法 31 2.2.3 copperd ドキュメント 変 換 サーバー 32 形 式 32 概 要 32 オプション 32 説 明 34 javaコマンドで 実 行 する 方 法 34 2.3 設 定 ファイル 36 2.3.1 Copper PDFサーバーの 動 作 設 定 (copperd.properties) 37 2.3.2 SSL/TLSの 設 定 38 秘 密 鍵 とCSRを 用 意 する 39 サイト 証 明 書 を 用 意 する 39 秘 密 鍵 とサイト 証 明 書 をキーストアに 格 納 する 39 2.3.3 Apacheを 通 しての 接 続 40 2.3.4 ログの 設 定 (logging.properties) 40 2.3.5 アクセス 制 御 の 設 定 (access.txt) 42 2.3.6 profilesディレクトリ 42 2.3.7 デフォルトの 入 出 力 プロパティ(default.properties) 42 2.3.8 fontsディレクトリ 43 2.4 フォントの 設 定 44 2.4.1 フォント 設 定 の 反 映 45 2.4.2 ドキュメント 中 でのフォントの 利 用 45 2.4.3 デフォルトのフォント 46 2.4.4 フォントの 種 類 46 2.4.5 コアフォント 47 2.4.6 CIDフォント 50 埋 め 込 みフォント 51 CID Identity 51 iv

CID-Keyed フォント 51 PANOSE コード 52 参 考 情 報 52 フォント 幅 情 報 ファイル 53 2.4.7 フォントファイルの 種 類 54 2.4.8 フォント 設 定 ファイル 54 コアフォントのエンコーディング(encodings 要 素 ) 54 encodingsに 含 まれる 要 素 55 cmapファイル(cmaps 要 素 ) 55 cmapsに 含 まれる 要 素 55 コアフォント(core-fonts 要 素 ) 55 core-fontsに 含 まれる 要 素 55 letter-font 55 symbol-font 56 letter-fontおよびsymbol-fontに 含 まれる 要 素 56 CIDフォント(cid-fonts 要 素 ) 57 cid-fontsに 含 まれる 要 素 57 cid-keyed-font 57 font-file 58 font-dir 59 system-font 59 all-system-fonts 60 cid-keyed-font, font-file, system-fontに 含 まれる 要 素 61 一 般 フォントファミリ(generic-fonts 要 素 ) 61 generic-fontsに 含 まれる 要 素 61 2.4.9 フォント 設 定 ファイルの 設 定 例 62 デフォルトのフォントの 変 更 62 3. 開 発 者 ガイド 63 3.1 プログラムインターフェースの 概 要 63 3.1.1 アプリケーションからCopper PDFの 機 能 を 使 うには 63 3.1.2 通 信 の 手 順 64 3.1.3 copperdへの 接 続 認 証 64 3.1.4 メッセージハンドラの 設 定 65 3.1.5 プログレスリスナの 設 定 65 3.1.6 出 力 先 の 設 定 65 3.1.7 変 換 結 果 の 出 力 先 の 設 定 65 3.1.8 入 出 力 プロパティの 設 定 65 3.1.9 URIの 解 決 と 関 連 ファイル(リソース)の 取 得 65 リソースにサーバーからアクセスする 場 合 67 URIパターン 68 リソースを 事 前 にサーバーに 送 る 場 合 69 ソースリゾルバを 使 う 場 合 69 3.1.10 設 定 のリセット 69 3.1.11 ドキュメント 本 体 の 送 信 または 変 換 対 象 のドキュメントの 指 定 69 ドキュメント 本 体 をサーバーに 送 る 70 ドキュメント 本 体 にサーバーからアクセスする 場 合 70 3.1.12 複 数 の 結 果 の 結 合 [3.0.0] 70 3.1.13 変 換 処 理 の 中 断 70 3.1.14 通 信 の 終 了 71 3.2 CTIP 1.0 インターフェースの 特 徴 72 3.2.1 結 果 サイズの 取 得 72 v

3.2.2 メッセージハンドラ(エラーハンドラ)の 設 定 72 3.2.3 CTIP 1.0 プロトコルの 仕 様 73 3.3 Java ドライバ1 74 3.3.1 使 用 方 法 74 3.3.2 APIの 概 要 74 サーバーへの 接 続 認 証 74 エラーハンドラ プログレスリスナの 設 定 75 出 力 先 の 設 定 75 プロパティの 設 定 75 リソースの 送 信 アクセス 許 可 75 本 体 の 送 信 75 通 信 の 終 了 75 3.3.3 サンプル 75 3.3.4 サーブレットの 作 成 77 3.3.5 フィルターを 使 ったServlet/JSPの 変 換 78 3.3.6 ソースコード 78 3.4 Perlドライバ1 79 3.4.1 使 用 方 法 79 3.4.2 APIの 概 要 79 サーバーへの 接 続 認 証 79 エラーハンドラ プログレスリスナの 設 定 79 出 力 先 の 設 定 79 プロパティの 設 定 79 リソースの 送 信 アクセス 許 可 80 本 体 の 送 信 80 通 信 の 終 了 80 3.4.3 サンプル 80 3.5 PHPドライバ1 83 3.5.1 使 用 方 法 83 3.5.2 APIの 概 要 83 サーバーへの 接 続 認 証 83 エラーハンドラ プログレスリスナの 設 定 83 出 力 先 の 設 定 83 プロパティの 設 定 84 リソースの 送 信 アクセス 許 可 84 本 体 の 送 信 84 通 信 の 終 了 84 3.5.3 サンプル 84 3.5.4 Content-Lengthヘッダの 送 信 86 3.6 copper Antタスク 87 3.6.1 Antタスクの 概 要 87 3.6.2 copper タスクの 使 用 方 法 87 3.6.3 うまく 動 かない 場 合 88 Can't connect to X11... というエラーが 表 示 される 88 ライセンスが 認 証 されない 場 合 89 3.7 CTIP 2.0 インターフェースの 概 要 91 3.7.1 接 続 情 報 91 3.7.2 メッセージコード 91 3.7.3 サーバー 情 報 91 http://www.cssj.jp/ns/ctip/version 92 http://www.cssj.jp/ns/ctip/output-types[3.0.0] 92 http://www.cssj.jp/ns/ctip/fonts[3.0.4] 92 vi

3.7.4 CTIP 2.0 プロトコルの 仕 様 93 3.8 Java ドライバ2 94 3.8.1 概 要 94 3.8.2 ドライバの 準 備 94 3.8.3 タイムアウトの 設 定 95 3.8.4 APIの 概 要 95 サーバーへの 接 続 認 証 95 サーバー 情 報 の 取 得 95 メッセージハンドラ プログレスリスナの 設 定 95 出 力 先 の 設 定 95 プロパティの 設 定 95 ソースリゾルバの 設 定 96 リソースの 送 信 96 本 体 の 送 信 変 換 96 複 数 の 結 果 の 結 合 96 処 理 の 中 断 リセット 通 信 の 終 了 96 3.8.5 サンプル 96 3.8.6 プログラミングのポイント 99 CTISessionHelperの 利 用 99 繰 り 返 し 処 理 100 出 力 先 (Results)の 設 定 100 サーバーから 要 求 されたリソースの 送 信 (SourceResolver) 100 MetaSource 101 複 数 の 結 果 の 結 合 101 abortによる 中 断 101 3.8.7 サーブレット/JSPでの 利 用 102 3.8.8 ソースコード 107 3.8.9 Copper PDFのライブラリに 直 接 アクセスする 107 3.8.10 JRubyを 使 う 場 合 108 3.8.11 Jythonを 使 う 場 合 110 3.9 Perlドライバ2 112 3.9.1 概 要 112 3.9.2 ドライバの 準 備 112 3.9.3 APIの 概 要 112 サーバーへの 接 続 認 証 112 サーバー 情 報 の 取 得 112 メッセージハンドラ プログレスリスナの 設 定 113 出 力 先 の 設 定 113 プロパティの 設 定 113 ソースリゾルバの 設 定 113 リソースの 送 信 113 本 体 の 送 信 変 換 113 複 数 の 結 果 の 結 合 113 処 理 の 中 断 リセット 通 信 の 終 了 113 3.9.4 サンプル 114 3.9.5 プログラミングのポイント 115 Content-Type, Content-Length ヘッダの 出 力 115 他 のプログラムを 呼 び 出 して 変 換 する 115 繰 り 返 し 処 理 116 出 力 先 の 設 定 116 サーバーから 要 求 されたリソースの 送 信 116 複 数 の 結 果 の 結 合 117 vii

3.9.6 ソースコード 118 3.10 PHPドライバ2 119 3.10.1 概 要 119 3.10.2 ドライバの 準 備 119 3.10.3 APIの 概 要 119 サーバーへの 接 続 認 証 119 サーバー 情 報 の 取 得 119 メッセージハンドラ プログレスリスナの 設 定 120 出 力 先 の 設 定 120 プロパティの 設 定 120 ソースリゾルバの 設 定 120 リソースの 送 信 120 本 体 の 送 信 変 換 120 複 数 の 結 果 の 結 合 120 処 理 の 中 断 リセット 通 信 の 終 了 120 3.10.4 サンプル 121 3.10.5 プログラミングのポイント 122 Content-Type, Content-Length ヘッダの 出 力 122 他 のプログラムを 呼 び 出 して 変 換 する 122 繰 り 返 し 処 理 123 出 力 先 の 設 定 123 サーバーから 要 求 されたリソースの 送 信 123 複 数 の 結 果 の 結 合 124 3.10.6 ソースコード 124 3.11.NETドライバ 125 3.11.1 概 要 125 3.11.2 ドライバの 準 備 125 3.11.3 タイムアウトの 設 定 125 3.11.4 APIの 概 要 126 サーバーへの 接 続 認 証 126 サーバー 情 報 の 取 得 126 メッセージハンドラ プログレスリスナの 設 定 126 出 力 先 の 設 定 126 プロパティの 設 定 126 ソースリゾルバの 設 定 126 リソースの 送 信 126 本 体 の 送 信 変 換 126 複 数 の 結 果 の 結 合 127 処 理 の 中 断 リセット 通 信 の 終 了 127 3.11.5 サンプル 127 3.11.6 プログラミングのポイント 131 Utilsの 利 用 131 繰 り 返 し 処 理 131 出 力 先 (Results)の 設 定 131 サーバーから 要 求 されたリソースの 送 信 (SourceResolver) 132 SourceInfo 133 複 数 の 結 果 の 結 合 133 Abortによる 中 断 134 3.12 Rubyドライバ 135 3.12.1 概 要 135 3.12.2 ドライバの 準 備 135 viii

3.12.3 APIの 概 要 135 サーバーへの 接 続 認 証 135 サーバー 情 報 の 取 得 135 メッセージハンドラ プログレスリスナの 設 定 136 出 力 先 の 設 定 136 プロパティの 設 定 136 ソースリゾルバの 設 定 136 リソースの 送 信 136 本 体 の 送 信 変 換 136 複 数 の 結 果 の 結 合 136 処 理 の 中 断 リセット 通 信 の 終 了 136 3.12.4 サンプル 137 3.12.5 プログラミングのポイント 138 Content-Type, Content-Length ヘッダの 出 力 138 繰 り 返 し 処 理 139 出 力 先 の 設 定 139 サーバーから 要 求 されたリソースの 送 信 139 複 数 の 結 果 の 結 合 139 3.12.6 ソースコード 140 3.13 Pythonドライバ 141 3.13.1 概 要 141 3.13.2 ドライバの 準 備 141 3.13.3 APIの 概 要 141 サーバーへの 接 続 認 証 142 サーバー 情 報 の 取 得 142 メッセージハンドラ プログレスリスナの 設 定 142 出 力 先 の 設 定 142 プロパティの 設 定 142 ソースリゾルバの 設 定 142 リソースの 送 信 142 本 体 の 送 信 変 換 142 複 数 の 結 果 の 結 合 142 処 理 の 中 断 リセット 通 信 の 終 了 143 3.13.4 サンプル 143 3.13.5 プログラミングのポイント 145 Content-Type, Content-Length ヘッダの 出 力 145 繰 り 返 し 処 理 145 出 力 先 の 設 定 145 サーバーから 要 求 されたリソースの 送 信 146 複 数 の 結 果 の 結 合 146 3.13.6 ソースコード 147 3.14 transcode Antタスク 148 3.14.1 Antタスクの 概 要 148 3.14.2 transcode タスクの 使 用 方 法 148 3.14.3 うまく 動 かない 場 合 (ローカルマシンで 実 行 する 場 合 ) 150 Can't connect to X11... というエラーが 表 示 される 150 ライセンスが 認 証 されない 場 合 150 3.15 HTTP/RESTインターフェース 152 3.15.1 概 要 152 3.15.2 アクションの 実 行 152 3.15.3 ウェブブラウザからのアクセス 155 3.15.4 Ruby (httpclient) 155 ix

3.15.5 Python (urllib2, urllib) 157 3.15.6 C# (.NET WebClient) 158 3.15.7 ASP.NET (C#, VisualBasic) 160 3.15.8 4th Dimension (Internet Commands) 162 3.15.9 その 他 のサンプルについて 165 3.16 HTTPクライアント 機 能 166 3.16.1 BASIC 認 証 またはDigest 認 証 166 3.16.2 プロクシの 設 定 167 3.16.3 HTTPヘッダの 送 信 167 3.16.4 参 照 元 (Referer)の 送 信 168 3.16.5 クッキーの 送 信 168 3.16.6 タイムアウトの 設 定 169 3.17 出 力 制 限 機 能 170 3.17.1 ページ 数 の 制 限 170 3.17.2 データサイズの 制 限 170 4.デザイナーガイド 171 4.1 Copper PDFによる 文 書 のレイアウト 171 4.1.1 Copper PDFで 文 書 をレイアウトするには 171 4.2 入 出 力 プロパティ 172 4.3 対 応 する 入 力 ファイル 174 4.3.1 HTML/XMLの 処 理 174 ドキュメントの 判 別 174 キャラクタ エンコーディング 174 文 書 情 報 175 XSLTスタイルシートの 適 用 176 4.3.2 画 像 176 Copper PDFがサポートする 画 像 176 他 の 画 像 形 式 の 利 用 176 ラスター(ビットマップ/ピクセルマップ) 画 像 176 GIF / PNG 画 像 176 JPEG / JPEG 2000 画 像 177 その 他 の 画 像 177 画 像 の 解 像 度 177 SVG 画 像 177 SVG 画 像 ファイルの 参 照 177 インラインSVG 178 画 像 を 読 み 込 めない 場 合 178 4.3.3 EPUB 電 子 書 籍 178 4.4 出 力 するファイル 形 式 179 4.4.1 PDFの 出 力 179 PDFのバージョンと 機 能 179 暗 号 化 179 ファイルの 添 付 181 PDFの 圧 縮 形 式 181 PDF 中 の 画 像 の 圧 縮 形 式 181 PDFの 表 示 環 境 のキャラクタ エンコーディング 182 作 成 更 新 時 刻 ファイルIDの 設 定 182 すかし 183 印 刷 時 だけ または 画 面 表 示 だけすかしを 表 示 する 185 PDF/A-1bに 準 拠 したファイルの 出 力 186 PDFビューワの 表 示 設 定 [3.0.2/2.1.11] 186 x

PDFの 表 示 の 際 に 実 行 されるJavaScript[3.0.2/2.1.11] 186 4.4.2 画 像 の 出 力 187 画 像 出 力 の 制 約 187 画 像 出 力 の 解 像 度 187 4.4.3 SVGの 出 力 187 4.5 一 般 的 なブラウザとの 互 換 性 188 4.5.1 互 換 性 モードの 切 り 替 え 188 4.5.2 標 準 モードとmsieモードの 違 い 188 CSSで 数 字 のクラス 名 が 認 識 される 188 CSSで':'の 代 わりに'='が 使 用 できる 189 CSSの 色 指 定 で#を 省 略 しても 認 識 される 190 CSSの 長 さ 指 定 で 単 位 を 省 略 しても 認 識 される 190 フォームの 前 後 にマージンが 設 定 される 190 段 落 と 見 出 しのマージン 上 下 のマージンをなくす 場 合 がある 190 ボックスの 幅 または 高 さに100%が 指 定 された 場 合 外 側 のボックスをはみ 出 さない190 絶 対 位 置 指 定 ボックス 浮 動 ボックスの 大 きさが 内 容 により 拡 張 される 191 通 常 のフローのボックスが 幅 が 指 定 されたボックスにより 拡 張 される 191 幅 がautoの 固 定 レイアウトテーブルが 固 定 レイアウトのまま 処 理 される 191 テーブル 行 に 対 するmax-height [css]が 適 用 されない 191 ブロックに 対 するline-height [css]による 高 さが 確 保 されない 191 全 角 スペースの 間 で 折 り 返 しされない 191 input 要 素 の 高 さが 強 制 される 192 マージンの 設 定 に 関 わらず 中 央 寄 せされる 192 匿 名 のテーブルセルにより 補 完 されない 192 インラインボックスにwidth [css]が 適 用 される 192 text-align [css]がブロックの 配 置 にも 適 用 される 192 テーブルカラムのプロパティがセルに 継 承 される 193 width [css]が 設 定 されたテーブルセルには{white-space: nowrap;が 適 用 されない 193 4.5.3 既 知 の 制 限 事 項 193 MS 明 朝 系 フォントの 文 字 幅 について 193 サポートしていないCSSプロパティ 194 4.5.4 自 動 レイアウトテーブル 194 4.6 XML/HTMLの 拡 張 機 能 195 4.6.1 見 出 し 195 ブックマーク 195 現 在 ページのセクション 195 4.6.2 目 次 の 生 成 195 4.6.3 リンクとフラグメント 197 フラグメント 識 別 子 によるリンク 197 -cssj-page-ref 関 数 197 4.6.4 注 釈 198 4.6.5 XML 中 でHTMLの 要 素 と 属 性 を 使 用 する 198 4.6.6 ルビ[3.0.0] 199 4.7 CSSによるドキュメントのレイアウト 201 4.7.1 スタイルシートの 型 201 4.7.2 メディアタイプ 201 4.7.3 ドキュメント 中 にスタイルシートを 記 述 する 201 HTMLのstyle 属 性 201 HTMLのstyle 要 素 202 jp.cssj.stylesheet 処 理 命 令 203 4.7.4 外 部 のCSSの 使 用 204 HTMLのlink 要 素 204 xi

CSSの@import 指 示 子 204 xml-stylesheet 処 理 命 令 205 4.7.5 デフォルトのスタイルシート 205 4.7.6 長 さの 単 位 206 4.8 CSSの 拡 張 機 能 207 4.8.1 名 前 空 間 207 4.8.2 ページカウンタ 208 4.8.3 全 角 数 字 と 漢 数 字 による 箇 条 書 き 番 号 208 4.8.4 禁 則 処 理 210 word-wrap[3.0.0] 211 -cssj-no-break-characters[3.0.6] 212 -cssj-break-characters[3.0.6] 213 4.8.5 圏 点 [3.0.4] 214 -cssj-text-emphasis-style 215 -cssj-text-emphasis-color 216 -cssj-text-emphasis 217 4.8.6 文 字 の 影 [3.0.8] 218 text-shadow 218 4.8.7 袋 文 字 [3.0.8] 219 -cssj-text-fill-color 220 -cssj-text-stroke-width 220 -cssj-text-stroke-color 220 -cssj-text-stroke 221 4.8.8 透 明 化 [3.0.6] 222 opacity 222 4.8.9 透 明 色 [3.0.8] 223 4.8.10 角 丸 境 界 [3.0.6] 224 border-top-left-radius 224 border-top-right-radius 225 border-bottom-left-radius 225 border-bottom-right-radius 225 border-radius 226 4.8.11 回 転 拡 大 変 形 [3.0.8] 227 -cssj-transform 227 -cssj-transform-origin 228 4.9 ページ 処 理 機 能 230 4.9.1 ページのレイアウト 230 4.9.2 ページの 大 きさの 制 約 と 切 り 落 とし 232 4.9.3 2パス 以 上 の 変 換 処 理 232 4.9.4 ページの 参 照 233 4.9.5 グレイスケール 印 刷 233 4.9.6 片 面 印 刷 と 両 面 印 刷 233 4.9.7 ページごとに 生 成 されるコンテンツ 234 4.10 改 ページ 制 御 239 4.10.1 用 語 の 定 義 239 4.10.2 強 制 改 ページ 239 4.10.3 orphans [css]とwidows [css] 241 orphans [css] 241 widows [css] 242 orphans [css]とwidows [css]の 競 合 243 4.10.4 改 ページの 抑 制 244 内 部 の 改 ページ 抑 制 244 xii

前 後 の 改 ページ 抑 制 245 4.10.5 自 動 改 ページ 245 通 常 のフローのブロック 246 浮 動 ボックス 246 4.11 テーブル 内 での 改 ページ 247 4.11.1 改 ページされない 場 所 247 4.11.2 page-break-xxxの 適 用 247 4.11.3 テーブル 行 内 部 (セル 内 部 )での 改 ページ 248 4.11.4 デフォルトの 改 ページ 禁 止 248 4.12 WebFont 249 4.12.1 @font-face ルール 249 font-family 250 font-style 250 font-weight 250 unicode-range 251 src 251 4.13 縦 書 き 253 4.13.1 -cssj-writing-mode 253 4.13.2 文 書 の 書 字 方 向 253 4.13.3 書 字 方 向 の 混 在 255 4.13.4 -cssj-direction-mode 257 4.14 多 段 組 263 4.14.1 -cssj-column-count 264 4.14.2 -cssj-column-width 265 4.14.3 -cssj-columns 265 4.14.4 -cssj-column-gap 265 4.14.5 -cssj-column-rule-color 266 4.14.6 -cssj-column-rule-style 266 4.14.7 -cssj-column-rule-width 266 4.14.8 -cssj-column-rule 267 4.14.9 -cssj-column-fill 267 4.14.10 -cssj-column-span 267 4.14.11 改 段 と 改 ページ 268 自 動 的 な 改 段 と 改 ページ 268 強 制 的 な 改 段 と 改 ページ 268 4.15 バーコード QRコード 269 4.15.1 バーコードの 表 示 269 4.15.2 ISBNバーコード 270 4.15.3 QRコード 270 version 271 ecc 271 encmode 271 module-width 271 quiet-zone 271 4.16 MathML 272 5. 資 料 集 274 5.1 入 出 力 プロパティ 一 覧 274 5.1.1 文 書 中 で 設 定 できないプロパティ 286 5.1.2 機 能 限 定 版 286 5.2 メッセージハンドラから 取 得 できる 情 報 288 5.2.1 Copper PDF 2.0 以 前 (CTIP 1.0) 288 xiii

5.2.2 Copper PDF 2.1 以 降 (CTIP 2.0) 288 メッセージコードのフィルタリング[3.0.0] 290 5.3 CSSプロパティのサポート 状 況 291 5.4 HTMLの 各 要 素 属 性 のサポート 状 況 295 5.5 拡 張 機 能 300 5.5.1 処 理 命 令 の 拡 張 300 5.5.2 CSSプロパティの 拡 張 300 CSSプロパティ 300 CSS 関 数 305 CSS 識 別 子 306 CSSルール 306 5.5.3 XMLの 拡 張 306 XML 要 素 307 XML 属 性 307 xiv

1.Copper PDF 入 門 1.Copper PDF 入 門 1.1 Copper PDFの 概 要 1.1.1 Copper PDFとは Copper PDFはHTML+CSSをはじめとする 文 書 をサーバー 側 でレイアウトしてPDF 等 に 変 換 する ドキュメント 変 換 サーバーです HTML, CSSをはじめ XHTML, XML, SVG, XSLTといったウェブ 向 けの 標 準 規 格 に 対 応 しています また JPEG, PNG 等 の 画 像 を 読 み 込 んでPDFに 変 換 することができます PDF 以 外 の 各 種 画 像 フォーマットへの 変 換 も 可 能 です Copper PDFは100% Javaアプリケーションです Java 実 行 環 境 がサポートされている Windows, Linux, Solaris, MacOS, FreeBSD など 様 々なOS 上 で 実 行 可 能 です ウェブアプリケーションの 開 発 言 語 として 一 般 的 なJava, Perl, PHP, C#, VB.NETをはじ めとするプログラミング 言 語 向 けに 使 いやすく 高 機 能 なオブジェクト 指 向 APIを 用 意 しています PDFのもととなるHTMLの 出 力 は 普 通 のウェブアプリケーションを 開 発 す る 場 合 と 同 じであり JSP, Smarty, TemplateToolkit, ASP.NETのようなテンプレートエン ジンも 利 用 することができます 各 プログラミング 言 語 からCopper PDFへ ネットワー クを 介 してアクセスする 仕 組 みなので アプリケーション 側 はJava 実 行 環 境 を 必 要 とせ ず また 負 荷 分 散 によって 非 常 に 高 負 荷 が 予 想 されるシステムにも 対 応 可 能 です HTTP/HTTPSによる 接 続 をサポートしており[2.1.0] Ruby, Python, 4th Dimension 等 HTTPクライアントを 利 用 できる 各 種 開 発 環 境 からも 容 易 に 利 用 することができます 1.1 Copper PDFの 概 要 1

1.Copper PDF 入 門 図 1.1 システムの 構 成 例 1.1.2 なぜCopper PDFが 必 要 か 例 えば ネット 上 でクーポンやチケットのようなものを 印 刷 させるために 印 刷 専 用 ページを 用 意 し 各 自 のブラウザで 印 刷 していただくとします しかし ほとんどのブ ラウザが 標 準 に 準 拠 するようになったと 言 っても 各 ブラウザで 完 全 に 同 じ 表 示 を 実 現 することは レイアウトが 複 雑 になればなるほど 難 しくなります その 点 サーバー 側 でPDFに 変 換 してしまえば 完 全 に 同 じ 表 示 を 保 障 することができます また PDFでは 暗 号 化 やファイル 添 付 等 のHTMLにはない 機 能 が 利 用 できます サードパーティーの 製 品 を 使 うことにより PDFに 著 作 権 管 理 やタイムスタンプを 付 与 することができます PDFを 動 的 に 出 力 するためのソフトウェアとしては 各 種 帳 票 出 力 ソフトウェアがあり ます しかし それらはレイアウトを 決 めるためにプログラミングが 必 要 であったり 独 自 の 帳 票 デザインツールが 必 要 であるため それらの 使 い 方 を 学 習 する 必 要 がありま す しかも 各 メーカーで 共 通 化 されていないため 別 の 会 社 の 製 品 を 使 おうと 思 った ら また 使 い 方 を 学 習 しなおす 必 要 があります また 全 般 的 に 複 数 ページにわたるPDF の 出 力 は 面 倒 です しかし HTML+CSSによるレイアウトであれば 既 にウェブで 広 く 使 われているため 開 発 者 が 新 しく 学 習 することは 最 小 限 で 済 みます HTML+CSSは 従 来 は 限 られたレイアウトしか 実 現 できませんでしたが 近 年 は 十 分 に 印 刷 にも 利 用 でき るほど 高 機 能 になりました HTML+CSSからPDFを 出 力 することは ウェブブラウザの 印 刷 機 能 を 使 っても 可 能 です しかし 普 及 しているウェブブラウザは 画 面 でスクロールさせて 見 ることを 主 目 的 にしており 印 刷 への 対 応 は 十 分 ではありません 例 えば 予 期 しないところで 途 切 れ てしまったり 画 面 表 示 では 実 現 できていた 表 示 が 印 刷 ではできなかったりといったこ とが 起 こります また 数 千 ページにおよぶ 文 書 を 印 刷 しようとすると 一 般 的 なブラ ウザは 非 常 にメモリを 消 費 し 動 作 が 重 くなるか 最 悪 の 場 合 はクラッシュしてしまう でしょう Copper PDFは 独 自 の 設 計 により 理 論 的 にはほぼ 無 制 限 の 大 きさの 文 書 を 一 定 のメモリ 使 用 量 でPDFに 変 換 することができます 2 1.1 Copper PDFの 概 要

1.Copper PDF 入 門 冊 子 では 目 次 の 生 成 ページ 番 号 の 付 与 が 必 要 であり 特 に 日 本 語 圏 では 日 本 語 特 有 の 禁 則 処 理 両 合 わせ 縦 組 ルビへの 対 応 が 必 須 と 言 えます Copper PDFはこれらの 機 能 を 独 自 にサポートしています 1.1 Copper PDFの 概 要 3

1.Copper PDF 入 門 1.2 動 作 環 境 Copper PDFは サーバーと プログラミングインターフェース(API) が 別 々に 動 作 しま す ユーザーが 開 発 したアプリケーションからはAPIを 利 用 してサーバーにアクセスし ます アプリケーションはサーバーと 同 一 のマシン 上 でも 別 のマシン 上 でも 構 いませ ん サーバーを 動 作 させるためのマシンにはJavaが 必 須 ですが アプリケーション 側 に Javaは 必 須 ではありません 1.2.1 サーバー Copper PDFサーバーにはコマンドラインから 直 接 PDF 変 換 できるインターフェースと ウェブインターフェースが 付 属 しています copperd(copper PDFサーバー) copper(コマンドラインインターフェース) copperwebapp(ウェブインターフェース)の 実 行 には 最 低 限 以 下 の 環 境 が 必 要 です copper Ant タスクの 実 行 にも 同 様 の 環 境 が 必 要 です Copper PDF 2.1.0からはtranscode Antタスク の 使 用 を 推 奨 します Java JRE( 国 際 化 対 応 版 )/JDK バージョン 5.0, 6.0 128MB 以 上 の 空 きメモリ 50MB 以 上 の 空 きディスクスペース Copper PDF 2.1.x までは JDK1.4.2 でも 動 作 します 以 下 の 環 境 を 推 奨 します Java JDK バージョン 5.0, 6.0 1GB 以 上 の 空 きメモリ 2GB 以 上 の 空 きディスクスペース 以 下 のOS 上 での 動 作 を 確 認 しています Windows 2000/XP/Vista/7 Red Hat Enterprise Linux(RHEL) 4/5 Debian 4.0 "etch"/5.0 "lenny" Solaris 10 MacOS X FreeBSD 7/8 ウェブインターフェースには 以 下 のブラウザとAdobe Reader 等 のPDFを 表 示 できるソフ トウェア 必 要 です Firefox 2 以 降 Internet Explorer 7 以 降 4 1.2 動 作 環 境

1.Copper PDF 入 門 Google Chrome 2 以 降 Safari 4 以 降 1.2.2 プログラミングインターフェース(API) Copper PDFを 利 用 するアプリケーションの 開 発 に 使 用 する 各 プログラミング 言 語 向 け のドライバはCopper PDF 本 体 とは 別 に 配 布 しています Copper PDF 2.1.0からは より 強 力 なプログラミングインターフェース(CTIP 2.0)と HTTP/RESTインターフェースがサポートされました HTTP/RESTインターフェース は 各 開 発 環 境 から 利 用 することができます 旧 インターフェース(CTIP 1.0) Java ドライバ Java バージョン1.4.2, 5.0, 6.0 Perlドライバ Perl バージョン5.6.1 以 降 PHPドライバ PHP バージョン4.3.0 以 降 またはPHP バージョン5.0.0 以 降 新 インターフェース(CTIP 2.0) Java ドライバ / transcode Antタスク Java バージョン 5.0, 6.0[2.1.0] Javaドライバ 2.0.x までは JDK1.4.2 でも 動 作 します Perlドライバ Perl バージョン5.6.1 以 降 [2.1.0] File::Temp モジュール IO::Socket::SSL (SSL 接 続 をする 場 合 ) 1.2 動 作 環 境 5

1.Copper PDF 入 門 PHPドライバ PHP バージョン5.2.0 以 降 [2.1.0].NETドライバ.NET Framework 2.0 以 降 [2.1.0] HTTP / RESTインターフェース 各 種 開 発 環 境 ( 環 境 非 依 存 )[2.1.0] 6 1.2 動 作 環 境

1.Copper PDF 入 門 1.3 機 能 一 覧 1.3.1 入 力 データ 形 式 ドキュメント HTML/XHTML (174ページ) - HTML/XHTML 文 書 をレイアウトします XML (174ページ) - XML 文 書 をレイアウトします SVG (177ページ) - SVGを 直 接 PDF 等 のデータ 形 式 に 変 換 します[2.1.0] GIF/PNG (176ページ) JPEG (177ページ) その 他 Java 実 行 環 境 が 対 応 可 能 な 画 像 形 式 (176ページ) - 画 像 を 直 接 PDF 等 のデータ 形 式 に 変 換 します[2.1.0] EPUB (178ページ)[3.1.0] スタイルシート CSS 2.1 (201ページ) - HTML/XHTML/XML 文 書 をCSSでスタイル 付 けします XSLT (176ページ) - XML 文 書 をXSLTで 変 換 します メディアタイプの 設 定 (201ページ) - 印 刷 向 け 以 外 のスタイルシートを 適 用 します ユーザーのCSSスタイルシート (205ページ) ユーザーのXSLTスタイルシート (176ページ) WebFont(@font-face) (249ページ)[3.0.0] - ネットワーク 上 からTrueType フォント OTF WOFF[3.1.0]を 読 み 込 めます 縦 書 き (253ページ)[3.0.0] - 縦 書 きレイアウトをサポートしています 段 組 み (263ページ)[3.0.0] - 多 段 組 をサポートしています ルビ (199ページ)[3.0.0] 禁 則 文 字 の 追 加 除 外 (210ページ)[3.0.6] 圏 点 (214ページ)[3.0.4] 文 字 の 影 (218ページ)[3.0.8] 袋 文 字 (219ページ)[3.0.8] 透 明 化 (222ページ)[3.0.6] 角 丸 境 界 (224ページ)[3.0.6] 回 転 拡 大 変 形 (227ページ)[3.0.8] ベクター 画 像 データ SVG (177ページ) - 文 書 中 にSVG 形 式 の 絵 図 を 埋 め 込 みます 1.3 機 能 一 覧 7

1.Copper PDF 入 門 ラスター(ビットマップ) 画 像 データ 文 書 中 に 画 像 を 埋 め 込 みます GIF/PNG (176ページ) JPEG (177ページ) - JPEGをそのままPDF 中 に 埋 め 込 むことができます その 他 Java 実 行 環 境 が 対 応 可 能 な 画 像 形 式 (176ページ) - JPEG2000 等 最 新 の 画 像 形 式 にも 対 応 可 能 です 1.3.2 PDF 出 力 レイアウト 結 果 をPDFとして 出 力 します PDFバージョン1.2から1.7に 対 応 (179ページ) - 各 バージョンのPDFに 対 応 した 出 力 結 果 が 得 られます PDF/A-1bに 準 拠 したファイルの 出 力 (186ページ)[2.1.0] 画 面 表 示 / 印 刷 時 で 表 示 制 御 が 可 能 なすかし (183ページ)[2.1.8] PDFの 圧 縮 の 設 定 ( 無 圧 縮 /Flate 圧 縮 /ASCIIテキスト) (181ページ) 画 像 の 圧 縮 ( 可 逆 圧 縮 /JPEG/JPEG2000) (181ページ) 添 付 ファイル (181ページ) - PDFに 別 のファイルを 添 付 します ブックマーク (195ページ) - HTMLの 見 出 し(H1~H6)からブックマーク(しおり)を 生 成 します 暗 号 化 (179ページ) - 40~128ビットの 暗 号 化 に 対 応 しています パスワード パーミッションの 指 定 (179ページ) - 暗 号 化 したPDFにパスワードと 利 用 制 限 をかけることができます ハイパーリンク (197ページ) - HTMLのリンク(Aタグ)をPDFにも 適 用 します 文 書 内 リンク (197ページ) - PDFにリンクを 反 映 する 他 ページ 番 号 を 出 力 できます メタ 情 報 ( 文 書 タイトル Creator CreationDate 等 )の 設 定 (175ページ) CreationDate, ModDate, ファイルIDの 設 定 (182ページ) ViewerPreferencesの 設 定 (186ページ)[3.0.2/2.1.11] オープン 時 に 実 行 されるJavaScriptの 設 定 (186ページ)[3.0.2/2.1.11] 1.3.3 画 像 出 力 各 ページを 画 像 として 出 力 します JPEG/PNG (187ページ) その 他 Java 実 行 環 境 が 対 応 可 能 な 画 像 形 式 (176ページ) - JPEG2000 等 最 新 の 画 像 形 式 にも 対 応 可 能 です 画 像 出 力 時 の 解 像 度 設 定 (187ページ) - 任 意 の 解 像 度 で 画 像 を 出 力 できます SVG (187ページ)[3.0.1] 8 1.3 機 能 一 覧

1.Copper PDF 入 門 1.3.4 フォント 関 連 機 能 CID-Keyedフォント (51ページ) - フォントファイルを 埋 め 込 まず 大 抵 の 環 境 で 見 る ことができるPDFを 出 力 できます 外 部 (CID Identity)フォント (51ページ) - 特 定 の 環 境 に 依 存 した フォントを 埋 め 込 ま ないPDFを 出 力 できます 埋 め 込 みフォント (44ページ) - 環 境 に 依 存 しないPDFを 出 力 するために TrueType, OpenType 等 のフォントを 埋 め 込 みます デフォルトのフォントの 設 定 (46ページ) フォント 幅 情 報 MSフォントの 使 用 (53ページ) Unicodeサロゲートペア[3.1.0] 1.3.5 HTTP 接 続 Copper PDFが 外 部 のサーバーからHTTP 接 続 で 文 書 を 取 得 する 機 能 です タイムアウトの 設 定 (169ページ) ヘッダ(Referer, User-Agent 等 )の 変 更 (167ページ) - 参 照 元 やUser-Agentを 偽 装 するこ とができます プロクシを 介 した 接 続 (167ページ) BASIC 認 証 /Digest 認 証 (166ページ) クッキー (168ページ) 1.3.6 印 刷 サポート 用 紙 サイズ 出 力 サイズの 設 定 (230ページ) ページの 拡 大 縮 小 変 形 (230ページ) トンボの 出 力 (230ページ) - 断 裁 して 製 本 するためのトンボを 表 示 します 欄 外 の 描 画 (232ページ) ページのマージン (230ページ) 片 面 印 刷 両 面 印 刷 の 切 り 替 え (233ページ) グレイスケール 変 換 (233ページ) - カラーの 文 書 をモノトーンに 変 換 します 1.3.7 目 次 ページ 参 照 2パス 以 上 の 処 理 (232ページ) - 目 次 やページ 参 照 のために 文 書 を 複 数 回 処 理 できま す 欄 外 のページ 番 号 見 出 し(234ページ) - 欄 外 にページ 番 号 や 見 出 しを 出 力 します 目 次 の 生 成 (195ページ) - HTMLの 見 出 し(H1~H6)から 目 次 を 生 成 します ページの 参 照 (233ページ) - 文 書 中 の 指 定 した 部 分 のページ 番 号 を 出 力 できます 1.3 機 能 一 覧 9

1.Copper PDF 入 門 1.3.8 プログラムインターフェース Copper PDF 2.0 以 前 Java (74ページ) PHP (83ページ) Perl (79ページ) Ant (87ページ) 処 理 中 のページ 内 容 の 取 得 (65ページ) 処 理 状 況 の 取 得 (65ページ) Copper PDF 2.1 以 降 Java (JRuby, Jython) (94ページ) PHP (119ページ) Perl (112ページ).NET (C# / VB.NET) (125ページ) Ruby (135ページ) Python (141ページ) Ant (148ページ) 処 理 中 のページ 内 容 の 取 得 (ページ) 処 理 状 況 の 取 得 (ページ) サーバーからリソースを 要 求 (ページ) HTTP/REST (152ページ) (Apache 経 由 での 接 続 (40ページ) / Ruby (155ページ) / Python (157ページ) / C# (158ページ) / ASP.NET (C# / VB.NET) (160ページ) / 4th Dimension (162 ページ)) 1.3.9 その 他 の 機 能 MathML (272ページ) - 文 書 中 にMathMLによる 数 式 を 埋 め 込 みます [3.1.0] バーコード QRコード (269ページ) - 文 書 中 にバーコード QRコードを 埋 め 込 みま す [3.1.0] 改 ページをせずに 文 書 を 出 力 する (232ページ) 解 像 度 (pxの 大 きさ)の 設 定 (206ページ) IE 互 換 モード (ページ) - InternetExplorerの 表 示 に 近 いレイアウトモードです 出 力 データサイズ 制 限 (170ページ) - DoS 攻 撃 対 策 等 のため 出 力 サイズを 制 限 できま す ページ 数 制 限 (170ページ) - DoS 攻 撃 対 策 等 のため 出 力 ページ 数 を 制 限 できます 実 行 経 過 情 報 取 得 (288ページ) - リアルタイムで 文 書 の 変 換 状 況 をアプリケーション が 取 得 できます 10 1.3 機 能 一 覧

1.Copper PDF 入 門 1.4 とりあえず 使 ってみよう 1.4.1 Copper PDFのインストール Copper PDFは 様 々なOS(Windows, MacOS X, Linuxなど)で 動 かすことができます 例 えばWindowsで 動 かしてみましょう Copper PDFはJava(JDK)を 必 要 とします また Copper PDFが 出 力 したPDFを 見 るためにはAdobe Readerが 必 要 です お 手 元 の 環 境 に 入 っていない 場 合 は それぞれ 以 下 のアドレスからダウンロードしてインストールして 下 さい http://www.oracle.com/technetwork/java/javase/downloads/index.html 進 んでください) http://get.adobe.com/jp/reader/ (Adobe Reader) (Download JDK へ 以 下 のアドレスから Windows 用 ZIPアーカイブ をダウンロードしてください これ がWindows 版 のCopper PDFの 本 体 です http://copper-pdf.com/?p=90 図 1.2 copper-webappの 起 動 ZIPファイルを 展 開 し CopperPDFディレクトリ 内 のcopper-webapp.exe をダブルクリッ クして 実 行 してください ブラウザが 起 動 し Copper WEBAPP というタイトルのページ が 開 きます これでCopper PDFが 無 事 に 動 作 しました 1.4 とりあえず 使 ってみよう 11

1.Copper PDF 入 門 図 1.3 Copper WEBAPPの 初 期 画 面 1.4.2 ウェブインターフェースでHTMLを 変 換 する とりあえず 何 か 表 示 させてみましょう 例 えば 上 部 の 入 力 欄 にhttp://ja.wikipedia.org/ (Wikipediaのアドレス)を 入 力 し 読 込 ボタンを 押 してください しばらく 待 つと ウィ キペディアのトップページがPDF 化 されて ブラウザ 内 に 表 示 されます 12 1.4 とりあえず 使 ってみよう

1.Copper PDF 入 門 図 1.4 ウェブページの 変 換 結 果 同 じように http://www.w3.org/tr/xslt20/ (XSLT 2.0の 仕 様 書 )を 読 み 込 んでみてくださ い みるみるうちに300ページを 超 える 仕 様 書 のPDFが 生 成 されます このような 大 きな 文 書 でも 高 速 処 理 できることがCopper PDFの 特 徴 です 手 元 のPCの 中 のファイルは 右 側 のファイルツリーから 選 択 して 変 換 することができ ます ドラッグ&ドロップはできませんのでご 注 意 ください Copper WEBAPP を 終 了 させるには 右 上 の 赤 いボタンを 押 してください Copper WEBAPP は Copper PDFでPDF 変 換 するためのHTMLデザインの 補 助 ツールとし てご 利 用 ください 1.4.3 コマンドラインアプリケーションでHTMLを 変 換 する Copper PDFは コマンドアプリケーションとしても 動 作 します コマンドライン 上 での 簡 単 な 作 業 や バッチ 処 理 には 便 利 です コマンド プロンプトを 起 動 しCopperPDF ディレクトリに 移 動 して copper を 実 行 してください 例 えXSLT 2.0の 仕 様 書 の 変 換 は 次 のとおりに 行 います 例 1.1 PHPからCopper PDFを 使 う copper -uri http://www.w3.org/tr/xslt20/ -out test.pdf 1.4 とりあえず 使 ってみよう 13

1.Copper PDF 入 門 図 1.5 copperの 実 行 しばらくした 後 変 換 結 果 としてtest.pdfというファイルが 生 成 されます 1.4.4 プログラムからHTMLを 変 換 する Copper PDFが 真 価 を 発 揮 するのは ここで 説 明 する 他 のプログラムとの 連 携 です プロ グラムから 文 書 の 変 換 を 行 うには あらかじめCopper PDFサーバーを 起 動 した 状 態 にす る 必 要 があります コマンドラインからサーバーブログラム(copperd)を 起 動 するには コマンド プロンプトを 起 動 しCopperPDFディレクトリに 移 動 して copperd -start を 実 行 します 14 1.4 とりあえず 使 ってみよう

1.Copper PDF 入 門 図 1.6 copperdの 起 動 つぎに ウェブ 開 発 で 広 く 使 われているPHPを 使 ってCopper PDFにアクセスしてみま しょう すでにマシンにPHPがインストールされているか あるいはLANでつながった 他 のマシンにPHPがインストールされている 場 合 は それを 使 って 構 いません copperd は 初 期 設 定 の 状 態 では ローカルマシンだけからアクセスできるようになっています confディレクトリ 内 のaccess.txtを 編 集 して allow 接 続 元 のIPアドレス という 行 を 先 頭 に 加 えて 特 定 のマシンからのアクセスを 許 可 するか あるいは allow * という 行 を 加 えてネットワークからのアクセスを 全 て 許 可 してください(セキュリ ティにご 注 意 ください) Windowsマシンにインストールする 場 合 は 以 下 のアドレスからInstaller をダウンロー ドして インストールしてください http://windows.php.net/download/ Copper PDF のプログラムインターフェースは 本 体 とは 別 に 配 布 されています 以 下 の アドレスから cti-php-2.x.x.zip という 名 前 のファイルをダウンロードしてください http://sourceforge.jp/projects/copper/releases/?package_id=8743 1.4 とりあえず 使 ってみよう 15

1.Copper PDF 入 門 展 開 してできたcti-php-2.x.xというディレクトリに 次 の 中 身 のファイルを 保 存 してく ださい( 文 字 コードはシフトJISです) 例 1.2 PHPからCopper PDFを 使 う <?php require_once ('code/cti/drivermanager.php'); //セッションの 開 始 $session = cti_get_session('ctip://localhost:8099/', array('user' => 'user', 'password' => 'kappa')); //ファイル 出 力 $session->set_output_as_file('test.pdf'); // 文 書 の 送 信 $session->start_main('.'); $date = date('y-m-d H:m:s');?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=sjis" /> <title>test</title> </head> <body> <h2>hello World!</h2> ただいまの 時 刻 は<?php echo $date?> </body> </html> <?php $session->end_main(); //セッションの 終 了 $session->close();?> コマンド プロンプトを 起 動 し cti-php-2.x.xディレクトリ 内 で php test.php を 実 行 してください 同 じディレクトリ 内 にtest.pdfというファイルができれば 成 功 で す 16 1.4 とりあえず 使 ってみよう

1.Copper PDF 入 門 図 1.7 出 力 結 果 1.4 とりあえず 使 ってみよう 17

2. 管 理 者 ガイド 2. 管 理 者 ガイド 2.1 セットアップ この 章 ではCopper PDFのセットアップ(インストール) 方 法 について 説 明 します 2.1.1 Java 実 行 環 境 のインストール Copper PDFをインストールするためには Java 実 行 環 境 (JREまたはJDK)が 必 要 です Java 実 行 環 境 は 各 OS ベ ン ダ が 配 布 し て い る も の を イ ン ス ト ー ル す る か http://www.oracle.com/technetwork/java/javase/downloads/index.html (Download JDK へ 進 んでください) で 配 布 されているものをインストールしてください 必 要 なJava 実 行 環 境 はバージョン1.5.0 以 降 の 国 際 化 対 応 Java 実 行 環 境 です Java RE (JRE), Java SE(JDK 開 発 環 境 およびサーバー 用 Java VMを 含 むもの)の 両 方 で 動 作 しま すが Java SEを 推 奨 します 2.1.2 Copper PDF の 配 布 パッケージ Copper PDF 本 体 は 以 下 のパッケージが 配 布 されています 利 用 する 環 境 に 合 ったパッ ケージをダウンロードしてください (3.x.xの 部 分 はCopper PDFのバージョンにより 異 なります) copper-pdf-3_x_x.zip ZIPアーカイブ copper-pdf-3.x.x-x.noarch.rpm RPMパッケージ copper-pdf_3.x.x_all.deb Debianパッケージ copper-pdf-3.x.x.tar.gz tar.gzアーカイブ 2.1.3 Windows 2000/XP/Vista/7 http://copper-pdf.com/download/ で 配 布 されているZIPアーカイブ copper-pdf-3_x_x.zip を ダウンロードしてください copper-pdf-3_x_x.zipを 展 開 し CopperPDFディレクトリを 適 当 な 場 所 に 配 置 してくださ い アンイストールはCopperPDFディレクトリを 削 除 するだけです 18 2.1 セットアップ

2. 管 理 者 ガイド Windows 上 でJava6 を 使 用 する 場 合 Copper PDFのサービスを 起 動 しようとすると 以 下 のメッセージが 表 示 されることがあります(Windows2003/2008 Server 上 で 現 象 が 確 認 されています) [174 javajni.c] [error] 指 定 されたモジュールが 見 つかりません この 場 合 jdk1.6.0_x/binディレクトリ 内 のmsvcr71.dllをWindowsのsystem32ディレクトリに コピーすることで 起 動 するようになります 付 属 のプログラムを 使 ってサービスをインストールする この 方 法 では CopperPDFディレクトリまでのファイルパスに 半 角 英 数 字 以 外 の 文 字 (かな 漢 字 など) が 含 まれている 場 合 と Cドライブ 以 外 にある 場 合 はサービ スの 起 動 ができません Cドライブ 直 下 あるいはC:\Program Filesなど 半 角 英 数 字 の 文 字 だけで 構 成 されるファイルパスに 格 納 してください あるいは 後 述 するJava Service Wrapperの 使 用 を 推 奨 します Windows XP 以 前 Windows 版 にはCopper PDFサーバーをサービスとしてインストールするためのバッチ ファイルが 用 意 されています サービスをインストールするには Administrator 権 限 を 持 つユーザーでInstallService.bat(x64 版 JavaVM の 場 合 はInstallService-x64.bat)を 実 行 する だ け で す サ ー ビ ス を 削 除 す る 場 合 は RemoveService.bat(x64 版 JavaVM の 場 合 は RemoveService-x64.bat) を 実 行 してください Windows Vista 以 降 アクセサリの コマンドプロンプト を 管 理 者 で 実 行 し Copper PDFのディレクトリ に 移 動 してからInstallService.bat(x64 版 JavaVM の 場 合 はRemoveService-x64.bat) を 実 行 し てください サービスを 削 除 する 場 合 も 同 様 にRemoveService.bat(x64 版 JavaVM の 場 合 はInstallService-x64.bat)を 実 行 してください 例 2.1 Windows Vista 以 降 でサービスをインストールする C:\>cd [Copper PDFのインストールディレクトリ] C:\[Copper PDFのインストールディレクトリ]>.\InstallService.bat 例 2.2 Windows Vista 以 降 でサービスをインストールする(x64) C:\>cd [Copper PDFのインストールディレクトリ] C:\[Copper PDFのインストールディレクトリ]>.\InstallService-x64.bat 2.1 セットアップ 19

2. 管 理 者 ガイド Java Service Wrapperを 使 ってサービスをインストールする[2.1.4] Copper PDFは Java Service Wrapper によるサービスとしてインストールすることがで きます Java Service Wrapperの 全 ての 機 能 を 利 用 し 開 発 元 のタヌキソフトウェア 有 限 会 社 によるサポートを 受 けるためには 別 途 ライセンスの 購 入 が 必 要 です Java Service Wrapperを 使 用 することにより 障 害 発 生 時 の 自 動 復 旧 等 が 可 能 になり より 安 定 して 運 用 することができます Copper PDFをJava Service Wrapperで 動 作 させるためには Java Service Wrapperの 配 布 物 に 含 まれる 内 容 を 次 の 通 りコピーしてください 1. CopperPDF デ ィ レ ク ト リ 直 下 に bin デ ィ レ ク ト リ を 作 り Java Service Wrapper の bin/wrapper.exeをその 中 にコピーする 2. Java Service Wrapperのsrc/bin/InstallApp-NT.bat.in をCopper PDFのbinディレクトリ 内 に InstallCopperPDF-NT.batという 名 前 で 配 置 する 3. Java Service Wrapperのsrc/bin/UninstallApp-NT.bat.in をCopper PDFのbinディレクトリ 内 にUninstallCopperPDF-NT.batという 名 前 で 配 置 する 4. Java Service Wrapperのlib/wrapper.dll, lib/wrapper.jarをcopper PDFのlib 内 にコピーする Java Service Wrapperの 設 定 ファイルは Copper PDFにconf/wrapper.confという 名 前 で 既 に 含 まれています Java Service Wrapperのライセンスを 購 入 した 場 合 は このファイル にライセンスキーの 内 容 を 追 記 してください サービスをインストールする 場 合 は InstallCopperPDF-NT.bat を 実 行 してください 逆 に アンインストールする 場 合 は UninstallCopperPDF-NT.bat を 実 行 してください Windows Vistaでは 必 ず 管 理 者 として 実 行 してください サービスの 起 動 と 停 止 は コ ントロールパネルの 管 理 ツールから 行 ってください サービスの 管 理 と 動 作 状 態 の 確 認 サービスはコントロールパネルの 管 理 ツールから 起 動 停 止 することができます またcopperd.exeの-statusオプションによりサービスの 状 態 を 確 認 することができます 20 2.1 セットアップ

2. 管 理 者 ガイド 例 2.3 サービスの 動 作 状 態 確 認 C:\>cd [Copper PDFのインストールディレクトリ] C:\[Copper PDFのインストールディレクトリ]>copperd.exe -status * Status Report * [Summary] Uptime:0 days 0 h 0 min 3 s AccessCount:0 [Threads] Total:10 Busy:0 Free:10 Max:50 [Memory] Total:127.06MB Using:3.96MB Free:123.1MB Max:1016.13MB 2.1.4 Red Hat Enterprise Linux(RHEL) / CentOS RHEL(またはCentOS) 向 けにはRPMパッケージを 配 布 しています RHELでは Java 実 行 環 境 としてjava-(バージョン)-sun が 必 要 です Red Hat Networks のSupplementaryチャンネルからyumでインストールするか Supplement CDに 収 録 されているものをインストールしてください java-(バージョン)-gcj-compatでは 動 作 しません alternatives --config java コマンドでjava-(バージョン)-sunに 切 り 替 えてくだ さい RHELの 代 替 としてCentOSを 使 用 する 場 合 は Oracleのサイト からダウンロードしたRPMを インストールし rpm-i--nodeps copper-pdf-3.x.x-0.noarch.rpm コマンドでインストール してください copper-pdf-3.x.x-0.noarch.rpm をrpmコマンドでインストールしてください アンインス トールの 方 法 は 通 常 のRPMパッケージの 場 合 と 同 じです 例 2.4 RPMパッケージのインストール # sudo rpm -ivh copper-pdf-3.x.x-0.noarch.rpm 例 2.5 RPMパッケージのアンインストール # sudo rpm -e copper-pdf 2.1 セットアップ 21

2. 管 理 者 ガイド Copper PDFサーバーの 起 動 停 止 RHELではchkconfigおよびserviceコマンドでCopper PDFサーバーを 管 理 できます Copper PDFサーバーのサービス 名 はcopperdです インストール 直 後 は Copper PDFサー バーの 自 動 起 動 は 無 効 化 されています 例 2.6 copper-pdfの 起 動 # sudo service copperd start 例 2.7 copper-pdfの 動 作 状 態 確 認 # sudo copperd -status 例 2.8 copper-pdfの 停 止 # sudo service copperd stop 例 2.9 copper-pdfの 再 起 動 # sudo service copperd restart 例 2.10 copper-pdfの 自 動 起 動 の 有 効 化 # sudo chkconfig copperd on 例 2.11 copper-pdfの 自 動 起 動 の 無 効 化 # sudo chkconfig copperd off 2.1.5 Debian Debian 向 けにはdebパッケージを 配 布 しています Debianでは Java 実 行 環 境 としてsun-java5-jdkまたはsun-java6-jdkが 必 要 です kaffe または java-gcj-compatでは 動 作 しません /etc/apt/sources.listの 各 行 に non-free を 追 加 し sun-java5-jdk ま た は sun-java6-jdk を イ ン ス ト ー ル し update-alternatives --config javaコ マ ン ド で java コ マ ン ド を /usr/lib/jvm/java-1.x.0-sun/jre/bin/java に 切 り 替 えてください 他 の 方 法 でインストールしたJava 実 行 環 境 を 使 う 場 合 は /etc/profile ファイル 等 で JAVA_HOME 環 境 変 数 にJavaのインストールディレクトリのパスを 設 定 してください 例 : export JAVA_HOME=/usr/local/jdk1.6.0_05 22 2.1 セットアップ

2. 管 理 者 ガイド copper-pdf_3.x.x_all.debをdpkgコマンドでインストールしてください アンインストー ルの 方 法 は 通 常 のdebパッケージの 場 合 と 同 じです 例 2.12 debパッケージのインストール # sudo dpkg -i copper-pdf_2.x.x_all.deb 例 2.13 debパッケージのアンインストール # sudo dpkg -r copper-pdf Copper PDFサーバーの 起 動 停 止 DebianではCopper PDFのサービスは/etc/init.d/copperdとして 配 置 されます インストー ル 直 後 は Copper PDFサーバーの 自 動 起 動 は 無 効 化 された 状 態 です サービスの 管 理 方 法 は 以 下 の 通 り 通 常 のDebianの 手 法 に 従 います 例 2.14 copper-pdfの 起 動 # sudo /etc/init.d/copperd start 例 2.15 copper-pdfの 動 作 状 態 確 認 # sudo copperd -status 例 2.16 copper-pdfの 停 止 # sudo /etc/init.d/copperd stop 例 2.17 copper-pdfの 再 起 動 # sudo /etc/init.d/copperd restart 例 2.18 copper-pdfの 自 動 起 動 の 有 効 化 # sudo update-rc.d /etc/init.d/copperd defaults 例 2.19 copper-pdfの 自 動 起 動 の 無 効 化 # sudo update-rc.d /etc/init.d/copperd remove 2.1.6 FreeBSD Java 実 行 環 境 が 必 要 です pkg install openjdkコマンドにより Java 実 行 環 境 をインストー ルしてください copper-pdf-3.x.x.tar.gz を/optディレクトリに 展 開 してください 次 に 展 開 してできた copper-pdf-3.x.xディレクトリを copper-pdfという 名 前 に 変 更 してください 2.1 セットアップ 23

2. 管 理 者 ガイド copper-pdfディレクトリ 内 のextras/freebsd/copperdに 起 動 スクリプトの 例 があります こ れを/usr/local/etc/rc.d/copperdにコピーしchmod 555 /usr/local/etc/rc.d/copperdコマンドに より 実 行 権 限 を 付 与 してください Java 実 行 環 境 がopenjdk7の 場 合 は これでセットアップは 完 了 です 他 のJava 実 行 環 境 を 使 う 場 合 は /usr/local/etc/rc.d/copperd.sh を 編 集 し export JAVA_HOME=/usr/local/openjdk7 の 部 分 を 実 際 のJava 実 行 環 境 の 場 所 に 設 定 してくだ さい Copper PDFサーバーの 起 動 停 止 Copper PDFサーバー 起 動 と 停 止 は serviceコマンドにより 行 うことができます 例 2.20 copper-pdfの 起 動 # service copperd start 例 2.21 copper-pdfの 停 止 # service copperd stop 2.1.7 その 他 の 環 境 その 他 の 環 境 では tar.gzアーカイブを 使 用 してください copper-pdf-3.x.x.tar.gzを 適 当 なディレクトリに 展 開 してください LinuxあるいはUNIX 系 のOSの 場 合 展 開 してできたディレクトリ 内 のシェルスクリプ ト (copper, copperd, copper-webapp)を 使 用 してください また デーモンをセットアップ するにはextras/redhat/copperdを 編 集 し 16 行 目 でCOPPER_HOME 環 境 変 数 にCopperPDF の 配 置 ディレクトリを 設 定 するようにし 適 切 な 場 所 に 配 置 してください 例 2.22 JAVA_HOME の 設 定 COPPER_HOME=[CopperPDFの 配 置 ディレクトリ] Copper PDFに 付 属 のシェルスクリプトは 環 境 変 数 JAVA_HOME により Javaのインス トールディレクトリを 判 別 します /etc/profile 等 で JAVA_HOME を 適 切 に 設 定 してく ださい 例 2.23 JAVA_HOME の 設 定 export JAVA_HOME=/usr/local/jdk1.6.0_05 JAVA_HOME が 設 定 されていない 場 合 PATH に 加 えられているjavaコマンドが 実 行 さ れます 24 2.1 セットアップ

2. 管 理 者 ガイド 各 ツールの 実 行 方 法 の 詳 細 はCopper PDFのツール (27ページ)の 解 説 を 参 照 してくださ い アンインストールは 単 にCopperPDFディレクトリを 削 除 するだけです 2.1.8 ディレクトリ 構 成 アーカイブ 内 のディレクトリ 構 成 ZIPまたはtar.gzアーカイブを 展 開 すると copper-pdf-3_x_xというディレクトリができま す 各 ツールの 実 行 ファイルは このディレクトリの 直 下 にあります その 他 のディレ クトリ 構 成 は 次 の 通 りです 図 2.8 ディレクトリ 構 成 copper-pdf-3_x_x -- conf 設 定 ディレクトリ `-- profiles プロファイル `-- fonts フォント 設 定 -- docs ドキュメント -- extras アイコン 各 プラットフォーム 向 けのファイル 等 -- legal 付 属 ライブラリのライセンス 文 書 -- jetty サーブレットコンテナ(copper-webapp 用 ) -- lib ライブラリ -- plugins プラグイン[2.1.0] -- logs ログディレクトリ `-- webapp copper-webapp RPMまたはDebianパッケージの 構 成 RPMまたはDebianパッケージでインストールした 場 合 は Copper PDFの 各 コマンドラ インツールは/usr/binと/usr/sbinに 配 置 されます また 他 のディレクトリの 配 置 場 所 は 次 のとおりです 表 2.1 RPM/Debianのディレクトリ 構 成 ディレクトリ lib plugins[2.1.0] docs conf 配 置 場 所 /usr/share/copper-pdf/lib /usr/share/copper-pdf/plugins /usr/share/doc/copper-pdf /etc/copper-pdf (/var/lib/copper-pdf/confにシンボリックリンク) Copper PDF 2.0 系 以 前 では 実 ファイルとシンボリックリンクが 逆 転 しています 2.1 セットアップ 25

2. 管 理 者 ガイド ディレクトリ jetty webapp logs 配 置 場 所 /var/lib/copper-pdf/jetty /var/lib/copper-pdf/webapp /var/log/copper-pdf (/var/lib/copper-pdf/logsにシンボリックリンク) /etc/init.d/copperdはcopperユーザーで 実 行 されます ファイルの 読 み 書 きが 行 われる /usr/share/copper-pdf/conf/profiles, /var/log/copper-pdf の 各 ディレクトリはcopperユーザー の 所 有 となります 2.1.9 ライセンスキー ファイルの 配 置 Copper PDFは そのままでは 機 能 限 定 版 (286ページ)として 動 作 します Copper PDFを 使 用 するためには ライセンスキー ファイルをlicense-keyという 名 前 で conf デ ィ レ ク ト リ に 配 置 す る 必 要 が あ り ま す ラ イ セ ン ス キ ー は http://copperpdf.com/buy/で 購 入 してください 全 ての 機 能 を 試 用 する 場 合 は http://copper-pdf.com/?p=155 で 試 用 ライセンスキーを 取 得 してください 2.1.10 旧 バージョンからのアップデート confディレクトリ 内 の 各 種 設 定 は 上 位 互 換 です 過 去 のバージョンの 設 定 は 新 しい バージョンで 常 に 動 作 します RPMパッケージまたはdebパッケージは それぞれ 通 常 の 方 法 でアップデートしてくだ さい 例 2.24 RPMパッケージの 更 新 # sudo rpm -Uvh copper-pdf-3.x.x-0.noarch.rpm 例 2.25 debパッケージの 更 新 # sudo dpkg -i copper-pdf_2.x.x_all.deb その 他 (Windows,.zip,.tar.gzアーカイブ)の 場 合 は 先 にconfディレクトリをバックアッ プし Copper PDFを 再 インストールし confディレクトリをアップデート 前 のものと 置 き 換 えてください 26 2.1 セットアップ

2. 管 理 者 ガイド 2.2 Copper PDFのツール Copper PDFはプログラムとして 実 行 可 能 なツールで 構 成 されています それぞれの ツールにはLinux/UNIX 系 OS( 拡 張 子 のない 実 行 ファイル), Windows( 拡 張 子 が.exeのも の) 向 けの 実 行 ファイルがあります Linux/UNIX 系 OSでは 次 の 環 境 変 数 が 使 用 されます JAVA_HOME 使 用 するJava 実 行 環 境 のディレクトリ("/usr/java/jdk1.6.0_05" 等 )です 設 定 されていな い 場 合 は 環 境 変 数 PATH の 設 定 により 実 行 できるjavaコマンドの 実 行 環 境 が 使 用 され ます JAVA_OPTS javaの 実 行 オプションです Linux/UNIX 系 OSでメモリの 割 り 当 てを 設 定 する 場 合 はJAVA_OPTS 環 境 変 数 を 設 定 し てください また Java 実 行 環 境 としてJDKを 使 用 する 場 合 は -serverオプションを 付 け ることで サーバー 用 のJavaVM が 使 われるため 若 干 パフォーマンスが 向 上 します JREでは-serverオプションは 使 用 できないことがあるためご 注 意 ください 以 下 の 例 ではメモリの 割 り 当 てを 最 大 1024MBとし -serverオプションをつけて 各 ツー ルを 実 行 します 例 2.26 JAVA_OPTS の 設 定 export JAVA_OPTS="-Xmx1024m -server" Javaコマンドで 直 接 ツールを 実 行 する 方 法 については 各 ツールの 説 明 を 参 照 してくだ さい copper コマンドラインアプリケーションです コマンドラインからCopper PDFの 機 能 を 直 接 利 用 することができます copper-webapp ウェブアプリケーションです ウェブブラウザからローカルマシン 上 のファイルや ウェブ 上 のコンテンツを 変 換 する 簡 単 なウェブアプリケーションが 起 動 します copperd Copper PDFサーバーを 起 動 停 止 あるいは 状 態 を 確 認 します プログラムインター フェースからアクセスするためのパスワードの 設 定 もこのコマンドで 行 います 2.2 Copper PDFのツール 27

2. 管 理 者 ガイド 2.2.1 copper コマンドラインアプリケーション 形 式 copper [-h -in< 入 力 ファイル> -uri< 入 力 URI> -v][-ie< 入 力 エンコーディ ング>][-if< 入 力 形 式 >][-out < 出 力 ファイル>][-p<プロパティ 名 = 値 >][-pf<プ ロパティファイル>][-pw<パスワード>][-s<サーバーURI>] [-sv] [-u<ユーザー >] 概 要 コマンドラインでドキュメントを 変 換 するアプリケーションです オプション -h, -help -v, -version ヘルプメッセージを 表 示 します コマンドラインアプリケーションのバージョンを 表 示 します -in, --input-file ファイル 入 力 ファイルを 指 定 します -uri, --input-uri URI 入 力 ファイルのURIを 指 定 します -ie, --input-encoding ファイル 入 力 ファイルのキャラクタ エンコーディングを 指 定 します -if, --input-format ファイル 入 力 ファイル 形 式 を 指 定 します デフォルトはtext/htmlです -out, --output-file ファイル 出 力 先 ファイルを 指 定 します -p 名 前 = 値 プロパティを 指 定 します -pf, --properties-file ファイル プロパティファイルを 指 定 します -s, --server URI ドキュメント 変 換 サーバーのURIを 指 定 します[2.1.0] 省 略 するとローカルマシンのラ イブラリ "copper:direct:" を 直 接 使 用 します 28 2.2 Copper PDFのツール

2. 管 理 者 ガイド Copper PDF 3.0.12 以 前 ではCopper PDFサーバー 付 属 のcopperコマンド では -sには"copper:direct:" 以 外 使 用 できません "ctip://" "http://" 等 で 始 まるURIを 指 定 するには Java 版 ドライバ(2.1.3 以 降 ) 付 属 のcopperコマン ドを 使 用 して 下 さい -u, --user ユーザー 名 認 証 のためのユーザー 名 です[2.1.0] -pw, --password パスワード 認 証 のためのパスワードです[2.1.0] -sv, --server-version ドキュメント 変 換 サーバーのバージョン 情 報 を 表 示 します[2.1.0] 説 明 コマンドラインで 実 行 可 能 なドキュメント 変 換 ツールです ツール 実 行 の 度 にJavaVM とCopper PDFを 起 動 するため プログラムインターフェース を 用 いた 処 理 より 遅 くなります また マニュアルの 作 成 等 複 数 のドキュメントの 一 括 変 換 を 行 う 場 合 は transcode Antタスクを 使 う 方 が 効 率 的 です Linux 版 のcopperおよびcopper-webappは 実 行 ユーザーのホームディレクトリに 置 かれた 設 定 ($HOME/.copper ディレクトリ 内 )を 用 います 詳 細 はprofilesディレクトリの 説 明 を 参 照 してください Copper PDF 2.1.0 以 降 では ネットワーク 越 しに 起 動 中 のサーバーに 接 続 して コマンド を 実 行 することができます -s, -u, -pwで 接 続 情 報 を 指 定 してください ドキュメント 変 換 サーバーのURIの 記 述 方 法 は 接 続 情 報 (91ページ) を 参 照 してください 入 力 について -inオプションが 省 略 された 場 合 は 標 準 入 力 を 使 用 します -inオプションと-uriオプションが 両 方 指 定 された 場 合 -inで 指 定 されたファイルの データが 使 われ ドキュメントのURIは-uriで 指 定 されたものと 見 なします -inオプションだけ 指 定 された 場 合 -inで 指 定 されたファイルのデータが 使 われ ド キュメントのURIはそのファイルのシステムURIとします -uriオプションだけが 指 定 された 場 合 そのURIから 取 得 できるデータが 使 われ ド キュメントのURIも 同 じURIとします このとき-ie, -ifオプションは 無 視 されます 出 力 について -outオプションが 省 略 された 場 合 は 標 準 出 力 を 使 用 します -outオプションが 指 定 された 場 合 は 指 定 されたファイルに 出 力 します 2.2 Copper PDFのツール 29

2. 管 理 者 ガイド javaコマンドで 実 行 する 方 法 javaコマンドで 直 接 実 行 するには libディレクトリ 内 のboot.jarを-jarオプションにより 実 行 してください また 以 下 のシステムプロパティを-Dオプションにより 設 定 してく ださい java.awt.headless Java 1.4.2でディスプレイのない 環 境 で 実 行 する 場 合 は"true"を 設 定 してください jp.cssj.boot.lib libディレクトリのパスを 設 定 してください jp.cssj.plugin.lib pluginsディレクトリのパスを 設 定 してください[2.1.0] jp.cssj.boot.main "jp.cssj.driver.cli.main"を 設 定 してください jp.cssj.driver.default default.propertiesファイルのパスを 設 定 してください jp.cssj.copper.config confディレクトリのパスを 設 定 してください 2.2.2 copper-webapp ウェブアプリケーション 概 要 ウェブアプリケーションとして 動 作 し ブラウザ 上 でドキュメントを 変 換 するツールで す ウェブページや 静 的 なHTMLファイルを 変 換 してレイアウトを 確 認 するために 用 い ることができます プログラムを 起 動 後 ブラウザでhttp://localhost:8803/ にアクセスすると Copper PDFの ウェブアプリケーションが 利 用 できます なお ブラウザが 実 行 可 能 な 環 境 では プロ グラムの 起 動 後 に 自 動 的 にブラウザが 開 きます 30 2.2 Copper PDFのツール

2. 管 理 者 ガイド 図 2.9 Copper WEBAPPの 初 期 画 面 Windows, X Window Systemなど GUI 環 境 でcopper-webappを 起 動 すると 以 下 のような 小 さなウィンドウが 表 示 され ブラウザの 起 動 と ツールの 停 止 を 行 うことができま す 図 2.10 copper-webappのウィンドウ javaコマンドで 実 行 する 方 法 javaコマンドで 直 接 実 行 するには jettyディレクトリ 内 のstart.jarを-jarオプションにより 実 行 してください また 以 下 のシステムプロパティを-Dオプションにより 設 定 してく ださい java.awt.headless Java 1.4.2でディスプレイのない 環 境 で 実 行 する 場 合 は"true"を 設 定 してください jetty.home START jettyディレクトリのパスを 設 定 してください jettyディレクトリ 内 のstart.configファイルのパスを 設 定 してください 2.2 Copper PDFのツール 31

2. 管 理 者 ガイド jp.cssj.driver.default default.propertiesファイルのパスを 設 定 してください jp.cssj.copper.config confディレクトリのパスを 設 定 してください jp.cssj.webapp.config copper-webappの 設 定 ファイルのパスを 設 定 してください [2.0.1] jp.cssj.plugin.lib pluginsディレクトリのパスを 設 定 してください[2.1.0] 2.2.3 copperd ドキュメント 変 換 サーバー 形 式 copperd [-cc< 制 御 コマンド>][-cf<ディレクトリ>][-cp<ポート 番 号 >][-h v][-hp<ポート 番 号 >][-jkp <ポート 番 号 >][-kill] [-p<ポート 番 号 >][-passwd <パスワード>][-skp <キーのパスワード>][-sp<ポート 番 号 >][-ss<キーストアの ファイルパス>][-ssp <キーのパスワード>][-start] [-status] [-stop] [-tkp < キーのパスワード>][-tp<ポート 番 号 >][-ts<キーストアのファイルパス>][-tsp <キーのパスワード>][-user <ユーザー 名 >][-userdel <ユーザー 名 >] 概 要 Copper PDFサーバーの 起 動 停 止 と パスワードの 設 定 ツールです サーバーの 起 動 停 止 はこのコマンドを 使 用 するよりは デーモンあるいはサービスを 使 ったほうが 便 利 です 詳 細 はセットアップドキュメント (18ページ)を 参 照 してくだ さい オプション -h, -help -v, -version -start -stop ヘルプメッセージを 表 示 します Copper PDFサーバーのバージョンを 表 示 します サーバーを 起 動 します サーバーを 停 止 します 32 2.2 Copper PDFのツール

2. 管 理 者 ガイド -kill -status サーバーを 強 制 停 止 します 動 作 中 のサーバーの 状 態 を 表 示 します -cc, --control-command 制 御 コマンド 文 字 列 制 御 コマンドを 指 定 します -cf, --config ディレクトリ 設 定 ディレクトリを 指 定 します -cp, --control-port ポート 番 号 制 御 ポートを 指 定 します -p, --port ポート 番 号 サービスポートを 指 定 します -passwd パスワード 接 続 パスワードを 変 更 します -user ユーザー 名 追 加 またはパスワードを 変 更 するユーザーです[2.1.0] -userdel ユーザー 名 削 除 するユーザーです[2.1.0] -hp, --http-port ポート 番 号 HTTP/RESTインターフェースを 起 動 するポート 番 号 です[2.1.0] -sp, --https-port ポート 番 号 HTTP/RESTインターフェースをSSLで 起 動 するポート 番 号 です[2.1.0] -jkp, --jk-port ポート 番 号 HTTP/RESTインターフェースをAJP13で 起 動 するポート 番 号 です[2.1.2] -ss, --https-keystore SSLに 使 用 するキーストアのファイルパスです[2.1.0] -ssp, --https-keystorepassword SSLに 使 用 するキーストアのパスワードです[2.1.0] -skp, --https-keypassword SSLに 使 用 するキーのPKCS12パスワードです[2.1.0] -tp, --tls-port ポート 番 号 TLSインターフェースを 起 動 するポート 番 号 です[3.0.0] -ts, --tls-keystore TLSに 使 用 するキーストアのファイルパスです[3.0.0] 2.2 Copper PDFのツール 33

2. 管 理 者 ガイド -tsp, --tls-keystorepassword TLSに 使 用 するキーストアのパスワードです[3.0.0] -tkp, --tls-keypassword TLSに 使 用 するキーのPKCS12パスワードです[3.0.0] 説 明 各 プログラミング 言 語 向 けのインターフェースを 利 用 するには ドキュメント 変 換 サー バーを 常 駐 させる 必 要 があります また ドキュメント 変 換 サーバーへはネットワーク を 介 してアクセスできるため ドキュメント 変 換 サーバーと それを 利 用 するアプリ ケーションを 別 々のマシン 上 で 動 かすことができます copperdの 設 定 ファイルはcopperd.propertiesです サービスポート(-p) 制 御 ポート(-cp) 制 御 コマンド(-cc) はデフォルトでは 設 定 ファイルのものが 使 われ Copper PDF 2.1.0 以 降 ではHTTPポート(-hp) SSLポート(-hs)とSSLに 使 用 するサーバー キーの 情 報 (-ss, -ssp, skp)を 設 定 可 能 です SSLに 使 用 するサーバーキーの 設 定 方 法 は SSLの 設 定 (38ページ)を 参 照 してください Copper PDF 2.1.2 以 降 ではAJP13ポート(-jkp)を 設 定 可 能 です 詳 細 はmod_jkの 設 定 (40 ページ)を 参 照 してください 上 記 の 設 定 は デフォルトでは 設 定 ファイルのものが 使 われ オプションは 設 定 ファイ ルによる 設 定 を 上 書 きします サーバーの 停 止 (-stop)および 状 態 の 取 得 (-status)には 制 御 用 ポートと 制 御 用 コマンド を 用 います 起 動 時 (-start)の 設 定 と 実 行 中 のサーバーを 制 御 する 際 の 設 定 は 同 じであ る 必 要 があります -stopコマンドは 現 在 接 続 中 のプログラミングインターフェースの 処 理 が 全 て 完 了 して からサーバーを 停 止 します -killコマンドは 全 ての 処 理 を 強 制 的 に 中 断 してサーバーを 停 止 します copperdにはパスワード 設 定 機 能 (-passwd)があります パスワードファイルは 暗 号 化 さ れており 直 接 編 集 できないため このツールを 利 用 して 編 集 してください Copper PDF 2.1.0 以 降 では-user, -userdelオプションによりユーザーの 追 加 と 削 除 ができます javaコマンドで 実 行 する 方 法 javaコマンドで 直 接 実 行 するには libディレクトリ 内 のboot.jarを-jarオプションにより 実 行 してください また 以 下 のシステムプロパティを-Dオプションにより 設 定 してく ださい java.awt.headless Java 1.4.2でディスプレイのない 環 境 で 実 行 する 場 合 は"true"を 設 定 してください 34 2.2 Copper PDFのツール

2. 管 理 者 ガイド user.home logsディレクトリが 置 かれているディレクトリのパスを 設 定 してください java.util.logging.config.file logging.propertiesファイルのパスを 設 定 してください jp.cssj.boot.lib libディレクトリのパスを 設 定 してください jp.cssj.plugin.lib pluginsディレクトリのパスを 設 定 してください[2.1.0] jp.cssj.boot.main "jp.cssj.copper.main"を 設 定 してください jp.cssj.driver.default default.propertiesファイルのパスを 設 定 してください jp.cssj.copper.config confディレクトリのパスを 設 定 してください 2.2 Copper PDFのツール 35

2. 管 理 者 ガイド 2.3 設 定 ファイル confディレクトリの 構 成 は 次 の 通 りです 図 2.11 設 定 ディレクトリの 構 成 conf -- license-key -- copperd.properties -- logging.properties -- password.txt -- access.txt `-- profiles -- default.properties `-- fonts -- fonts.xml -- truetype -- warrays -- afms -- cmaps `-- encodings confディレクトリの 直 下 には 次 の 設 定 ファイルが 収 められています license-key ライセンスキーファイルです copperd.properties Copper PDFサーバーの 動 作 設 定 です logging.properties ログの 設 定 です password.txt パスワードの 設 定 です 編 集 にはcopperdコマンドを 使 ってください access.txt アクセス 制 御 設 定 です また profilesディレクトリ 内 には 次 のファイルがあります default.properties デフォルトの 入 出 力 プロパティです fonts/fonts.xml 使 用 するフォントの 設 定 です 36 2.3 設 定 ファイル

2. 管 理 者 ガイド 2.3.1 Copper PDFサーバーの 動 作 設 定 (copperd.properties) copperd.propertiesはcopper PDFサーバー(copperd)の 動 作 に 関 する 設 定 です この 設 定 の 変 更 を 反 映 するにはCopper PDFサーバーの 再 起 動 が 必 要 です ファイルの 形 式 は Javaのプロパティファイル です 各 行 に 名 前 = 値 の 形 式 で 記 述 して ください = 記 号 改 行 はそれぞれ\= \nで 記 述 します \の 次 の 改 行 と 空 白 は 無 視 されま す 例 えば 以 下 の 場 合 key1 の 値 は a=b であり key2 の 値 は a, b, c, d, e, f です 例 2.27 propertiesファイルの 記 述 例 key1 = key2 = a\=b a, b, c,\ d, e, f propertiesファイルには 日 本 語 のカナ 漢 字 等 をそのまま 記 述 できません 日 本 語 を 含 むpropertiesファイルは Javaに 付 属 の native2ascii ツールにより マルチバイト 文 字 をエ スケープした 形 式 に 変 換 してください 各 プロパティの 説 明 は 以 下 の 通 りです 表 2.2 copperd.propertiesのプロパティ 一 覧 プロパティ jp.cssj.cssjd.port jp.cssj.cssjd.control-port jp.cssj.cssjd.control-command jp.cssj.cssjd.timeout jp.cssj.cssjd.minthreads 説 明 サービスポートです このポート 番 号 がプログラムインターフェースの 接 続 先 のポート 番 号 となります 制 御 用 ポートです サーバーの 状 態 の 取 得 や 停 止 のためにこのポー トを 使 います このポートへのlocalhost 以 外 からのアクセスはブ ロックされます 制 御 用 コマンドです 制 御 用 ポートからアクセスする 場 合 の 合 言 葉 のようなものです 通 常 は 変 更 する 必 要 はありません 接 続 タイムアウト( 秒 数 )です プログラムインターフェースとの 間 で 指 定 された 時 間 データがや りとりされなかった 場 合 接 続 を 切 断 します 最 小 スレッド 数 です プログラムインターフェースの 接 続 を 待 ち 受 けるために 準 備 して おく 最 小 限 のスレッド 数 です 高 負 荷 が 予 想 される 状 況 では 大 き めの 値 を 設 定 しておくと 処 理 が 効 率 化 しますが 使 用 するメモリ は 増 大 します 2.3 設 定 ファイル 37

2. 管 理 者 ガイド プロパティ jp.cssj.cssjd.maxthreads jp.cssj.cssjd.backlog jp.cssj.cssjd.http.port jp.cssj.cssjd.https.port jp.cssj.cssjd.jk.port jp.cssj.cssjd.https.keystore jp.cssj.cssjd.https.keypassword jp.cssj.cssjd.https.keystorepassword jp.cssj.cssjd.tls.port jp.cssj.cssjd.tls.keystore jp.cssj.cssjd.tls.keypassword jp.cssj.cssjd.tls.keystorepassword 説 明 最 大 スレッド 数 です copperdが 同 時 に 処 理 できるプログラムインターフェースからの 接 続 の 最 大 数 です 高 負 荷 が 予 想 され なおかつシステムのリソース に 余 裕 がある 場 合 は 大 きな 値 を 設 定 するのが 有 効 ですが リソー スに 余 裕 がない 環 境 では 大 きな 値 を 設 定 することで 逆 に 非 効 率 に なることがあります 接 続 のバックログ 数 です 未 処 理 の 接 続 がこの 数 を 超 えた 場 合 処 理 に 空 きができるまで 以 降 の 接 続 は 拒 否 します HTTPポート 番 号 です 指 定 したポートで HTTP/RESTインターフェースを 起 動 します [2.1.0] SSL(HTTPS)ポート 番 号 です 指 定 したポートで SSLでHTTP/RESTインターフェースを 起 動 しま す[2.1.0] AJP13ポート 番 号 です 指 定 したポートで AJP13でHTTP/RESTインターフェースを 起 動 し ます[2.1.2] Apacheのmod_jkまたはmod_proxyによるAJP13での 接 続 が 可 能 になります SSLに 使 用 するキーストアのファイルパスです[2.1.0] SSLに 使 用 するキーのPKCS12パスワードです[2.1.0] SSLに 使 用 するキーストアのパスワードです[2.1.0] TLSポート 番 号 です 指 定 したポートで TLSによるプログラムインターフェースを 起 動 します[3.0.0] TLSに 使 用 するキーストアのファイルパスです[3.0.0] TLSに 使 用 するキーのPKCS12パスワードです[3.0.0] TLSに 使 用 するキーストアのパスワードです[3.0.0] 2.3.2 SSL/TLSの 設 定 Copper PDFは 高 速 な 独 自 の 通 信 プロトコル(CTIP)の 他 Copper PDF 2.1.0からはHTTPに よる 接 続 をサポートしました さらに SSL(HTTPS)による 暗 号 化 された 接 続 も 可 能 で す Copper PDF 3.0.0からはTLSによる 暗 号 化 された 高 速 な 接 続 をサポートしました 38 2.3 設 定 ファイル

2. 管 理 者 ガイド SSLを 有 効 にするためには キーペアを 用 意 してください 以 下 はOpenSSLとJDK 付 属 のkeytoolを 使 用 する 方 法 です 秘 密 鍵 とCSRを 用 意 する 以 下 のコマンドで 秘 密 鍵 とCSR( 証 明 書 署 名 要 求 )を 生 成 してください パスフレーズは 任 意 に 設 定 して 構 いません 例 2.28 秘 密 鍵 の 生 成 openssl genrsa -des3 -out ssl.key 1024 例 2.29 CSRの 生 成 openssl req -new -key ssl.key -out ssl.csr サイト 証 明 書 を 用 意 する サイト 証 明 書 は 前 に 生 成 したCSRを 認 証 局 に 送 付 することで 入 手 することができます が テストや 単 に 通 信 の 暗 号 化 の 目 的 であれば 自 己 署 名 によるサイト 証 明 書 を 使 用 す ることができます 以 下 のコマンドでサイト 証 明 書 を 生 成 してください 例 2.30 自 己 署 名 によるサイト 証 明 書 の 生 成 openssl x509 -in ssl.csr -out ssl.crt -req -signkey ssl.key -days 3650 秘 密 鍵 とサイト 証 明 書 をキーストアに 格 納 する 秘 密 鍵 とサイト 証 明 書 を 利 用 するには JDK 付 属 のkeytoolによって 管 理 されるキースト アファイルに 格 納 する 必 要 があります 最 初 に 以 下 のコマンドで 秘 密 鍵 とサイト 証 明 書 のペアをPKCS12 形 式 のファイルにまとめてください このとき 設 定 するパスワー ドがPKCS12パスワードです 例 2.31 PKCS12キーペアを 生 成 openssl pkcs12 -inkey ssl.key -in ssl.crt -export -out ssl.pkcs12 次 に PKCS12ファイルをキーストアに 格 納 してください このとき キーストアのパス ワードを 設 定 します 例 2.32 PKCS12キーペアをキーストアに 格 納 keytool -importkeystore -srckeystore ssl.pkcs12 -srcstoretype PKCS12 -destkeystore keystore 2.3 設 定 ファイル 39

2. 管 理 者 ガイド 以 上 の 手 順 で 生 成 したキーをCopper PDFサーバーのSSL/TLS 通 信 に 使 用 する 場 合 は 設 定 ファイルまたはコマンドラインオプションでキーストアファイルのファイルパスと PKCS12パスワード キーストアのパスワードを 設 定 してください 2.3.3 Apacheを 通 しての 接 続 Copper PDF 2.1.2からは Apacheからmod_proxy_ajpまたはmod_jkによる 接 続 ができるよ うに AJP13をサポートしました AJP13により Apacheにより 公 開 されているドメイ ン ポート 上 にCopper PDFのHTTP/RESTインターフェースへの 窓 口 を 設 けることがで きます また SSL 通 信 にApacheを 利 用 することができます AJP13によるマウントポイントは 任 意 のパスに 設 定 することができます 以 下 の 例 は Copper PDF が localhost の 8095 ポ ー ト で AJP13 を 起 動 し て い る 場 合 に /cti/ パ ス で HTTP/RESTインターフェースを 使 用 可 能 にするApache 側 の 設 定 例 です 例 2.33 mod_proxy_ajpの 設 定 <Proxy *> Order deny,allow Allow from all </Proxy> <Location /cti/> ProxyPass ajp://127.0.0.1:8095/ </Location> 例 2.34 mod_jkの 設 定 JkWorkerProperty worker.list=copper JkWorkerProperty worker.copper.type=ajp13 JkWorkerProperty worker.copper.host=127.0.0.1 JkWorkerProperty worker.copper.port=8095 JkLogFile /var/log/httpd/jk.log JkLogLevel info JkMount /cti/* copper 2.3.4 ログの 設 定 (logging.properties) logging.propertiesはcopper PDFサーバーのログ 設 定 ファイルです この 設 定 の 変 更 を 反 映 す る に は Copper PDF サ ー バ ー の 再 起 動 が 必 要 で す ロ グ 設 定 フ ァ イ ル は java.util.loggingのログプロパティファイル の 形 式 で 記 述 してください 40 2.3 設 定 ファイル

2. 管 理 者 ガイド 例 2.35 ログの 設 定 例 # Logging levels by categories. jp.cssj.handlers = jp.cssj.logging.filehandler, \ java.util.logging.consolehandler jp.cssj.level = INFO # File jp.cssj.logging.filehandler.level = INFO jp.cssj.logging.filehandler.formatter = java.util.logging.simpleformatter jp.cssj.logging.filehandler.encoding = UTF-8 # ログを 保 持 する 日 数 を 設 定 する(Copper PDF 3.1.2 以 降 ) jp.cssj.logging.filehandler.backlogs = 365 # Console java.util.logging.consolehandler.level = OFF java.util.logging.consolehandler.formatter = java.util.logging.simpleformatter Copper PDF に は 日 付 で ロ グ を ロ ー テ ー シ ョ ン す る ロ グ ハ ン ド ラ (jp.cssj.logging.filehandler) が 用 意 されています ハンドラのプロパティは 次 のとおりで す 表 2.3 jp.cssj.logging.filehandler のプロパティ 名 前 デフォルト 説 明 jp.cssj.logging.filehandler.directory copperdの 標 準 のlogsディレクト リ ログの 出 力 先 ディレクトリ jp.cssj.logging.filehandler.prefix copperd. ログファイル 名 の 先 頭 の 文 字 列 jp.cssj.logging.filehandler.suffix.log ログファイル 名 の 末 尾 の 文 字 列 jp.cssj.logging.filehandler.level ALL ログレベル jp.cssj.logging.filehandler.filter N/A ログのフィルタ jp.cssj.logging.filehandler.formatter java.util.logging.simpleformatter ログのフォーマッタ jp.cssj.logging.filehandler.encoding jp.cssj.logging.filehandler.backlogs UTF-8 ログファイルを 永 久 に 保 存 する ログファイルのキャラクタエン コーディング 過 去 のログファイルを 保 存 する 日 数 2.3 設 定 ファイル 41

2. 管 理 者 ガイド 2.3.5 アクセス 制 御 の 設 定 (access.txt) access.txtはipアドレスでアクセスできるクライアントを 制 限 する 設 定 です このファイ ルの 変 更 は 自 動 的 に 検 出 されるため 変 更 後 にCopper PDFサーバーを 再 起 動 する 必 要 は ありません 各 行 のルールを [allow deny] IPアドレス という 形 式 で 記 述 します IPアドレスはIPv4, IPv6のどちらの 形 式 も 使 用 可 能 です allowは 指 定 されたアドレスのアクセスを 許 可 し denyはアクセスを 拒 否 するルールで す クライアントからのアクセスがあった 場 合 は 先 頭 から 順 に 検 索 し 最 初 に 一 致 し たルールが 適 用 されます IPアドレスを * にすると 全 てのクライアントにルールを 適 用 します 例 2.36 アクセス 制 御 の 設 定 例 allow 127.0.0.1 deny * 2.3.6 profilesディレクトリ profilesディレクトリ 内 の 設 定 は Copper PDFの 出 力 結 果 に 関 係 するものです デフォル トの 入 出 力 プロパティやフォントの 情 報 が 含 まれます Linux 版 のcopperdおよび Windows 版 の 各 種 ツールはconfディレクトリ 内 のprofilesディ レクトリの 設 定 を 使 用 しますが Linux 版 の copper copper-webapp は 初 回 実 行 時 に 実 行 ユーザーのホームディレクトリに.copperという 名 前 のディレクトリをつくり そこに profilesディレクトリを 作 成 します copper, copper-webappを 使 用 する 各 ユーザーはホー ムディレクトリの 設 定 を 編 集 する 必 要 があります copper-webappの 設 定 ファイルは 初 回 実 行 時 に/WEB-INF/client.propertiesから 各 ユー ザーの$HOME/.copper/webapp.proprtiesにコピーされます [2.0.1] 2.3.7 デフォルトの 入 出 力 プロパティ(default.properties) default.propertiesはデフォルトの 入 出 力 プロパティを 設 定 するものです 入 出 力 プロパ ティはcopperコマンドの 引 数 やcopper-webappの 設 定 ウィンドウ プログラムインター フェースによって 上 書 きされます default.propertiesは その 初 期 値 をあらかじめ 設 定 す るものです default.propertiesの 変 更 は 実 行 中 のCopper PDFサーバーにより 自 動 的 に 検 知 されますの で 変 更 の 度 にCopper PDFサーバーを 再 起 動 する 必 要 はありません 42 2.3 設 定 ファイル

2. 管 理 者 ガイド ファイルの 形 式 は Javaのプロパティファイル です 各 プロパティは 入 出 力 プロパティ の 節 で 解 説 されていますが 1つだけsystem.fontsという 特 別 なプロパティがあります system.fontsは 後 で 次 に 説 明 するフォント 設 定 ファイルをdefault.propertiesファイルから の 相 対 パスで 指 定 したものです 2.3.8 fontsディレクトリ フォント 関 連 の 設 定 です 詳 細 はフォントの 設 定 の 章 で 解 説 します 2.3 設 定 ファイル 43

2. 管 理 者 ガイド 2.4 フォントの 設 定 Copper PDFはフォントを 埋 め 込 まないPDFと フォントを 埋 め 込 んだPDFの 両 方 を 出 力 することができます デフォルトではフォントを 埋 め 込 みません また 機 能 限 定 版 ラ イセンスではフォントの 埋 め 込 みはできません フォントを 埋 め 込 まないPDFはサイズ が 小 さくなりますが 表 示 する 環 境 によっては 全 く 意 図 しないフォントが 使 われてし まったり 文 字 化 けが 生 じてしまったり まったく 表 示 できないことがあります 重 要 な 文 書 特 に 同 じ 表 示 が 保 障 される 必 要 がある 場 合 は フォントを 埋 め 込 んでください 埋 め 込 むフォントの 指 定 は Copper PDF 3.0.0 からはCSSの@font-faceルール(WebFont) を 使 うこともできますが 高 速 に 処 理 させるためには あらかじめ 設 定 しておくことを 推 奨 します フォント 関 連 の 設 定 はprofilesディレクトリ 内 のfontsディレクトリに 含 ま れています まだ デフォルトの 設 定 では ここにフォントファイルも 置 くことになり ます fontsディレクトリ 内 の 構 成 は 次 のとおりです 図 2.12 fontsディレクトリの 構 成 fonts -- fonts.xml -- truetype -- warrays -- afms -- cmaps `-- encodings fonts.xml truetype warrays cmaps afms フォント 設 定 ファイルです Copper PDFが 使 用 するフォントの 設 定 が 記 述 されていま す 出 荷 時 のfonts.xmlの 設 定 では このディレクトリ 内 のフォントファイルを 自 動 的 に 読 み 込 むようになっています 使 用 したいフォントをここにコピー(あるいはシンボリッ クリンク)して 設 定 を 反 映 してください truetypeというディレクトリ 名 はCopper PDF 2.0.2までTrueType フォントしか 使 用 できなかったためで 実 際 はOpenType CFF/Type2 (.otf)フォント WOFF[3.1.0]にも 対 応 しています CID-Keydフォントを 使 用 するために 既 定 のフォントの 幅 情 報 が 配 置 されています CID-KeydフォントのためのCMapファイルが 配 置 されています コアフォントのフォントメトリックス 情 報 がAFM 形 式 で 配 置 されています 44 2.4 フォントの 設 定

2. 管 理 者 ガイド encodings コアフォントのための 文 字 名 と 各 エンコーディングとの 対 応 表 が 配 置 されています 2.4.1 フォント 設 定 の 反 映 Copper PDFはfonts.xmlを 解 析 し フォントへアクセスするための 情 報 をfonts.xmlが 配 置 されているのと 同 じディレクトリに fonts.xml.dbというファイル 名 で 保 存 します Copper PDF は fonts.xml と fonts.xml.db の タ イ ム ス タ ン プ を 比 較 し 異 な っ て い れ ば fonts.xmlを 自 動 的 に 読 み 込 むため fonts.xmlへの 変 更 はすぐに 反 映 されます ただし OSへのフォントのインストールや truetypeディレクトリ 内 におけるフォント ファイルの 追 加 削 除 置 き 換 え 等 を 自 動 検 出 しません 変 更 を 反 映 させるためには fonts.xml.dbファイルを 削 除 してください 動 作 中 のCopper PDFはfonts.xml.dbの 削 除 を 自 動 的 に 検 出 して 設 定 を 再 読 み 込 みします 2.4.2 ドキュメント 中 でのフォントの 利 用 ド キ ュ メ ン ト 中 で 使 用 さ れ る フ ォ ン ト を 特 定 す る た め の CSS プ ロ パ テ ィ は font-family [css] (ファミリ 名 ), font-weight [css] ( 太 さ), font-size [css] ( 大 きさ), font-style [css] (スタイル) の4つです(font [css] プロパティでまとめて 指 定 すること もできます) 指 定 されたファミリ 名 太 さ スタイルから 記 述 された 文 字 を 表 記 できる 最 も 近 いフォントが 選 択 されます 該 当 する 太 さのフォントが 見 つからない 場 合 は 機 械 的 に 文 字 の 輪 郭 を 拡 張 して 太 い フォントがつくられます ( 逆 に 指 定 した 太 さより 細 いフォントがない 場 合 機 械 的 に 細 いフォントをつくることはありません 最 も 細 いフォントが 使 われるだけです) また font-style [css] にitalicまたはobliqueが 指 定 されたとき 斜 体 スタイルのフォン トが 見 つからない 場 合 は フォントを 機 械 的 に 傾 けます 同 時 にfont-weight [css] が 指 定 されている 場 合 は 以 下 の 表 のとおり font-style [css] の 指 定 がitalicかobliqueかで 選 択 されるフォントが 異 なることがあります 表 2.4 フォントスタイルの 選 択 条 件 italic 指 定 の 場 合 oblique 指 定 の 場 合 太 さ と ス タ イ ル が 一 致 す る フォントがある 太 さだけ 一 致 するフォントが ある スタイルだけ 一 致 するフォン トがある 太 さとスタイルが 一 致 するフォ ントを 使 用 する 太 さが 一 致 するフォントを 傾 け て 使 用 する スタイルが 一 致 するフォントを 太 くして 使 用 する 太 さとスタイルが 一 致 するフォン トを 使 用 する 太 さが 一 致 するフォントを 傾 けて 使 用 する スタイルが 一 致 するフォントを 太 くして 使 用 する 2.4 フォントの 設 定 45

2. 管 理 者 ガイド 条 件 italic 指 定 の 場 合 oblique 指 定 の 場 合 太 さだけ 一 致 するフォントと スタイルだけ 一 致 するフォン トがある 太 さ も ス タ イ ル も 一 致 す る フォントがない スタイルが 一 致 するフォントを 太 くして 使 用 する 他 の 条 件 が 一 致 するフォントを 太 くして 傾 けて 使 用 する 太 さが 一 致 するフォントを 傾 けて 使 用 する 他 の 条 件 が 一 致 するフォントを 太 くして 傾 けて 使 用 する 2.4.3 デフォルトのフォント ドキュメント 中 でフォントが 指 定 されていない 場 合 あるいは 指 定 されたフォントが 見 つからない 場 合 は output.default-font-family [io] により 設 定 されたフォント が 使 われます これはデフォルトではserif(ローマンあるいは 明 朝 体 )です CMapに 該 当 するコードがない コアフォントにも 該 当 する 文 字 がない かつインス トール 済 みのフォントにも 該 当 する 文 字 がないといった 理 由 で どうしても 表 示 でき ない 文 字 がドキュメント 中 に 記 述 された 場 合 は 代 わりに16 進 数 でユニコードを 表 す 組 文 字 ( のような 文 字 )が 表 示 されます 2.4.4 フォントの 種 類 Copper PDFがサポートするフォントには コアフォント CID-Keyed フォント CID Identityフォント 埋 め 込 みフォント の4 種 類 があります コアフォントは 常 に 利 用 可 能 ですが 埋 め 込 みフォント CID Identityフォント CID-Keyedフォントのどれを 利 用 す るかは output.pdf.fonts.policy [io] によって 選 択 されます また Copper PDFの 拡 張 CSSプロパティ -cssj-font-policy [css] によってドキュメント 中 で 指 定 するこ ともできます デフォルトではコアフォントとCID-Keyedフォントだけが 使 われます output.pdf.fonts.policy [io] ま た は -cssj-font-policy [css] に cid-keyed, cididentity, embeddedを 指 定 することで それぞれCID-Keyedフォント CID Identityフォン ト 埋 め 込 みフォントを 切 り 替 えることができます コアフォントは 常 に 使 用 されます が "-core"を 指 定 することで 除 外 することができます[3.0.0] またスペース 区 切 で 複 数 指 定 することも 可 能 です[2.0.1] "embedded cid-keyed"のようにスペース 区 切 りで 複 数 指 定 された 場 合 は 最 初 に 指 定 されたものから 優 先 的 に 使 用 されます[2.0.9] ただし コアフォ ントの 優 先 度 は 常 に 最 低 となります PDF/A-1を 出 力 する 場 合 は 上 記 の 設 定 に 関 わらず 埋 め 込 みフォントだけが 使 われま す[2.1.0] outlinesを 指 定 すると 埋 め 込 みフォントが 使 われ なおかつ 全 てのフォントがアウトラ イン 化 されます [3.1.1] outlines 指 定 はPDF/A-1でも 有 効 です 46 2.4 フォントの 設 定

2. 管 理 者 ガイド 2.4.5 コアフォント コアフォントは ほとんどのPDF 表 示 環 境 が 標 準 的 にサポートしているフォントで フォントの 埋 め 込 みをせずに 表 示 することができます 14 種 類 あることから コア14 フォントとも 呼 ばれます コアフォントはさらにletter( 欧 文 文 字 記 号 だけで 構 成 され るもの) symbol( 欧 文 文 字 記 号 以 外 の 文 字 を 含 むもの)の2 種 類 に 分 けられます 次 の 表 はコアフォントの 一 覧 です 表 2.5 コアフォント 正 式 名 称 略 称 ファミリ 名 太 字 斜 体 種 類 Times Roman Times-Roman Times letter Times Bold Times-Bold Times letter Times Italic Times-Italic Times letter Times Bold Itatdc Times-BoldItalic Times letter Helvetica Helvetica Helvetica letter Helvetica Bold Helvetica-Bold Helvetica letter Helvetica Oblique Helvetica-Oblique Helvetica letter Helvetica Bold Oblique Helvetica-BoldOblique Helvetica letter Courier Courier Courier letter Courier Bold Courier-Bold Courier letter Courier Oblique Courier-Oblique Courier letter Courier Bold Oblique Courier-BoldOblique Courier letter Symbol Symbol Symbol symbol ITC Zapf Dingbats ZapfDingbats ZapfDingbats symbol CSSのfont-family [css] プロパティによるフォントの 指 定 は 正 式 名 称 略 称 ファミ リ 名 の い ず れ で も 可 能 で す フ ァ ミ リ 名 を 使 用 し た 場 合 は font-style [css], font-weight [css] プロパティの 指 定 により 同 じファミリ 名 を 持 つフォントのうち ス タイルと 太 さが 最 も 一 致 するフォントが 自 動 的 に 選 択 されます コアフォントのフォントメトリックス 情 報 ( 文 字 の 幅 などの 情 報 )がAFM(Adobe Font Metrics)ファイルとして fonts/afmsディレクトリに 収 められています これらのファイ ルをユーザーが 変 更 する 必 要 はありません 2.4 フォントの 設 定 47

2. 管 理 者 ガイド 各 文 字 とPDF 内 で 使 用 される 文 字 コードとの 対 応 表 が fonts/encodingsディレクトリに 収 められています UNICODE.txtはletterフォントの 文 字 名 とユニコードとの 対 応 表 です symbol.txtとzdingbat.txtはそれぞれsymbol, ITC Zapf Dingbatsのためのユニコード 対 応 表 です これらのファイルをユーザーが 変 更 する 必 要 はありません 以 下 はletterフォントで 使 用 できる 文 字 セット(WinAnsiEncodingエンコーディング)の 文 字 一 覧 表 です それぞれの 文 字 は8ビット(16 進 数 で2 桁 )のユニコードに 対 応 しており 縦 が 上 位 桁 横 が 下 位 桁 です ただし 80から9Fまでのコードで 空 いている 部 分 は 対 応 する 文 字 がないことを 表 し 下 に4 桁 の16 進 数 字 がある 文 字 には 同 じ 文 字 に 対 して2つ のコードがあります 例 えばダブルダガー( )を 表 示 する 場 合 はドキュメント 中 で&#x87;または&#x2021と 表 記 してください 表 2.6 WinAnsiEncodingの 文 字 一 覧 - 0 1 2 3 4 5 6 7 8 9 A B C D E F 2! " # $ % & ' ( ) * +, -. / 3 0 1 2 3 4 5 6 7 8 9 : ; < = >? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ \ ] ^ _ 6 ` a b c d e f g h i j k l m n o 7 p q r s t u v w x y z { ~ 8 20AC 201A ƒ 0192 201E 2026 2020 2021 ˆ 02C6 2030 Š 0160 2039 Œ 0152 Ž 017D 9 2018 2019 201C 201D 2022 2013 2014 02DC 2122 š 0161 203A œ 0153 ž 017E Ÿ 0178 A ª «B ± ² ³ µ ¹ º» ¼ ½ ¾ C À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï D Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß E à á â ã ä å æ ç è é ê ë ì í î ï F ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ 48 2.4 フォントの 設 定

2. 管 理 者 ガイド 表 2.7 Symbolの 文 字 一 覧 以 下 はSymbolで 使 用 できる 文 字 の 一 覧 です 文 字 の 下 の 数 字 は16 進 ユニコードです 0020 00A0! 0021 2200 # 0023 2203 % 0025 & 0026 220B ( 0028 ) 0029 2217 + 002B, 002C 2212. 002E / 002F 0 0030 1 0031 2 0032 3 0033 4 0034 5 0035 6 0036 7 0037 8 0038 9 0039 : 003A ; 003B < 003C = 003D > 003E? 003F 2245 Α 0391 Β 0392 Χ 03A7 0394 2206 Ε 0395 Φ 03A6 Γ 0393 Η 0397 Ι 0399 ϑ 03D1 Κ 039A Λ 039B Μ 039C Ν 039D Ο 039F Π 03A0 Θ 0398 Ρ 03A1 Σ 03A3 Τ 03A4 Υ 03A5 ς 03C2 Ω 03A9 2126 Ξ 039E Ψ 03A8 Ζ 0396 [ 005B 2234 ] 005D 22A5 _ 005F F8E5 α 03B1 β 03B2 χ 03C7 δ 03B4 ε 03B5 φ 03C6 γ 03B3 η 03B7 ι 03B9 ϕ 03D5 κ 03BA λ 03BB µ 00B5 03BC ν 03BD ο 03BF π 03C0 θ 03B8 ρ 03C1 σ 03C3 τ 03C4 υ 03C5 ϖ 03D6 ω 03C9 ξ 03BE ψ 03C8 ζ 03B6 { 007B 007C 007D 223C 20AC ϒ 03D2 2032 2264 2044 2215 221E ƒ 0192 2663 2666 2665 2660 2194 2190 2191 2192 2193 00B0 ± 00B1 2033 2265 00D7 221D 2202 2022 00F7 2260 2261 2248 2026 F8E6 F8E7 21B5 ℵ 2135 I 2111 R 211C 2118 2297 2295 2205 2229 222A 2283 2287 2284 2282 2286 2208 2209 2220 2207 F6DA F6D9 F6DB 220F 221A 22C5 00AC 2227 2228 21D4 21D0 21D1 21D2 21D3 25CA 2329 F8E8 F8E9 F8EA 2211 F8EB F8EC F8ED F8EE F8EF F8F0 F8F1 F8F2 F8F3 F8F4 232A 222B 2320 F8F5 2321 F8F6 F8F7 F8F8 F8F9 F8FA F8FB F8FC F8FD F8FE 2.4 フォントの 設 定 49

2. 管 理 者 ガイド 以 下 はZapfDingbatsで 使 用 できる 文 字 の 一 覧 です 文 字 の 下 の 数 字 は16 進 ユニコードで す 表 2.8 ZapfDingbatsの 文 字 一 覧 0020 00A0 2701 2702 2703 2704 260E 2706 2707 2708 2709 261B 261E 270C 270D 270E 270F 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 271A 271B 271C 271D 271E 271F 2720 2721 2722 2723 2724 2725 2726 2727 2605 2729 272A 272B 272C 272D 272E 272F 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 273A 273B 273C 273D 273E 273F 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 274A 274B 25CF 274D 25A0 274F 2750 2751 2752 25B2 25BC 25C6 2756 25D7 2758 2759 275A 275B 275C 275D 275E F8D7 F8D8 F8D9 F8DA F8DB F8DC F8DD F8DE F8DF F8E0 F8E1 F8E2 F8E3 F8E4 2761 2762 2763 2764 2765 2766 2767 2663 2666 2665 2660 1 2460 2 2461 3 2462 4 2463 5 2464 6 2465 7 2466 8 2467 9 2468 10 2469 ❶ 2776 ❷ 2777 ❸ 2778 ❹ 2779 ❺ 277A ❻ 277B ❼ 277C ❽ 277D ❾ 277E ❿ 277F ➀ 2780 ➁ 2781 ➂ 2782 ➃ 2783 ➄ 2784 ➅ 2785 ➆ 2786 ➇ 2787 ➈ 2788 ➉ 2789 ➊ 278A ➋ 278B ➌ 278C ➍ 278D ➎ 278E ➏ 278F ➐ 2790 ➑ 2791 ➒ 2792 ➓ 2793 2794 2192 2194 2195 2798 2799 279A 279B 279C 279D 279E 279F 27A0 27A1 27A2 27A3 27A4 27A5 27A6 27A7 27A8 27A9 27AA 27AB 27AC 27AD 27AE 27AF 27B1 27B2 27B3 27B4 27B5 27B6 27B7 27B8 27B9 27BA 27BB 27BC 27BD 27BE 2.4.6 CIDフォント 欧 文 以 外 の 文 字 をPDFに 含 める 場 合 は CIDフォントを 用 います フォントを 埋 め 込 む 方 法 と フォントを 埋 め 込 まない 方 法 があり フォントを 埋 め 込 まない 方 法 には さら にCID IdentityとCID-Keyedフォントの2 種 類 の 方 法 があります どの 種 類 のフォントを 利 用 するかは 入 出 力 プロパティoutput.pdf.fonts.policy [io] の 設 定 によります 50 2.4 フォントの 設 定

2. 管 理 者 ガイド 埋 め 込 みフォントまたはCID Identityを 使 用 する 場 合 Copper PDFにフォントをインス トールする 必 要 があります Copper PDFの 出 荷 時 の 状 態 では truetypeディレクトリ 配 置 したフォントが 自 動 的 に 読 み 込 まれるようにfonts.xmlが 設 定 されています 埋 め 込 みフォント PDFにフォントの 字 体 データそのものを 埋 め 込 む 方 式 で 環 境 に 関 係 なく 確 実 に 同 じ 字 体 で 文 字 が 表 示 されることが 保 証 されます フォントを 埋 め 込 む 場 合 文 書 中 で 使 用 されている 文 字 のフォントだけをPDFに 含 める ため ファイルサイズは 最 小 限 に 抑 えられますが 出 力 されたPDFは 編 集 や 加 工 には 適 しません 表 示 や 印 刷 の 見 栄 えに 厳 密 さが 求 められる 場 合 や 広 く 配 布 する 文 書 あるいは 長 期 保 存 する 文 書 に 適 しています CID Identity フォントの 埋 め 込 みをせず グリフID(フォントファイルに 含 まれる 文 字 の 番 号 )をその ままPDF 内 に 記 述 する 方 式 です Copper PDFの 動 作 環 境 と PDFを 表 示 する 環 境 に 同 一 のフォントがインストールされている 必 要 があります グリフIDは 特 定 のフォント ファイルに 依 存 するため PDFを 表 示 する 環 境 にインストールされたフォントファイル が 異 なれば 似 たような 書 体 のフォントであっても 文 字 化 けが 発 生 するか 全 く 表 示 で きなくなります 同 一 のマシン 上 や 同 じ 組 織 内 での 編 集 や 加 工 印 刷 を 目 的 とする 文 書 に 適 しています フォントの 埋 め 込 みをする 場 合 にくらべて 出 力 されるPDFのサイズは 小 さくなりま す CID-Keyed フォント CID Identityフォント 同 様 にフォントの 埋 め 込 みをしませんが Adobe 社 により 公 開 され ているコード 体 系 (CMap)を 使 用 します PDFを 表 示 する 環 境 で 利 用 可 能 な 書 体 の 近 いフォントが 自 動 的 に 選 ばれるので 特 定 のフォントファイルに 依 存 することはありません ただし 使 用 できる 文 字 はAdobe 社 が 提 供 するCMapファイルで 定 義 された 文 字 に 限 られます また 全 ての 環 境 でPDFを 表 示 できることが 保 証 されるものではありません 特 定 の 言 語 環 境 のWindows やMacOS 特 定 のバージョン 以 降 のAdobe Readerなど 表 示 編 集 加 工 する 環 境 が 比 較 的 限 られ 表 示 や 印 刷 の 見 栄 えに 厳 密 さが 求 められない 文 書 には 有 効 です PDFのファイルサイズは 最 も 小 さくなります 2.4 フォントの 設 定 51

2. 管 理 者 ガイド PANOSE コード CID-Keyedフォントの 場 合 表 示 環 境 にインストールされた 書 体 の 近 いフォントを 選 ぶために PANOSE-1( パノーズ)という10 桁 のコードを 使 います PDFでは さらにクラ スID サブクラスIDというコードが 先 頭 に 付 けられるため 12 桁 となります クラスID サブクラスIDと PANOSE-1 コードはTrueType またはOpenType フォントか ら ツールを 使 って 取 得 することができます Microsoft 社 が 配 布 しているfonttools.exeに 含 まれるttfdump.exeというツールを 利 用 すると 便 利 です 以 下 はmsgothic.ttcからフォントの 情 報 を out.txtというテキストファイルに 書 き 出 すコ マンドです -c1は.ttcファイル( 複 数 のTrueType フォントを 含 むファイル) の1 番 目 の フォント 情 報 を 取 得 するためのオプションで 2 番 目 のフォント 情 報 を 取 得 する 場 合 は- c2のように 指 定 してください.ttfまたは.otfファイルではこのオプションは 不 要 です 例 2.37 ttfdump.exe によるフォント 情 報 の 取 得 C:\TTFDump>ttfdump.exe "C:\Windows\Fonts\msgothic.ttc" -c1 > out.txt 以 下 の 部 分 (OS/2テーブル)のsFamilyClassがクラスID サブクラスIDで PANOSE が10 桁 のPANOSE-1 コードです この 場 合 フォント 設 定 ファイル 中 ではPANOSE コードを 8121169725824と 指 定 してください 例 2.38 抽 出 されたフォント 情 報 の 例... 略 'OS/2' Table - OS/2 and Windows Metrics --------------------------------------- Size = 96 bytes (expecting 96 bytes) 'OS/2' version: 3... 略... ystrikeoutsize: 13 ystrikeoutposition: 66 sfamilyclass: 8 subclass = 1 PANOSE: 2 11 6 9 7 2 5 8 2 4 Unicode Range 1( Bits 0-31 ): E00002FF Unicode Range 2( Bits 32-63 ): 6AC7FDFB 略... 参 考 情 報 http://www.panose.com/productsservices/pan1.aspx PANOSE-1 コードの 仕 様 です 52 2.4 フォントの 設 定

2. 管 理 者 ガイド http://developer.apple.com/textfonts/ttrefman/rm06/chap6os2.html TrueType フォントのOS/2テーブルの 仕 様 です http://www.microsoft.com/typography/tools/tools.aspx Microsoft 社 のFontToolsのページです ここでダウンロードしたfonttools.exeを 実 行 する と 展 開 されたファイルの 中 にttfdump.exeがあります フォント 幅 情 報 ファイル 文 字 列 をレイアウトするとき 各 文 字 の 幅 や 基 底 線 の 情 報 が 必 要 です CID-Keyedフォ ントは フォントそのものは 含 まないフォント 幅 情 報 ファイルをもとにレイアウトしま す フォント 幅 情 報 ファイルはfonts/warraysディレクトリに 既 定 のものが 用 意 されてい ます 出 荷 時 のfonts.xmlの 設 定 では 文 書 中 がMincho, Gothicというフォント 名 で 明 朝 体 とゴ シック 体 のフォントが 使 われるようになっています それぞれserif, sans-serifという CSS 総 称 フォント 名 にも 結 び 付 けられており またMinchoはデフォルトのフォントで す つまり CID-Keyedフォントが 利 用 する 設 定 では 対 応 するフォントがない 場 合 は 全 てMinchoとなります これらのフォントは 実 際 には 多 くの 日 本 語 表 示 環 境 に 入 ってい ると 考 えられる 等 幅 の 明 朝 体 ゴシック 体 フォントが 使 用 されるようにPANOSE が 設 定 されています Copper PDF 2.1.10 以 降 では MS 明 朝 MSゴシック MS P 明 朝 MS Pゴシック MS UI Gothicの 幅 情 報 が 用 意 されています 出 荷 時 のfonts.xmlの 設 定 では それぞれの 名 前 で 文 書 中 から 使 用 できるようになっています これらのフォントを 使 うと 日 本 語 Windows 環 境 を 対 象 とした 軽 量 なPDFを 生 成 することができます ただし MS 系 フォン トが 入 っていない 環 境 では 隣 り 合 う 文 字 が 重 なったり 離 れすぎてしまったりという 現 象 が 発 生 します 手 持 ちのフォントから 幅 情 報 を 抽 出 し 新 たにフォント 幅 情 報 ファイルを 作 成 する 場 合 は 付 属 の ツ ー ル を 使 っ て く だ さ い 以 下 の よ う に java コ マ ン ド で 直 接 jp.cssj.sakae.pdf.tools.warraytool を 実 行 してください クラスパスとクラス 名 に 続 く 引 数 はそれぞれ cmapファイル Javaエンコーディング 名 フォントファイルです 複 数 の フォントを 含 むファイル(.ttc)の 場 合 さらにフォントの 番 号 を 続 けることができます 例 2.39 幅 情 報 の 抽 出 java -cp lib/cssj-sakae.jar:lib/sakae-opentype.jar:lib/commonslogging.jar:lib/cti-server.jar \ jp.cssj.sakae.pdf.tools.warraytool \ conf/profiles/fonts/cmaps/unijis-utf16-h \ UTF-16BE \ /usr/share/fonts/truetype/kochi/kochi-mincho.ttf \ > conf/profiles/fonts/warrays/kochi-mincho.txt 2.4 フォントの 設 定 53

2. 管 理 者 ガイド 2.4.7 フォントファイルの 種 類 埋 め 込 みフォント CID Identityフォントを 使 用 する 場 合 あるいは 後 述 するようにCID- Keyedフォントのためにフォントの 幅 情 報 を 抽 出 するためには Copper PDFが 動 作 する 環 境 にフォントファイルがインストールされている 必 要 があります Copper PDFがサポートするフォントファイルの 種 類 は 以 下 の 通 りです TrueType "OpenType(TrueType flavor)" 一 般 的 にTrueType と 呼 ばれるフォントファイルです.ttfまたは.ttc( 複 数 のフォントを 含 むもの)という 拡 張 子 のファイルとして 配 布 されています OpenType CFF/Type2 一 般 的 に 単 にOpenType と 呼 ばれる CFF/Type2 形 式 のOpenType フォントファイルで す.otfという 拡 張 子 のファイルとして 配 布 されています Copper PDF 2.0.3からサ ポートされました また Copper PDFは 上 記 のフォントファイル 以 外 に Java 実 行 環 境 によりサポートされ るフォントファイルを 使 用 することができます SunのJava 実 行 環 境 (1.5.0 以 降 )は TrueType に 加 えてType1フォント(.pfa,.pfb) F3フォント(.f3b)をサポートしています 2.4.8 フォント 設 定 ファイル PDF 出 力 に 使 用 するフォントの 情 報 はフォント 設 定 ファイル(fonts.xml) に 記 述 してくだ さい フォント 設 定 ファイルはXML 形 式 で ルート 要 素 はfontsです フォント 設 定 ファ イルには 各 種 ファイルのファイルパスの 情 報 も 含 まれており ファイルパスはフォン ト 設 定 ファイルからの 相 対 パスとなります fonts 要 素 には 次 の 要 素 が 含 まれています コアフォントのエンコーディング(encodings 要 素 ) コアフォントのエンコーディング 情 報 のファイルを 設 定 します 通 常 は 編 集 する 必 要 はありません letterフォント(synbolとzapfdingbats 以 外 のフォント)を 使 用 する 場 合 使 用 できる 文 字 セットにはStandardEncoding MacRomanEncoding WinAnsiEncodingの3 種 類 がありま す Copper PDFの 出 荷 時 にはWinAnsiEncodingが 設 定 されています core-fonts 要 素 の encoding 属 性 の 指 定 を 変 更 することで 切 り 替 えることができます 54 2.4 フォントの 設 定

2. 管 理 者 ガイド encodingsに 含 まれる 要 素 表 2.9 encoding 要 素 属 性 必 須 説 明 src グリフコードとグリフ 名 の 対 応 を 記 述 したファイルです cmapファイル(cmaps 要 素 ) CID-Keyedフォントのエンコーディング 情 報 のファイルを 設 定 します 通 常 は 編 集 する 必 要 はありません cmapsに 含 まれる 要 素 表 2.10 cmap 要 素 属 性 必 須 説 明 src Adobe Japan 1-4コードと 文 字 コードの 対 応 を 記 述 したファイルです java-encoding 文 字 コードのJavaエンコーディング 名 です コアフォント(core-fonts 要 素 ) コアフォントの 設 定 です 通 常 は 編 集 する 必 要 はありませんが 使 用 するエンコーディ ングを 変 更 したり ドキュメントから 参 照 する 際 の 別 名 を 追 加 することができます 表 2.11 core-fonts 要 素 属 性 必 須 説 明 unicode-src ユニコードと 文 字 名 の 対 応 を 記 述 したファイルです encoding エンコーディング 名 です encodingsで 設 定 されたものの 中 から 選 択 できます core-fontsに 含 まれる 要 素 core-fonts 要 素 にはletter-font, symbol-fontのいずれかを 含 むことができます letter-font letter-font 要 素 は 通 常 の 欧 文 フォントの 設 定 です 2.4 フォントの 設 定 55

2. 管 理 者 ガイド 表 2.12 letter-font 要 素 属 性 必 須 説 明 src AFMファイルです encoding core-fontsのencoding 属 性 を 上 書 きします symbol-font symbol-font 要 素 は 記 号 フォント(SymbolまたはZapfDingbats)の 設 定 です 表 2.13 symbol-font 要 素 属 性 必 須 説 明 src AFMファイルです encoding-src ユニコードとグリフコードの 対 応 を 記 述 したファイルです letter-fontおよびsymbol-fontに 含 まれる 要 素 letter-font お よ び symbol-font 内 に alias 要 素 を 追 加 す る こ と で ド キ ュ メ ン ト 中 の font-family [css] で 参 照 することができる 別 名 が 追 加 されます 表 2.14 alias 要 素 属 性 必 須 説 明 name フォントの 別 名 です letter-fontおよびsymbol-font 内 のinclude, exclude 要 素 により フォントが 使 用 される 文 字 範 囲 を 指 定 できます[2.0.3] includeにより フォントが 使 用 される 文 字 範 囲 を 明 示 するこ とができ excludeにより 除 外 する 文 字 範 囲 を 明 示 することができます include, exclude の 記 述 がない 場 合 は 利 用 可 能 な 全 ての 文 字 でフォントが 利 用 されます 表 2.15 include 要 素 属 性 必 須 説 明 unicode-range カンマで 区 切 ったユニコード 範 囲 ( 詳 細 は 後 述 ) 表 2.16 exclude 要 素 属 性 必 須 説 明 unicode-range カンマで 区 切 ったユニコード 範 囲 ( 詳 細 は 後 述 ) 56 2.4 フォントの 設 定

2. 管 理 者 ガイド unicode-rangeはu+に 続 く16 進 数 によるユニコードとハイフンを 用 います 例 えば 日 本 語 のかなを 含 める 文 字 範 囲 の 指 定 は 次 の 通 りです 例 2.40 ハイフンによる 文 字 範 囲 <include unicode-range="u+3030-30ff" /> また 下 位 の 桁 をワイルドカードに 置 き 換 えることもできます 以 下 の 記 述 は U+1F00-1FFFと 書 くのと 等 価 です 例 2.41 ワイルドカードによる 文 字 範 囲 <include unicode-range="u+1f??" /> 複 数 の 文 字 範 囲 はカンマで 区 切 ってください 例 2.42 複 数 の 文 字 範 囲 <include unicode-range="u+3030-30ff,u+1f??" /> CIDフォント(cid-fonts 要 素 ) cid-fontsに 含 まれる 要 素 cid-fonts 要 素 にはcid-keyed-font, font-file, font-dir, system-font, all-system-fontsのいずれか を 含 むことができます cid-keyed-font cid-keyed-font 要 素 はフォントファイルを 使 用 する 代 わりに フォントの 幅 情 報 を 記 述 したファイルを 利 用 してCID-Keyedフォントを 定 義 するものです 表 2.17 cid-keyed-font 要 素 属 性 必 須 説 明 name フォント 名 です italic weight panose フォントを 斜 体 にする 場 合 はtrue そうでない 場 合 はfalseを 設 定 してください フォントの 太 さです 100から900まで100 刻 みの 値 で 設 定 してください 400が 普 通 の 太 さです PDFのFontDescripterのPanoseフィールドに 対 応 する 値 です クラスID サブクラスID 10 桁 のPANOSE-1 コードの 順 でスペース 区 切 りで 記 述 した12の 数 字 から 構 成 されます cmap 横 書 きのCMap 名 です 2.4 フォントの 設 定 57

2. 管 理 者 ガイド 属 性 必 須 説 明 vcmap 縦 書 きのCMap 名 です warray フォント 幅 情 報 ファイルです font-file font-file 要 素 はフォントファイルを 直 接 指 定 します 表 2.18 font-file 要 素 属 性 必 須 説 明 name フォント 名 フォントデータから 取 得 されますが ここで 上 書 きする こともできます src フォントファイルです index 複 数 のフォントを 含 むTTCファイルの 中 で 使 用 するフォントの 番 号 です 省 略 した 場 合 は0です TTCファイルでない 場 合 は 無 視 され ます フォントのタイプをスペース 区 切 りで 記 述 します 値 は 次 のいずれ かです types embedded cid-identity cid-keyed 埋 め 込 みフォント CID Identityフォント CID-Keyedフォント italic weight cmap vcmap (type="cid-keyed"の 場 合 ) フォントが 斜 体 かどうかはフォントデータから 取 得 されますが こ こで 上 書 きすることもできます 斜 体 にする 場 合 はtrue そうでない 場 合 はfalseを 設 定 してください フォントの 太 さはフォントデータから 取 得 されますが ここで 上 書 きすることもできます 100から900まで100 刻 みの 値 で 設 定 してく ださい 横 書 きのCMap 名 です 縦 書 きのCMap 名 です 58 2.4 フォントの 設 定

2. 管 理 者 ガイド font-dir font-dir 要 素 は 指 定 したディレクトリに 存 在 するフォントファイルを 直 接 まとめて 読 み 込 みます 表 2.19 font-dir 要 素 属 性 必 須 説 明 dir フォントファイルが 格 納 されるディレクトリです フォントのタイプをスペース 区 切 りで 記 述 します 値 は 次 のいずれかです types embedded cid-identity 埋 め 込 みフォント CID Identityフォント system-font 表 2.20 system-font 要 素 system-fontはjava 実 行 環 境 を 利 用 してフォントを 読 み 込 みます OSやウィンドウシステ ムにインストールされたフォントを 名 前 で 指 定 できますが 縦 書 きなどフォントの 一 部 の 機 能 に 制 約 があります 属 性 必 須 説 明 name src file [3.0.0] srcまたはfileが 必 要 srcまたはfileが 必 要 フォント 名 です フォントデータから 取 得 されますが ここで 上 書 きすることもできます システムにインストールされたフォント 名 です フォントファイルです font-file 要 素 による 読 み 込 みでは Copper PDF 独 自 の プ ロ グ ラ ム で 読 み 込 み ま す が こ ち ら で は java.awt.font を 使 用 します 通 常 はfont-file 要 素 を 使 ってください 2.4 フォントの 設 定 59

2. 管 理 者 ガイド 属 性 必 須 説 明 フォントのタイプをスペース 区 切 りで 記 述 します 値 は 次 のいず れかです types embedded cid-identity cid-keyed 埋 め 込 みフォント CID Identityフォント CID-Keyedフォント italic weight フォントが 斜 体 かどうかはフォントデータから 取 得 されますが ここで 上 書 きすることもできます 斜 体 にする 場 合 はtrue そうで ない 場 合 はfalseを 設 定 してください フォントの 太 さはフォントデータから 取 得 されますが ここで 上 書 きすることもできます 100から900まで100 刻 みの 値 で 設 定 し てください 400が 普 通 の 太 さです cmap (type="cid-keyed"の 場 合 ) 横 書 きのCMap 名 です vcmap 縦 書 きのCMap 名 です all-system-fonts all-system-fontsはjava 実 行 環 境 が 利 用 可 能 なフォントを 全 て 読 み 込 みます 表 2.21 all-system-fonts 要 素 属 性 必 須 説 明 dir [3.0.0] フォントファイルが 格 納 されるディレクトリです font-dir 要 素 による 読 み 込 みでは Copper PDF 独 自 のプログラムで 読 み 込 みますが こちらではjava.awt.Font を 使 用 します 通 常 はfont-dir 要 素 を 使 ってください フォントのタイプをスペース 区 切 りで 記 述 します 値 は 次 のいずれかです types embedded cid-identity 埋 め 込 みフォント CID Identityフォント 60 2.4 フォントの 設 定

2. 管 理 者 ガイド cid-keyed-font, font-file, system-fontに 含 まれる 要 素 フォントの 名 前 はフォントデータから 取 得 されますが cid-keyed-font, font-file, systemfontにalias 要 素 を 追 加 することにより さらにフォントの 別 名 を 追 加 できます 記 述 方 法 はcore-font, symbol-fontのalias と 同 じです cid-keyed-font, font-file, system-fontにinclude, exclude 要 素 を 追 加 することにより 有 効 な 文 字 範 囲 を 指 定 することができます 記 述 方 法 はcore-font, symbol-fontのinclude, exclude と 同 じです 一 般 フォントファミリ(generic-fonts 要 素 ) font-family [css] で 指 定 できるserif, sans-serif, monospace, fantasy, cursiveという 5 種 類 の 一 般 フォント ファミリに 対 応 するフォントを 指 定 するものです generic-fontsに 含 まれる 要 素 generic-fontsにはcssの 一 般 フォントファミリ 名 に 対 応 する5つの 名 前 の 要 素 serif, sans-serif, monospace, fantasy, cursiveが 含 まれます font-family [css] 等 で 指 定 するフォント 名 には 実 際 のフォント 名 以 外 に5 種 類 の 一 般 フォントファミリ 名 を 指 定 することができます generic-fontsは この 一 般 フォントファ ミリ 名 と 実 際 のフォントとの 対 応 付 けをするものです 表 2.22 serif 要 素 属 性 必 須 説 明 font-family カンマで 区 切 ったフォント 名 を 優 先 順 位 の 高 いものから 順 に 記 述 します 表 2.23 sans-serif 要 素 属 性 必 須 説 明 font-family カンマで 区 切 ったフォント 名 を 優 先 順 位 の 高 いものから 順 に 記 述 します 表 2.24 monospace 要 素 属 性 必 須 説 明 font-family カンマで 区 切 ったフォント 名 を 優 先 順 位 の 高 いものから 順 に 記 述 します 2.4 フォントの 設 定 61

2. 管 理 者 ガイド 表 2.25 fantasy 要 素 属 性 必 須 説 明 font-family カンマで 区 切 ったフォント 名 を 優 先 順 位 の 高 いものから 順 に 記 述 します 表 2.26 cursive 要 素 属 性 必 須 説 明 font-family カンマで 区 切 ったフォント 名 を 優 先 順 位 の 高 いものから 順 に 記 述 します 2.4.9 フォント 設 定 ファイルの 設 定 例 デフォルトのフォントの 変 更 output.pdf.fonts.policy [io] に embedded を 指 定 す る か CSS で {-cssj-fontpolicy: embedded;をしていすると 埋 め 込 みフォントが 使 用 されますが 出 荷 時 の フォント 設 定 ファイルでは 大 抵 の 場 合 は 全 ての 文 字 が のような 組 み 文 字 になって しまいます これは デフォルトのフォントが 一 般 フォントファミリのserifになってお り serifはcid-keyedフォントにした 対 応 付 けてないためです output.default-font-family [io] でデフォルトのフォントを 変 更 するか あるい はフォント 設 定 ファイルを 修 正 して 一 般 フォントファミリを 埋 め 込 み 可 能 なフォント に 対 応 させます 例 えばtruetypeディレクトリにIPAフォント (http://ossipedia.ipa.go.jp/ipafont/) を 配 置 した 場 合 は generic-fontsの 部 分 を 以 下 のように 設 定 することで フォントの 埋 め 込 みに デ フォルトでIPAフォントが 使 われるようになります 例 2.43 例 のタイトル <generic-fonts> <serif font-family="mincho,ipa P 明 朝,UniKS-Myungjo,UniCNS- Ming,UniGB-Song" /> <sans-serif font-family="gothic,ipa Pゴシック,UniKS- Gothic,UniCNS-Ming,UniGB-Heiti" /> <monospace font-family="gothic,ipa ゴシック,UniKS-Gothic,UniCNS- Ming,UniGB-Heiti" /> <fantasy font-family="comic-sans-ms,gothic,ipa Pゴシック,UniKS- Gothic,UniCNS-Ming,UniGB-Heiti" /> <cursive font-family="comic-sans-ms,mincho,ipa P 明 朝,UniKS- Myungjo,UniCNS-Ming,UniGB-Song" /> </generic-fonts> 62 2.4 フォントの 設 定

3. 開 発 者 ガイド 3. 開 発 者 ガイド 3.1 プログラムインターフェースの 概 要 3.1.1 アプリケーションからCopper PDFの 機 能 を 使 うには OSのバックグラウンドで 動 作 しているCopper PDFサーバー(copperd)を アプリケー ションから 呼 び 出 すためには ソケット 通 信 を 使 います 通 信 用 のドライバは 各 言 語 ごとに 配 布 しています これは 一 般 的 なデータベースサーバーと 同 様 のしくみです また Copper PDF 2.1 以 降 ではHTTPによる 接 続 をサポートしており HTTPクライアント プログラムやライブラリを 使 用 して 接 続 することができます いずれにしても ネット ワーク 越 しの 接 続 が 可 能 です 図 3.13 アプリケーションからcopperdにアクセスする 通 信 方 式 には 次 の3 種 類 があります CTIP 1.0 (72ページ) Copper PDFの 前 の 製 品 (CSSJ)から 使 われている 高 速 で 信 頼 性 の 高 い 通 信 方 式 です CTIP 2.0 (91ページ)[2.1.0] CTIP 1.0の 高 速 高 信 頼 性 をそのままに 機 能 を 強 化 した 通 信 方 式 です 3.1 プログラムインターフェースの 概 要 63

3. 開 発 者 ガイド HTTP/REST (152ページ)[2.1.0] HTTPベースの 通 信 方 式 です 普 通 のHTTPクライアントを 使 うことができます CTIP 2.0と 同 等 の 機 能 を 持 ちます CTIP 1.0/2.0 によるアクセスのために 現 在 のところJava, Perl, PHPのドライバと Antタ スクが 用 意 されています これらのプログラミング 言 語 では プログラミングインター フェースから 高 速 にアクセスできます Java 版 のドライバとAntタスクはHTTP/RESTに 対 応 しており 全 く 同 じプログラムで 両 方 のプロトコルを 切 り 替 えることができます HTTP/RESTでは ドライバは 必 要 とせず 各 プログラミング 言 語 からHTTPクライアン トを 利 用 してアクセスすることができます CTIP 1.0/2.0 と 比 較 して おおむね70% 程 度 にパフォーマンスが 低 下 しますが ほとんどの 場 合 は 問 題 となることはありません 3.1.2 通 信 の 手 順 ドライバとcopperdとの 通 信 は 以 下 の 手 順 が 基 本 となります 1. copperdへの 接 続 認 証 2. メッセージハンドラの 設 定 3. プログレスリスナの 設 定 4. 変 換 結 果 の 出 力 先 の 設 定 5. 入 出 力 プロパティの 設 定 6. リソースの 送 信 アクセス 許 可 7. ソースリゾルバの 設 定 [2.1.0] 8. 設 定 のリセット[2.1.0] 9. ドキュメント 本 体 の 送 信 または 変 換 対 象 のドキュメントの 指 定 10. 変 換 処 理 の 中 断 [2.1.0] 11. 通 信 の 終 了 上 記 のうち 2~8の 手 順 は 省 略 されるか 順 序 が 入 れ 替 わっても 構 いません 10は ド キュメントの 変 換 中 に 処 理 を 中 止 したいときに 実 行 します CTIP 2.0では 通 信 の 終 了 をせずに 2に 戻 って 手 順 を 再 実 行 することができます 以 下 各 手 順 について 順 を 追 っ て 説 明 します 3.1.3 copperdへの 接 続 認 証 copperdにアクセスするためには copperdのホスト 名 ポート 番 号 を 知 る 必 要 がありま す これらの 設 定 はcopperdの 設 定 (copperd.properties)によります ローカルマシンで 初 期 設 定 のままCopper PDFを 動 かしている 場 合 ホスト 名 はlocalhost(あるいは127.0.0.1 (IPv4) ま た は ::1(IPv6)) CTIP の ポ ー ト 番 号 は 8099(CTIP 1.0, CTIP 2.0 で 共 通 ) HTTP/RESTのポート 番 号 は8097です 簡 単 なセキュリティ 機 能 として ユーザーIDとパスワードにより 認 証 があります サー バーの 初 期 設 定 の 状 態 ではユーザーIDは"user" パスワードは"kappa"ですが サーバー 側 でcopperdコマンドにより 変 更 することができます (32ページ) 64 3.1 プログラムインターフェースの 概 要

3. 開 発 者 ガイド copprdはクライアントのipアドレスによりアクセスを 制 限 します 初 期 設 定 の 状 態 では ローカルマシン(127.0.0.1(IPv4)または::1(IPv6))からのアクセスだけが 許 可 されていま す これはサーバー 側 のアクセス 制 御 の 設 定 (access.txt)を 編 集 することで (42ページ) 起 動 中 に 変 更 することができます 3.1.4 メッセージハンドラの 設 定 メッセージハンドラは 変 換 処 理 の 過 程 で 出 力 された 警 告 やエラー 処 理 情 報 を 受 け 取 るためのインターフェースです (CTIP 1.0では エラーハンドラ という 名 前 になって いました) 3.1.5 プログレスリスナの 設 定 プログレスリスナはサーバー 側 でのデータの 処 理 状 況 をプログラムが 知 るためのイン ターフェースです クライアント 側 で 処 理 状 況 をユーザーに 通 知 させ 待 ち 時 間 の 目 安 にするためのものであるため データの 処 理 状 況 は 必 ずしも 正 確 なものではありませ ん あるいは 一 切 処 理 状 況 が 通 知 されないこともあります 3.1.6 出 力 先 の 設 定 変 換 結 果 はストリーム ファイル 等 に 出 力 することができます 出 力 先 の 指 定 方 法 は プログラミング 言 語 によります Copper PDFはウェブ 上 での 利 用 を 重 視 しているため クライアントのブラウザに 送 る 方 法 は 必 ず 用 意 されています 3.1.7 変 換 結 果 の 出 力 先 の 設 定 ドキュメントを 変 換 した 結 果 得 られるPDF 画 像 等 のデータはクライアント 側 で 受 信 し てドライバにより 構 築 されます 出 力 結 果 はファイルに 保 存 するか あるいはウェブア プリケーションであればそのままユーザーに 送 り 出 すことができます CTIP 2.0では 複 数 の 結 果 を 受 信 することができます 例 えば 複 数 ページの 文 書 を 複 数 の 画 像 ファイルとしてクライアント 側 で 保 存 することができます 3.1.8 入 出 力 プロパティの 設 定 ドキュメントの 変 換 方 法 の 詳 細 は 入 出 力 プロパティによって 細 かく 指 定 することがで きます 利 用 可 能 な 入 出 力 プロパティのリストは 入 出 力 プロパティ 一 覧 (274ページ)を 参 照 してください 3.1.9 URIの 解 決 と 関 連 ファイル(リソース)の 取 得 ドキュメントからは 様 々な 形 で 関 連 するCSSや 画 像 ファイル 等 のリソースが 参 照 され ます リソースはURIによって 参 照 されます URIには 絶 対 URIと 相 対 URIがあります が Copper PDFは 必 ずドキュメントを 実 際 の あるいは 仮 想 的 なURIに 結 びつけ 相 対 URI はドキュメントのURI を 基 準 に 解 決 されます 例 えば ドキュメントのURI が 3.1 プログラムインターフェースの 概 要 65

3. 開 発 者 ガイド http://copper-pdf.com/docs/document.html で あ っ た 場 合 ド キ ュ メ ン ト 中 に <img src="../images/photo.jpeg"> と い う 記 述 が あ れ ば http://copperpdf.com/images/photo.jpegに 存 在 する 画 像 が 使 われます ドキュメントのURIを 相 対 URIとすることができます もっとも 簡 単 なURIは "."(カレ ントディレクトリ)で このとき 相 対 URIで 参 照 されたリソースの 解 決 後 のURIは 相 対 URIのままとなります Copper PDFが あるURIで 参 照 されるリソースにアクセスする 場 合 3 通 りの 方 法 があり ます 1つは サーバーから 直 接 アクセスする 方 法 です file: で 始 まるURIであれば サーバー マシン 上 のファイルを 取 得 しようとします http: で 始 まるURIであれば HTTPでネット ワークから 取 得 しようとします Copper PDFは 最 初 はこれらのアクセスを 禁 止 するよ うに 設 定 されているため プログラムでアクセス 許 可 する 必 要 があります 図 3.14 copperdがリソースにアクセスする 場 合 (サーバーマシン 上 のファイル) 図 3.15 copperdがリソースにアクセスする 場 合 (ネットワークからの 取 得 ) 2つめは ドライバによって 事 前 にクライアントからサーバーにリソースを 送 る 方 法 で す リソースを 仮 想 的 なURIに 結 びつけて 事 前 に 送 っておくと サーバーはそのURIの リソースを 取 得 する 際 に 実 際 のURIにアクセスするのではなく 事 前 に 送 ったデータ を 使 用 します 66 3.1 プログラムインターフェースの 概 要

3. 開 発 者 ガイド 図 3.16 クライアント 側 からcopperdにリソースを 送 る 場 合 3つめはソースリゾルバ[2.1.0]によって サーバーが 必 要 としたリソースをクライアント が 送 信 可 能 であるかを 問 い 合 わせ 送 信 可 能 なリソースを 都 度 サーバーに 送 る 方 法 で す サーバーは 最 初 にクライアントから 送 られたリソースがあるかどうかをチェックし なければ 実 際 にURIアクセスすることを 試 みます また 既 にクライアントから 送 られ たリソースがある 場 合 は クライアントにリソースの 送 信 を 要 求 しません そのため 優 先 順 位 は2 番 目 の 方 法 3 番 目 の 方 法 1 番 目 の 方 法 の 順 ということになります リソースにサーバーからアクセスする 場 合 必 要 とするリソースがドライバから 送 られていなかった 場 合 copperdは 実 際 にその URIで 表 される 場 所 にアクセスしてデータを 取 得 しようと 試 みます Copper PDFはHTTPクライアントを 持 っており HTTP(https://で 始 まるURI) SSL(https:// で 始 まるURI)によりアクセス 可 能 なデータを 取 得 することができます またCopper PDFが 動 作 しているローカルマシン 上 のファイル(file://で 始 まる ブラウザでローカル マシン 上 のファイルを 開 く 場 合 のURI)へアクセスすることができます データスキー ムURI(data:で 始 まる URI 中 にデータを 含 むURI)もサポートしています その 他 のデー タへはjava.net.URL を 利 用 してアクセスするため Java 実 行 環 境 がサポートするコンテ ンツハンドラに 依 存 します この 方 法 の 利 点 は 変 換 対 象 の 文 書 から 参 照 されているリソースを copperdその 都 度 自 動 的 に 集 めてくることです また リソースがサーバーのディスク 上 にある 場 合 は 事 前 にドライバがリソースを 送 る(この 作 業 は 実 質 的 には copperdがアクセスできる 場 所 にファイルをコピーする 作 業 です) 手 間 が 省 けるため パフォーマンス 上 有 利 です 欠 点 として セキュリティの 問 題 が 挙 げられます 変 換 対 象 となる 文 書 を 誰 でも 編 集 で きる 場 合 そこにサーバー 上 のファイル 名 を 指 定 することで サーバー 上 のファイルが 盗 まれてしまう 可 能 性 があります また http://で 始 まるURIを 使 うことで 他 のサー バーへの 不 正 なアクセスのための 踏 み 台 にされる 恐 れがあります そのため ネット ワークの 構 成 を 含 めて 十 分 に 注 意 して 運 用 することが 必 要 となります 無 制 限 にサーバー 上 のリソースにアクセスされるのを 防 止 するため copperdがアクセ スするリソースを 制 限 する 簡 単 なセキュリティ 機 能 が 用 意 されています サーバー 上 のリソースを 利 用 するには 適 宜 アクセス 許 可 を 行 う 必 要 があります 3.1 プログラムインターフェースの 概 要 67

3. 開 発 者 ガイド デフォルトの 状 態 では サーバーから 全 てのリソースへのアクセスが 禁 止 されていま す copperdが 文 書 に 関 連 するCSSや 画 像 等 にアクセスするためにはアプリケーション で 明 示 的 に 許 可 する 必 要 があります URIパターン リソースへのアクセス 許 可 制 限 は URIパターンによって 指 定 します 本 文 の 変 換 を 始 める 前 に クライアントは 利 用 できるURIと 除 外 するURIのパターンを 指 定 します URIパターンにはワイルドカードを 使 うことができます "*"というワイルドカード は '/'(スラッシュ) 以 外 の 任 意 の 文 字 列 を 表 します "**"というワイルドカードは それ に 加 えて'/'も 含 めることを 表 します ワイルドカードの 例 は 以 下 の 通 りです http://www.company.com/* というパターンは http://www.company.com/ 直 下 の 全 ての リソースを 現 します http://www.company.com/image/** は http://www.company.com/image/ 以 下 の 全 てのリ ソースを 表 します http://www.company.com/**.css は http://www.company.com/ 以 下 の 全 てのCSSファイ ルを 表 します アクセスの 制 御 は 指 定 された 順 に 行 われます 例 えば 最 初 に 次 のパターンへのアクセスを 禁 止 したとします http://www.company.com/secret 次 に 以 下 のパターンへのアクセスを 許 可 したとします http://www.company.com/** こ の と き http://www.company.com/style.css へ の ア ク セ ス は 許 可 さ れ ま す が http://www.company.com/secret/image.jpeg へのアクセスは 禁 止 されます 逆 に 最 初 に 以 下 のパターンへのアクセスを 許 可 したとします http://www.company.com/** この 場 合 は 後 の 指 定 に 関 係 なくhttp://www.company.com/ 以 下 へのアクセスが 全 て 許 可 されてしまいます http: または https: で 始 まるURIでは %エスケープした 文 字 は デコードされたものとし て 比 較 されます また パターンで* にマッチするようにするには 代 わりに%2A を 記 述 し て く だ さ い 例 え ば http://www.company.com/%61bc %2A/* と い う パ タ ー ン は http://www.company.com/a%62c*/def と い う URI に も http://www.company.com/ab%63%2a/def というURIにもマッチします [2.1.7] 68 3.1 プログラムインターフェースの 概 要

3. 開 発 者 ガイド リソースを 事 前 にサーバーに 送 る 場 合 ドライバがリソースをcopperdに 送 る 際 には リソース 本 体 のデータとリソースの 仮 想 的 なURIに 加 え リソースのMIME 型 およびキャラクタ エンコーディングを 送 ること ができます MIME 型 とキャラクタ エンコーディングは 必 須 ではなく 省 略 された 場 合 は 拡 張 子 やファイルの 内 容 をもとにサーバー 側 で 自 動 的 に 判 断 されます また 画 像 などのバイナリデータではキャラクタ エンコーディングは 無 意 味 です 仮 想 的 なURIは file:///var/data/image.gif のような 絶 対 URIや data/style.cssのような 相 対 URIです copperdはこれらのuriで 表 されるリソースが 必 要 になった 場 合 そのURIで 表 される 実 際 の 場 所 にアクセスすることはせず クライアント 側 から 送 られたデータ を 使 います おなじURIで2 度 リソースを 送 った 場 合 は 前 のリソースは 後 に 送 られたリ ソースで 上 書 きされます この 方 法 は 事 前 に 画 像 などのデータをサーバーに 送 り 出 す 手 間 がかかる 分 パフォー マンス 上 不 利 になります また アプリケーションは 本 文 から 参 照 されているリソー スを 事 前 に 把 握 している 必 要 があります 一 方 で 変 換 対 象 やリソースを1つ1つアプリケーションで 指 定 するため 予 期 しなかっ たファイルにアクセスされてしまうといった セキュリティ 上 の 危 険 は 少 なくなりま す ソースリゾルバを 使 う 場 合 ソースリゾルバは サーバー 側 で 必 要 とされたリソースのURIをクライアントに 通 知 し 可 能 であればクライアントからデータを 送 信 するためのインターフェースです ド キュメントから 参 照 されるリソースは 事 前 にクライアントから 送 ることができますの が そのためには ドキュメントからどのリソースが 参 照 されているのかを クライア ントが 知 っていることが 前 提 となります しかし HTMLからCSSが 読 み 込 まれ さらに CSSから 別 のCSSや 画 像 が 参 照 されるといった 複 雑 な 状 況 では アプリケーションで 事 前 に 必 要 なリソースを 解 析 することは 困 難 です CTIP 2.0では サーバー 側 でまず 処 理 を 開 始 し 必 要 になったリソースをその 都 度 クライアントに 要 求 し ドライバは 要 求 さ れたリソースをサーバーに 送 るか あるいはリソースの 不 存 在 を 通 知 することができま す 3.1.10 設 定 のリセット CTIP 2.0では メッセージハンドラ プログレスリスナ 入 出 力 プロパティの 設 定 と サーバー 側 で 受 信 済 みのリソースを 全 てリセットすることができます リセットによ り 全 ての 状 態 は 接 続 直 後 に 戻 ります 3.1.11 ドキュメント 本 体 の 送 信 または 変 換 対 象 のドキュメントの 指 定 最 後 にドキュメント 本 体 をCopper PDFが 変 換 するために 必 要 な 情 報 を 送 ります リ ソースの 場 合 と 同 様 データをサーバーに 送 る 方 法 と サーバー 側 からデータを 取 得 す る 方 法 があります 3.1 プログラムインターフェースの 概 要 69

3. 開 発 者 ガイド ドキュメント 本 体 をサーバーに 送 る 変 換 対 象 のドキュメント 本 体 をクライアントからサーバー 側 に 送 る 場 合 は 必 ずド キュメントを 仮 想 的 なURIと 結 びつける 必 要 があります また 必 須 ではありませんが ドキュメントのMIME 型 とキャラクタ エンコーディング 予 測 されるドキュメントサ イズを 明 示 することができます サーバー 側 でのドキュメントの 変 換 処 理 は 本 体 の 送 信 と 並 行 して 行 われます ドキュメント 本 体 にサーバーからアクセスする 場 合 サーバーに 変 換 対 処 のドキュメントのURIを 送 ることにより サーバー 側 で 変 換 対 象 の 文 書 を 取 得 することができます ドキュメント 中 の 相 対 パスは ドキュメントのURIを 基 点 に 解 決 します ドキュメントのURIに 対 しては URIパターンによるアクセス 許 可 とは 無 関 係 にアクセス 可 能 です ドキュメントのURIは 事 前 にサーバーに 送 ったリソースでも 構 いません ことのき 事 前 に 送 ったリソースがドキュメント 本 体 となります リソースに 対 するアクセス 禁 止 設 定 は ドキュメント 本 体 のURIには 適 用 されません 3.1.12 複 数 の 結 果 の 結 合 [3.0.0] 通 常 は ドキュメント1つの 変 換 処 理 に 対 して 結 果 が 出 力 されますが 複 数 の 結 果 を 結 合 するモードに 移 行 することにより 複 数 のドキュメントの 変 換 結 果 を 結 合 して1つの 処 理 結 果 とすることができます このモードでは 各 々の 変 換 処 理 で 結 果 を 出 力 することはせず 一 連 の 変 換 処 理 の 終 了 をクライアントが 明 示 した 時 点 で 結 合 された 結 果 が 出 力 されます processing.pass-count [io] により 2パス 以 上 の 変 換 処 理 (232ページ)を 行 う 場 合 それぞれのドキュメントが 複 数 のパスで 変 換 され その 結 果 が 結 合 されます 複 数 のド キ ュ メ ン ト を 通 し て 2 パ ス 以 上 の 変 換 処 理 を 行 う 場 合 は processing.middle-pass (ページ) を 使 ってください 3.1.13 変 換 処 理 の 中 断 CTIP 2.0では 変 換 処 理 の 最 中 に 処 理 を 中 断 することができます クライアントから 処 理 の 中 断 を 要 求 されてから 実 際 に 処 理 が 中 断 されるまでには 若 干 の 遅 れが 生 じます 処 理 を 中 断 する 際 には なるべくきりのよいところまで 処 理 を 継 続 して 途 中 のページ までが 含 まれたPDFのようなファイルが 生 成 されるようにするか ファイルが 破 壊 され ても 強 制 的 に 停 止 する2つのモードを 選 ぶことができますが 必 ず 要 求 どおりに 処 理 が 終 わる 保 障 はありません 70 3.1 プログラムインターフェースの 概 要

3. 開 発 者 ガイド 3.1.14 通 信 の 終 了 通 信 の 終 了 をサーバーに 通 知 すると サーバーの 方 から 接 続 を 切 断 します CTIP 1.0で は 接 続 を 切 断 して 接 続 しなおさない 限 り 次 のドキュメント 変 換 処 理 は 実 行 できません が CTIP 2.0ではそのまま 処 理 を 繰 り 返 すことができます 3.1 プログラムインターフェースの 概 要 71

3. 開 発 者 ガイド 3.2 CTIP 1.0 インターフェースの 特 徴 Copper PDF 2.1.0からは より 強 力 なインターフェース(CTIP 2.0)と より 手 軽 な HTTP/RESTインターフェースを 使 用 可 能 です 従 来 のインターフェースもサポートさ れていますが 新 しいインターフェースの 使 用 を 検 討 してください CTIP 2.0インターフェースの 説 明 (91ページ) HTTP/RESTインターフェースの 説 明 (152ページ) 3.2.1 結 果 サイズの 取 得 HTTPのContent-Lengthヘッダを 送 るためには 結 果 全 体 のデータのバイト 数 を 事 前 に 知 る 必 要 がありますが CTIP 1.0ではプログレスリスナをその 目 的 に 使 用 することができ ます プログレスリスナが 要 求 した 場 合 は 変 換 結 果 の 先 頭 が 得 られる 前 に 結 果 全 体 のデータのバイト 数 が 渡 されます 3.2.2 メッセージハンドラ(エラーハンドラ)の 設 定 エラーハンドラは 変 換 処 理 の 過 程 で 出 力 された 警 告 やエラー 処 理 情 報 を 受 け 取 るた めのインターフェースです ( 処 理 情 報 を 受 け 取 る 機 能 は 後 で 追 加 されたため エラーハ ンドラ という 名 前 になっています) エラーハンドラが 受 け 取 ることができるメッ セージは 以 下 の4つに 分 類 されます 種 類 コード 説 明 警 告 1 エラー 2 致 命 的 エラー 3 処 理 情 報 4 処 理 の 続 行 が 可 能 なエラーです 入 出 力 設 定 や 変 換 対 象 文 書 に 問 題 がありま すが 処 理 結 果 自 体 は 得 ることができます 処 理 の 続 行 が 不 可 能 になるか 出 力 結 果 を 得 られなくなるエラーです このエ ラーが 発 生 した 場 合 正 常 な 処 理 結 果 が 得 られることは 期 待 できません(PDF 等 のデータが 壊 れている 可 能 性 があります) 通 信 障 害 など システムの 問 題 に 起 因 する 深 刻 なエラーです このエラーが 発 生 した 場 合 正 常 な 処 理 結 果 が 得 られることは 期 待 できません(PDF 等 のデー タが 壊 れている 可 能 性 があります) これはエラーメッセージではありません 出 力 済 みのページ 数 処 理 中 の 内 容 などの 情 報 です 以 上 のうち コード4の 処 理 情 報 は "カテゴリ: 値 " という 形 式 で 渡 されます (Java 版 のド ライバではカテゴリと 値 を 別 々に 受 け 取 ることもできます) カテゴリと 値 は 資 料 集 の メッセージハンドラから 取 得 できる 情 報 (288ページ)を 参 照 してください 72 3.2 CTIP 1.0 インターフェースの 特 徴

3. 開 発 者 ガイド 3.2.3 CTIP 1.0 プロトコルの 仕 様 プロトコルの 仕 様 書 は 以 下 のアドレスで 公 開 しています http://sourceforge.jp/projects/copper/docs/ctip-v1 3.2 CTIP 1.0 インターフェースの 特 徴 73

3. 開 発 者 ガイド 3.3 Java ドライバ1 Copper PDF 2.1.0からは より 強 力 なJavaドライバ バージョン2 が 利 用 可 能 です 従 来 のドライバもサポートされていますが 新 しいドライバの 使 用 を 検 討 してください Javaドライバ バージョン2の 説 明 (94ページ) 3.3.1 使 用 方 法 Java 用 ド ラ イ バ は Copper PDF 本 体 と は 別 に 配 布 さ れ て い ま す http://sourceforge.jp/projects/copper/releases/?package_id=8742 か ら cssj-driver-java 1.x.x を ダウンロードしてください アーカイブを 展 開 した 後 にできるlibディレクトリ 内 の cssj-driver-1.x.x.jarがドライバのライブラリです このファイルをクラスパスに 追 加 (あ るいはアプリケーションのライブラリディレクトにコピー)してください ドライバの 窓 口 となるクラスはjp.cssj.cti.CTIDriverManagerです 例 えばlocalhostの8099 番 ポートで 起 動 しているcopperdに ユーザーID"user" パスワード"kappa"で 接 続 するに は 以 下 のようにします 例 3.1 copperdへの 接 続 //ドライバクラスのインポート import jp.cssj.cti.ctidriver; import jp.cssj.cti.ctidrivermanager; import jp.cssj.cti.ctisession;... CTIDriver driver = CTIDriverManager.createDriverFor("localhost", "8099"); CTISession session = driver.createsession("user", "kappa"); // 各 種 操 作... 3.3.2 APIの 概 要 ここではAPIによるアクセスの 概 要 で 説 明 した 各 手 順 に 対 応 する 関 数 を 列 挙 します 各 関 数 の 詳 細 はドライバのapidocディレクトリ 内 のJavadocか オンラインのAPIドキュメ ントを 参 照 してください サーバーへの 接 続 認 証 public static CTIDriver createdriverfor(string host, int port) 74 3.3 Java ドライバ1

3. 開 発 者 ガイド public CTISession createsession(string user, String password) throws IOException, SecurityException エラーハンドラ プログレスリスナの 設 定 public void seterrorhandler(errorhandler eh) public void setprogresslistener(progresslistener l) 出 力 先 の 設 定 public void setoutput(outputstream out, String mimetype) throws IOException プロパティの 設 定 public void setproperty(string name, String value) throws IOException リソースの 送 信 アクセス 許 可 public void includeresource(string uripattern) throws IOException public void excluderesource(string uripattern) throws IOException public OutputStream sendresource(string uri, String mimetype, String encoding) throws IOException 本 体 の 送 信 public void formatmain(string uri) throws IOException public OutputStream sendmain(string uri, String mimetype, IOException String encoding) throws 通 信 の 終 了 public void close() throws IOException 3.3.3 サンプル 以 下 は サーバー 側 から 取 り 出 したデータを 変 換 するサンプルです 3.3 Java ドライバ1 75

3. 開 発 者 ガイド 例 3.2 jp.cssj.cti.examples.serverresource package jp.cssj.cti.examples; import java.io.bufferedoutputstream; import java.io.fileoutputstream; import java.io.outputstream; import jp.cssj.cti.ctidriver; import jp.cssj.cti.ctidrivermanager; import jp.cssj.cti.ctisession; import jp.cssj.cti.helpers.stdioerrorhandler; /** * サーバーでデータを 取 得 して 変 換 します */ public class ServerResource { /** 接 続 先 のホスト 名 */ private static final String HOST = "localhost"; /** 接 続 先 のポート 番 号 */ private static final int PORT = 8099; /** パスワード */ private static final String PASSWORD = "kappa"; public static void main(string[] args) throws Exception { //ドライバを 取 得 CTIDriver driver = CTIDriverManager.createDriverFor(HOST, PORT); // 接 続 する(ユーザー 名 は"user"で 固 定 ) CTISession session = driver.createsession("user", PASSWORD); try { //test.pdfに 結 果 を 出 力 する OutputStream out = new BufferedOutputStream(new FileOutputStream( "test.pdf")); try { session.setoutput(out, "application/pdf"); //エラーメッセージを 標 準 出 力 に 表 示 する session.seterrorhandler (StdioErrorHandler.getInstance()); "true"); "true"); //ハイパーリンクとブックマークを 作 成 する session.setproperty("output.pdf.hyperlinks", session.setproperty("output.pdf.bookmarks", 76 3.3 Java ドライバ1

3. 開 発 者 ガイド // http://www.cssj.jp/ 以 下 にあるリソースへアクセスする session.includeresource("http://www.cssj.jp/**"); // index.htmlを 変 換 session.formatmain ("http://www.cssj.jp/index.html"); finally { out.close(); finally { //セッションを 閉 じる( 忘 れやすいので 注 意!) session.close(); クライアント 側 のデータを 変 換 するサンプルを 含 め これらのファイルはドライバの src/examplesに 収 められています 3.3.4 サーブレットの 作 成 webappにウェブアプリケーションのサンプルが 収 められています このサンプルの ソースコードはwebapp/WEB-INF/srcにあります このサンプルは index.pdfにアクセスすると index.jspの 出 力 結 果 をPDFに 変 換 されたも のが 表 示 されるというものです webappディレクトリをサーブレット コンテナに 配 備 することで 実 際 に 動 かすことができます web.xml 内 のcontext-paramの 部 分 を 接 続 先 のcopperdに 合 わせて 設 定 してください サンプルのjp.cssj.cti.servlet.AbstractCSSJServletを 継 承 することで PDFを 出 力 するサー ブレットを 簡 単 に 作 ることができます ドライバを 利 用 してユーザーが 全 く 独 自 に サーブレットを 作 ることも 可 能 ですが 変 換 結 果 を 直 接 クライアントを 送 る 場 合 は 以 下 のようにContent-Lengthヘッダを 送 ることを 忘 れないで 下 さい Content-Lengthヘッ ダを 送 らないと Acrobat Readerプラグインで 表 示 されない 場 合 があります 例 3.3 Content-Lengthヘッダの 送 出... import jp.cssj.cti.helpers.progressadapter;...セッションの 作 成... session.setprogresslistener(new ProgressAdapter(true) { public void contentlength(long contentlength) { response.setcontentlength((int) contentlength); );... 変 換 処 理... 3.3 Java ドライバ1 77

3. 開 発 者 ガイド 3.3.5 フィルターを 使 ったServlet/JSPの 変 換 ウェブアプリケーションのサンプルに 含 まれるjp.cssj.cti.servlet.CSSJFilterは Servlet 2.3 の フィルタ を 利 用 してServletまたはJSPの 出 力 結 果 をPDFに 変 換 するものです サンプルでは filterディレクトリ 内 に 置 かれたファイルをPDFに 変 換 します ファイル は 静 的 なファイルのほか JSPなど 動 的 なファイルでも 構 いません CSSなどのリソースはresourcesファイルに 置 いています これらのファイルに 直 接 アク セスされるのを 防 ぐために jp.cssj.cti.servlet.accessfilterを 使 うことができます この フィルタは CSSJFilter 以 外 からのアクセスに 対 して 404エラーを 返 します 3.3.6 ソースコード ドライバのソースはドライバの 配 布 ファイルのsrcディレクトリに 収 められています このソースは JDK1.4.2 以 降 でコンパイルすることができます 78 3.3 Java ドライバ1

3. 開 発 者 ガイド 3.4 Perlドライバ1 Copper PDF 2.1.0からは より 強 力 なPerlドライバ バージョン2 が 利 用 可 能 です 従 来 のドライバもサポートされていますが 新 しいドライバの 使 用 を 検 討 してください Perlドライバ バージョン2の 説 明 (112ページ) 3.4.1 使 用 方 法 Perl 用 ド ラ イ バ は Copper PDF 本 体 と は 別 に 配 布 さ れ て い ま す http://sourceforge.jp/projects/copper/releases/?package_id=8741 からダウンロードしてくだ さ い ア プ リ ケ ー シ ョ ン は code デ ィ レ ク ト リ を ラ イ ブ ラ リ パ ス に 含 め usecssj::driver; でモジュールをインポートしてください 3.4.2 APIの 概 要 ここではAPIによるアクセスの 概 要 で 説 明 した 各 手 順 に 対 応 する 関 数 を 列 挙 します 各 関 数 の 詳 細 はapidoc 内 のAPIドキュメントか オンラインのAPIドキュメントを 参 照 し てください サーバーへの 接 続 認 証 create_driver_for HOST PORT [ENCODING] CSSJ::Driver->create_session USER PASSWORD エラーハンドラ プログレスリスナの 設 定 CSSJ::Session->set_error_func FUNCTION CSSJ::Session->set_progress_func FUNCTION CSSJ::Session->set_content_length_func FUNCTION 出 力 先 の 設 定 CSSJ::Session->set_output OUTPUTHANDLE [MIME_TYPE] プロパティの 設 定 CSSJ::Session->set_property NAME VALUE 3.4 Perlドライバ1 79

3. 開 発 者 ガイド リソースの 送 信 アクセス 許 可 CSSJ::Session->include_resource URI_PATTERN CSSJ::Session->exclude_resource URI_PATTERN CSSJ::Session->start_resource FILEHANDLE URI [MIME_TYPE ENCODING] CSSJ::Session->end_resource FILEHANDLE 本 体 の 送 信 CSSJ::Session->format_main URI CSSJ::Session->start_main FILEHANDLE URI [MIME_TYPE ENCODING] CSSJ::Session->end_main FILEHANDLE 通 信 の 終 了 CSSJ::Session->close 3.4.3 サンプル Perl 用 インターフェースは ファイルハンドルに 対 する 出 力 をキャプチャしてサーバー に 送 ります 以 下 の 例 では$session->start_mainと$session->flush_mainの 間 で 出 力 された HTMLが 変 換 されます 例 3.4 content.pl #!/usr/bin/perl =head1 NAME コンテンツ 変 換 サンプル =head2 概 要 start_mainとend_mainの 間 の 出 力 結 果 をPDFに 変 換 します =cut use lib '../code'; # ドライバのインポート use CSSJ::Driver(create_driver_for); # ドライバの 作 成 $driver = create_driver_for('localhost', 8099, 'EUC-JP'); # 接 続 $session = $driver->create_session('user', 'kappa'); # Content-Lengthヘッダの 送 信 80 3.4 Perlドライバ1

3. 開 発 者 ガイド $session->set_content_length_func (sub { my $length = shift; print "Content-Length: $length\n\n"; binmode(stdout); ); # Content-Typeヘッダの 送 信 print "Content-Type: application/pdf\n"; # リソースの 送 信 $session->start_resource(stdout, 'file:/skin.css'); print << 'EOF'; p { background-color: Gray; EOF $session->end_resource(stdout); # 本 体 の 送 信 $session->start_main(stdout, 'file:/test.html', 'text/html', 'EUC- JP'); print << 'EOF'; <html> <head> <title>テストドキュメント</title> <link rel="stylesheet" type="text/css" href="skin.css"> </head> <body> <p>こんにちは</p> </body> </html> EOF $session->end_main(stdout); # セッションを 閉 じる $session->close(); start_resource,start_mainにファイルハンドルを 渡 すと それぞれend_resource,end_mainが 呼 び 出 されるまで ファイルハンドルに 出 力 されたデータをcopperdに 送 ります その 間 ファイルハンドルの 本 来 の 機 能 (STDOUTでは 標 準 出 力 にデータを 送 るなど)は 使 え なくなります requireで 他 のプログラムを 呼 び 出 すことで 他 のプログラムの 出 力 結 果 を 変 換 すること もできます ただし CGIとして 作 成 されたPerlプログラムは HTTPヘッダを 出 力 するた め そのままではヘッダもPDF 内 に 表 示 されてしまいます start_resource, start_mainの 最 後 の 引 数 に1を 設 定 すると 最 初 の 空 行 までの 間 をヘッダと 認 識 して 除 去 します 3.4 Perlドライバ1 81

3. 開 発 者 ガイド 例 3.5 content.pl $session->start_main(stdout, 'file:/test.html', 'text/html', 'EUC- JP', 1); require 'program.cgi'; $session->end_main(stdout); 82 3.4 Perlドライバ1

3. 開 発 者 ガイド 3.5 PHPドライバ1 Copper PDF 2.1.0からは より 強 力 なPHPドライバ バージョン2 が 利 用 可 能 です 従 来 のドライバもサポートされていますが 新 しいドライバの 使 用 を 検 討 してください PHPドライバ バージョン2の 説 明 (119ページ) 3.5.1 使 用 方 法 PHP 用 ド ラ イ バ は Copper PDF 本 体 と は 別 に 配 布 さ れ て い ま す http://sourceforge.jp/projects/copper/releases/?package_id=8743 からダウンロードしてくだ さい アプリケーションは codeディレクトリ 内 のcssj_driver.php をインクルード (require_once)してください PHP 用 ドライバではcssj_driver.php(driver パッケージ)の 関 数 を 用 いてください 他 の 関 数 は 低 レベルな 処 理 をするもので 通 常 は 必 要 ありませ ん また ソース 中 の 日 本 語 のコメントのために ファイルはEUC-JPエンコーディングと なっています PHPの 内 部 エンコーディングにEUC-JP 以 外 を 使 う 場 合 は asciiディレク トリの 中 にASCIIコードに 変 換 したものがありますので そちらを 利 用 してください 3.5.2 APIの 概 要 ここではAPIによるアクセスの 概 要 で 説 明 した 各 手 順 に 対 応 する 関 数 を 列 挙 します 各 関 数 の 詳 細 はapidocディレクトリ 内 のAPIドキュメント(phpDocumentor) またはオンラ インのAPIドキュメントを 参 照 してください サーバーへの 接 続 認 証 mixed &cssj_create_driver_for ($host $host, $port $port, [$encoding $encoding = 'ISO- 8859-1']) mixed &cssj_create_session ($driver &$driver, $user $user, $password $password) エラーハンドラ プログレスリスナの 設 定 void cssj_set_error_func ($session &$session, $errorfunc &$errorfunc) void cssj_set_progress_func ($session &$session, $progressfunc &$progressfunc) 出 力 先 の 設 定 boolean cssj_set_output ($session &$session, $out &$out, [$mimetype $mimetype = 'application/pdf']) 3.5 PHPドライバ1 83

3. 開 発 者 ガイド プロパティの 設 定 boolean cssj_set_property ($session &$session, $name $name, $value $value) リソースの 送 信 アクセス 許 可 boolean cssj_include_resource ($session &$session, $uripattern $uripattern) boolean cssj_exclude_resource ($session &$session, $uripattern $uripattern) boolean cssj_ob_start_resource ($session &$session, $uri $uri, [$mimetype $mimetype = 'text/css'], [$encoding $encoding = '']) boolean cssj_ob_end_flush_resource () 本 体 の 送 信 boolean cssj_format_main ($session &$session, $uri $uri) boolean cssj_ob_start_main ($session &$session, $uri $uri, [$mimetype $mimetype = 'text/html'], [$encoding $encoding = '']) boolean cssj_ob_end_flush_main () 通 信 の 終 了 boolean cssj_close ($session &$session) 3.5.3 サンプル PHP 用 インターフェースは 出 力 バッファを 介 してドキュメントを 変 換 するのが 特 徴 で す 以 下 の 例 ではcssj_ob_start_mainとcssj_ob_end_flush_mainの 間 に 記 述 されたHTMLが 変 換 されます 例 3.6 ob.php <?php require_once ('../code/cssj_driver.php'); header("content-type: application/pdf"); //ドライバの 作 成 $driver = cssj_create_driver_for('localhost', 8099); //セッションの 開 始 $session = cssj_create_session($driver, 'user', 'kappa') or die(' サーバーに 接 続 できません'); //リソースの 送 信 cssj_ob_start_resource($session, 'file:test.css'); readfile('test.css'); cssj_ob_end_flush_resource(); 84 3.5 PHPドライバ1

3. 開 発 者 ガイド // 出 力 結 果 の 変 換 の 開 始 cssj_ob_start_main($session, 'file:ob.html');?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <link rel="stylesheet" type="text/css" href="test.css"> <title>hello CSSJ</title> </head> <body> <h2>ただいまの 時 刻 </h2> <p><?php echo date("l ds of F Y h:i:s A")?></p> </body> </html> <?php // 出 力 結 果 の 変 換 の 終 了 cssj_ob_end_flush_main(); //セッションの 終 了 cssj_close($session);?> 単 純 に 変 数 から 変 数 に 変 換 する 場 合 は 以 下 のような 関 数 を 定 義 しておくと 便 利 です 実 際 の 使 用 例 はvar.phpを 参 照 してください 例 3.7 変 数 の 変 換 /** * 与 えられたデータをPDFに 変 換 して 返 します * * @param $session セッション * @param $input 元 のデータ * @return 変 換 結 果 PDF */ function &topdf(&$session, $input) { // 出 力 先 $output = '';//nullの 場 合 標 準 出 力 となるので 必 ず 文 字 列 を 代 入 しておく 必 要 が ある cssj_set_output($session, $output); 3.5 PHPドライバ1 85

3. 開 発 者 ガイド // 変 換 cssj_ob_start_main($session, 'file:test.html'); echo $input; cssj_ob_end_flush_main(); //セッションの 終 了 cssj_close($session); return $output; 3.5.4 Content-Lengthヘッダの 送 信 変 換 結 果 の 出 力 先 はデフォルトではクライアントにそのまま 返 されます このとき 自 動 的 にContent-Lengthヘッダが 送 信 されます それ 以 外 の 出 力 先 を 設 定 した 場 合 はContent-Lengthヘッダは 出 力 されません 最 終 的 に クライアントにPDFを 送 信 する 場 合 は Content-Lengthヘッダを 送 らないとAdobe Readerプラグインで 表 示 されない 場 合 がありますのでご 注 意 ください 86 3.5 PHPドライバ1

3. 開 発 者 ガイド 3.6 copper Antタスク Copper PDF 2.1.0からは より 強 力 なtranscode Antタスク が 利 用 可 能 です 従 来 の Antタスク もサポートされていますが 新 しいAntタスク の 使 用 を 検 討 してください transcode Antタスク (148ページ) 3.6.1 Antタスクの 概 要 頻 繁 に 更 新 されるドキュメントを 素 早 くまとめて 変 換 するために Apache Antによる バッチ 処 理 をサポートしています AntはJavaで 開 発 されたフリーのビルド ツールで す Antについての 詳 細 は 書 籍 などをご 参 照 下 さい Antタスクは Copper PDF 本 体 がインストールされたサーバー 上 で 実 行 する 必 要 があり ます 別 途 ライブラリをダウンロードする 必 要 はありません 3.6.2 copper タスクの 使 用 方 法 copper タスクはドキュメントの 一 括 変 換 を 行 うためのタスクです なお CSSJ 1.x 系 の で 使 われていたcssjというタスク 名 も 使 用 できます copper タスクを 使 用 するために は Antのbuild.xml 中 で 次 のように 宣 言 する 必 要 があります 例 3.8 copper タスクの 宣 言 <path id="lib.path"> <fileset dir="copper PDFのlibディレクトリのパス" includes="*.jar"/> </path> <typedef classpathref="lib.path" resource="jp/cssj/driver/anttask/tasks.properties"/> 以 降 copperという 要 素 名 でタスクを 使 えるようになります copperタスクに 指 定 することができる 属 性 は 次 の 通 りです 表 3.1 copper タスクの 属 性 属 性 名 configfile configdir srcdir 説 明 Copper PDFの 設 定 ファイル(profiles/default.properties)です Copper PDFの(license-keyファイルが 置 かれた) 設 定 ディレクトリです 変 換 前 のXML,HTMLファイルなどが 格 納 されたディレクトリです 省 略 した 場 合 カレン トディレクトリとなります 3.6 copper Antタスク 87

3. 開 発 者 ガイド 属 性 名 includes excludes destdir suffix 説 明 srcdir 中 の 変 換 対 象 となるファイルのパターンです srcdir 中 の 変 換 対 象 外 となるファイルのパターンです 出 力 先 のディレクトリです 省 略 するとsrcDirと 同 じディレクトリになります 出 力 結 果 ファイルの 拡 張 子 です 省 略 した 場 合 は.pdfとなります copper 要 素 内 で property 要 素 を 使 って 入 出 力 プロパティを 設 定 することができます 表 3.2 property 要 素 の 属 性 属 性 名 説 明 name プロパティの 名 前 value プロパティの 値 以 下 の 例 では docs/manual.htmlからdocs/manual.pdfを 出 力 します 例 3.9 copper タスクの 使 用 例 <copper includes="docs/manual.html" suffix=".pdf" configfile="conf/profiles/default.properties"> <includeresource pattern="**" /> <property name="output.pdf.bookmarks" value="true" /> <property name="output.pdf.hyperlinks" value="true" /> <property name="output.pdf.fonts.policy" value="cid-keyed" /> </copper> 上 記 のサンプルは 実 際 にドキュメントディレクトリ(docsあるいは/usr/share/doc/copperpdf)に 収 められています 一 旦 manual.pdfを 削 除 して ドキュメントディレクトリ 内 で antを 実 行 することで 試 すことができます 3.6.3 うまく 動 かない 場 合 Can't connect to X11... というエラーが 表 示 される JDK 1.4.2では 以 下 のようなエラーが 発 生 することがあります 88 3.6 copper Antタスク

3. 開 発 者 ガイド 例 3.10 エラーメッセージの 例 [copper] java.lang.internalerror: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable. [copper] at sun.awt.x11graphicsenvironment.initdisplay (Native Method) [copper] at sun.awt.x11graphicsenvironment.<clinit> (X11GraphicsEnvironment.java:134) [copper] at java.lang.class.forname0(native Method)... 省 略... [copper] at org.apache.tools.ant.launch.launcher.run (Launcher.java:246) [copper] at org.apache.tools.ant.launch.launcher.main (Launcher.java:67) [copper] Transcoded 0 file(s). BUILD FAILED /home/miyabe/workspaces/cssj/cssj/build/release/docs/build.xml:11: java.lang.internalerror: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable. これは Copper PDFが 一 部 でグラフィック 環 境 を 必 要 とする 処 理 を 行 っているため ディスプレイが 接 続 されていない 環 境 で 発 生 するものです 以 下 のように ANT_OPTS 環 境 変 数 でjava.awt.headlessシステムプロパティをtrueにするように 設 定 することで 問 題 が 解 消 されます 例 3.11 java.awt.headlessの 設 定 export ANT_OPTS=-Djava.awt.headless=true ライセンスが 認 証 されない 場 合 出 力 結 果 に ライセンスファイルが 存 在 しないか 期 限 切 れです と 表 示 される 場 合 や 一 部 の 機 能 が 使 用 できない 場 合 は ライセンスキーのインストールか confディレクト リ(license-keyファイルが 置 かれたディレクトリ)のパスを 指 定 する 必 要 があります confディレクトリはcopperタスクのconfigdir 属 性 で 指 定 するか ANT_OPTS 環 境 変 数 に よりjp.cssj.copper.configシステムプロパティで 指 定 することもできます 例 3.12 設 定 ディレクトリの 指 定 (ANT_OPTS 環 境 変 数 ) export ANT_OPTS=-Djp.cssj.copper.config=/etc/copper-pdf 3.6 copper Antタスク 89

3. 開 発 者 ガイド 例 3.13 設 定 ディレクトリの 指 定 (configdir 属 性 ) <copper includes="docs/manual.html" suffix=".pdf" configfile="conf/profiles/default.properties" configdir="/etc/copper-pdf"> <includeresource pattern="**" /> <property name="output.pdf.bookmarks" value="true" /> <property name="output.pdf.hyperlinks" value="true" /> <property name="output.pdf.fonts.policy" value="cid-keyed" /> </copper> 90 3.6 copper Antタスク

3. 開 発 者 ガイド 3.7 CTIP 2.0 インターフェースの 概 要 3.7.1 接 続 情 報 まず サーバー 側 が 各 接 続 方 式 に 対 応 するように 設 定 されていることを 確 認 してくださ い ドライバ 側 では 次 の 形 式 のURIで 接 続 情 報 を 設 定 します ctip://ホスト 名 :ポート/ 例 えば ローカルマシンの8099 版 ポートでCopper PDFサーバーが 動 作 している 場 合 は ctip://localhost:8099/ というアドレスをドライバに 渡 します TLSによる 暗 号 化 通 信 [3.0.0]を 用 いる 場 合 は ctips://localhost:8094/ のようにURIを 設 定 してください Java 用 ドライバはHTTP/RESTによる 接 続 にも 対 応 しています HTTPを 使 う 場 合 は "http://127.0.0.1:8097/" SSL(HTTPS)を 使 う 場 合 は "https://127.0.0.1: のようにURIを 設 定 してください 3.7.2 メッセージコード 処 理 状 況 や 警 告 エラーとして 2バイトのメッセージコード メッセージに 付 随 する 値 人 間 が 読 める 形 式 の 文 字 列 の3つの 値 がドライバに 渡 されます メッセージコード は16 進 数 で 表 記 し 以 下 の 通 りクラス 分 けされます 1XXX 2XXX 3XXX 4XXX 処 理 情 報 文 書 のタイトル 出 力 したページの 番 号 等 です 警 告 メッセージ 通 常 の 運 用 でも 発 生 する 可 能 性 のある 軽 微 なエラーを 示 すもので 処 理 が 続 行 されます エラーメッセージ アプリケーション 等 の 問 題 によるエラーで 処 理 が 中 断 されます 深 刻 なエラー サーバープログラムのバグやシステムの 障 害 によるもので 処 理 が 中 断 されます 全 てのメッセージコードの 一 覧 は 資 料 集 (288ページ)を 参 照 してください 3.7.3 サーバー 情 報 ドライバによりCopper PDFサーバーの 環 境 に 関 する 情 報 を 得 ることができます 情 報 の 種 類 はURIで 指 定 します 3.7 CTIP 2.0 インターフェースの 概 要 91

3. 開 発 者 ガイド http://www.cssj.jp/ns/ctip/version Copper PDFのバージョン 情 報 です これは 以 下 の 形 式 のXMLです 例 3.14 バージョン 情 報 <?xml version="1.0" encoding="utf-8"?> <version> <long-version>copper PDF バージョン 番 号 /ビルド 番 号 </long-version> <name>copper PDF</name> <number>バージョン 番 号 </number> <build>ビルド 番 号 </build> <copyrights> 著 作 権 表 示 </copyrights> <credits> 付 属 ライブラリの 著 作 権 教 示 </credits> </version> http://www.cssj.jp/ns/ctip/output-types [3.0.0] Copper PDFがサポートする 出 力 形 式 です これは 以 下 の 形 式 のXMLです 例 3.15 出 力 形 式 情 報 <?xml version="1.0" encoding="utf-8"?> <output-types> <type name="pdf" mimetype="application/pdf" suffix="pdf"/> <type name="png" mimetype="image/png" suffix="png"/> <type name="jpeg" mimetype="image/jpeg" suffix="jpg"/> <type name="wbmp" mimetype="image/vnd.wap.wbmp" suffix="wbmp"/> <type name="bmp" mimetype="image/bmp" suffix="bmp"/> <type name="svg" mimetype="image/svg+xml" suffix="pdf"/>... 以 降 <type name="フォーマット 名 " mimetype="mime 型 " suffix=" 拡 張 子 "/> の 繰 り 返 し... </output-types> http://www.cssj.jp/ns/ctip/fonts [3.0.4] 利 用 可 能 なフォントの 一 覧 です これは 以 下 の 形 式 のXMLです 92 3.7 CTIP 2.0 インターフェースの 概 要

3. 開 発 者 ガイド 例 3.16 フォント 情 報 <fonts> <font name="courier-bold" weight="700" type="core" direction="ltr"> <alias name="courier"/> <alias name="courier-new"/> </font> <font name="courier-boldoblique" italic="true" weight="700" type="core" direction="ltr"> <alias name="courier"/> <alias name="courier-new"/> </font> <font name="courier-oblique" italic="true" weight="400" type="core" direction="ltr"> <alias name="courier"/> <alias name="courier-new"/> </font>... 以 降 <font name="フォント 名 " (italic="true") weight=" 太 さ" type="タイプ" direction=" 方 向 "> <alias name=" 別 名 "/>... </font> の 繰 り 返 し... </fonts> italic="true" 属 性 は 斜 体 のフォントだけに 付 きます weightは100~900までの 数 値 です typeはcore, cid-keyed, cid-identity, embeddedのいずれかで それぞれコア14フォント CID-Keyedフォント 外 部 フォント 埋 め 込 みフォントに 対 応 します directionはltr, tbの いずれかで それぞれ 横 書 き 用 フォント 縦 書 き 用 フォントに 対 応 します 3.7.4 CTIP 2.0 プロトコルの 仕 様 プロトコルの 仕 様 書 は 以 下 のアドレスで 公 開 しています http://sourceforge.jp/projects/copper/docs/ctip-v2 3.7 CTIP 2.0 インターフェースの 概 要 93

3. 開 発 者 ガイド 3.8 Java ドライバ2 3.8.1 概 要 Java 用 ドライバは ストリーム(java.io.InputStream/java.io.OutputStream )からストリー ムへの 変 換 ができることが 特 徴 です ユーティリティークラスを 利 用 して ファイルか らストリーム ストリームからファイル ファイルからファイルなど あらゆる 入 出 力 に 対 応 できます また サーブレット/JSPの 出 力 をキャプチャして 変 換 するためのクラスが 用 意 されてい ます PDFのもととなるテンプレートをJSP, JSF, Velocity, Tapestryなど ウェブ 開 発 で 広 く 使 われているJavaベースのテンプレート 言 語 によりデザインできます 3.8.2 ドライバの 準 備 Java 用 ド ラ イ バ は Copper PDF 本 体 と は 別 に 配 布 さ れ て い ま す http://sourceforge.jp/projects/copper/releases/?package_id=8742 か ら cti-java 2.x.x を ダ ウ ン ロードしてください アーカイブを 展 開 した 後 にできるlibディレクトリ 内 のcti-driver- 2.x.x.jarがドライバのライブラリです このファイルをクラスパスに 追 加 (あるいはアプ リケーションのライブラリディレクトにコピー)してください cti-driver-2.x.x.jarにはapache 系 の(org.apache.という 名 前 で 始 まる)クラスが 含 まれてお り アプリケーションがApache 系 のライブラリを 使 っている 場 合 は 衝 突 することがあ ります バージョン2.1.2 以 降 のドライバではcti-driver-2.x.x-min.jarというApache 系 のラ イブラリを 含 まないjarを 用 意 しています このjarではHTTP/REST 接 続 ができないとい う 制 約 があります ドライバの 窓 口 となるクラスはjp.cssj.cti2.CTIDriverManager です 例 えばlocalhostの 8099 番 ポートで 起 動 しているcopperdに ユーザーID"user" パスワード"kappa"で 接 続 す るには 以 下 のようにします 例 3.17 copperdへの 接 続 //ドライバクラスのインポート import jp.cssj.cti2.ctidrivermanager; import jp.cssj.cti2.ctisession;... CTISession session = CTIDriverManager.getSession ("ctip://127.0.0.1:8099/", "user", "kappa"); // 各 種 操 作... Java 用 ドライバはHTTP/RESTによる 接 続 にも 対 応 しています (91ページ) 94 3.8 Java ドライバ2

3. 開 発 者 ガイド 3.8.3 タイムアウトの 設 定 Java 版 ドライバ2.1.4 以 降 から 一 定 時 間 通 信 がない 状 態 で 自 動 的 に 通 信 を 切 断 するタイ ムアウトに 対 応 しています 以 下 のようにURLパラメータで timeoutをミリ 秒 単 位 で 指 定 できます ctip://127.0.0.1:8099/?timeout=10000 ctips, http 等 他 のプロトコルではタイムアウトは 無 効 です 3.8.4 APIの 概 要 ここではAPIによるアクセスの 概 要 で 説 明 した 各 手 順 に 対 応 する 関 数 を 列 挙 します 各 関 数 の 詳 細 はドライバのapidocディレクトリ 内 のJavadocか オンラインのAPIドキュメ ントを 参 照 してください サーバーへの 接 続 認 証 public static CTIDriver getdriver(uri uri) public static CTISession getsession(uri uri) throws IOException public static CTISession getsession(uri uri, Map props) throws IOException public static CTISession getsession(uri uri, String user, String password) throws IOException public CTISession getsession(uri uri, Map props) throws IOException, SecurityException サーバー 情 報 の 取 得 public InputStream getserverinfo(java.net.uri uri) throws IOException メッセージハンドラ プログレスリスナの 設 定 public void setmessagehandler(messagehandler messagehandler) throws IOException public void setprogresslistener(progresslistener progresslistener) throws IOException 出 力 先 の 設 定 public void setresults(results results) throws IOException プロパティの 設 定 public void property(string name, String value) throws IOException 3.8 Java ドライバ2 95

3. 開 発 者 ガイド ソースリゾルバの 設 定 public void setsourceresolver(sourceresolver resolver) throws IOException リソースの 送 信 public void resource(source source) throws IOException public OutputStream resource(metasource metasource) throws IOException 本 体 の 送 信 変 換 public void transcode(source source) throws IOException, TranscoderException public OutputStream transcode(metasource metasource) throws IOException public void transcode(uri uri) throws IOException, TranscoderException 複 数 の 結 果 の 結 合 public void setcontinuous(boolean continuous) throws IOException public void join() throws IOException 処 理 の 中 断 リセット 通 信 の 終 了 public void abort(byte mode) throws IOException public void reset() throws IOException public void close() throws IOException 3.8.5 サンプル 次 の 例 は ストリームに 送 ったHTMLをPDFに 変 換 してファイルとして 保 存 します 例 3.18 ストリームに 送 ったHTMLをPDFに 変 換 package jp.cssj.cti2.examples; import java.io.file; import java.io.outputstreamwriter; import java.io.printwriter; import java.net.uri; import jp.cssj.cti2.ctidrivermanager; import jp.cssj.cti2.ctisession; import jp.cssj.cti2.helpers.ctimessagehelper; import jp.cssj.cti2.helpers.ctisessionhelper; import jp.cssj.resolver.helpers.metasourceimpl; 96 3.8 Java ドライバ2

3. 開 発 者 ガイド public class Example1 { /** 接 続 先 */ private static final URI SERVER_URI = URI.create ("ctip://127.0.0.1:8099/"); /** ユーザー */ private static final String USER = "user"; /** パスワード */ private static final String PASSWORD = "kappa"; public static void main(string[] args) throws Exception { // 接 続 する CTISession session = CTIDriverManager.getSession (SERVER_URI, USER, PASSWORD); try { // test.pdfに 結 果 を 出 力 する File file = new File("test.pdf"); CTISessionHelper.setResultFile(session, file); // リソースの 送 信 { PrintWriter out = new PrintWriter(new OutputStreamWriter( session.resource(new MetaSourceImpl (URI.create("style.css"), "text/html")), "UTF-8")); try { // CSSを 出 力 out.println("p {color: Red;"); finally { out.close(); // 出 力 先 ストリームを 取 得 { PrintWriter out = new PrintWriter(new OutputStreamWriter( session.transcode(new MetaSourceImpl (URI.create("."), "text/html")), "UTF-8")); try { // 文 書 を 出 力 out.println("<html>"); out.println("<head>"); out.println("<meta http-equiv='content-type' content='text/html; charset=utf-8'>"); 3.8 Java ドライバ2 97

3. 開 発 者 ガイド out.println("<link rel='stylesheet' type='text/css' href='style.css'>"); out.println("<title>サンプル</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>hello World!</p>"); out.println("</body>"); out.println("</html>"); finally { out.close(); finally { // セッションを 閉 じる( 忘 れやすいので 注 意!) session.close(); 次 の 例 は サーバー 側 からネットワーク 上 のウェブページアクセスしてPDFに 変 換 しま す 例 3.19 サーバー 側 からウェブページにアクセスしてPDFに 変 換 package jp.cssj.cti2.examples; import java.io.file; import java.net.uri; import jp.cssj.cti2.ctidrivermanager; import jp.cssj.cti2.ctisession; import jp.cssj.cti2.helpers.ctimessagehelper; import jp.cssj.cti2.helpers.ctisessionhelper; public class Example2 { /** 接 続 先 */ private static final URI SERVER_URI = URI.create ("ctip://127.0.0.1:8099/"); /** ユーザー */ private static final String USER = "user"; /** パスワード */ private static final String PASSWORD = "kappa"; public static void main(string[] args) throws Exception { // 接 続 する CTISession session = CTIDriverManager.getSession (SERVER_URI, USER, 98 3.8 Java ドライバ2

3. 開 発 者 ガイド PASSWORD); try { // test.pdfに 結 果 を 出 力 する File file = new File("test.pdf"); CTISessionHelper.setResultFile(session, file); // エラーメッセージを 標 準 出 力 に 表 示 する session.setmessagehandler(ctimessagehelper.createstreammessagehandler(system.err)); // ハイパーリンクとブックマークを 作 成 する session.property("output.pdf.hyperlinks", "true"); session.property("output.pdf.bookmarks", "true"); // http://www.cssj.jp/ 以 下 にあるリソースへのアクセスを 許 可 する session.property("input.include", "http://print.cssj.jp/**"); // ウェブページを 変 換 session.transcode(uri.create("http://print.cssj.jp/")); finally { // セッションを 閉 じる( 忘 れやすいので 注 意!) session.close(); 他 のサンプルはドライバのexamples/srcに 収 められています 3.8.6 プログラミングのポイント CTISessionHelperの 利 用 結 果 の 出 力 先 リ ソ ー ス の 送 信 フ ァ イ ル の 変 換 等 の よ く 使 わ れ る 操 作 が jp.cssj.cti2.helpers.ctisessionhelper のstaticメソッドにまとめられています 例 えば 事 前 に 関 連 するCSSを 送 信 してHTMLファイルを 変 換 する 処 理 は 次 のように 簡 単 に 書 けます 例 3.20 ファイルを 変 換 する... CTIDriverManager.sendResourceFile(session, new File("test.css"), "text/css", "UTF-8"); CTIDriverManager.transcodeFile(session, new File("test.html"), "text/html", "UTF-8");... 3.8 Java ドライバ2 99

3. 開 発 者 ガイド 繰 り 返 し 処 理 出 力 先 を 変 え transcodeメソッドを 繰 り 返 し 呼 び 出 すことで 同 じセッションで 何 度 も ドキュメントを 変 換 することができます 送 信 済 みのリソース 設 定 済 みのプロパティ は 同 じセッションで 維 持 されます 同 じセッションのまま 初 期 状 態 に 戻 すには reset を 呼 び 出 してください 出 力 先 (Results)の 設 定 出 力 先 が 単 一 のファイルやストリームの 場 合 は CTISessionHelperの setresultfile か setresultstream を 使 っ て く だ さ い こ れ ら の メ ソ ッ ド は 内 部 的 に jp.cssj.cti2.results.singleresultクラスを 使 用 しています jp.cssj.cti2.results.resultsインターフェースは 複 数 の 出 力 結 果 を 受 け 取 るためのイン ターフェースです CTISessionのsetResultsメソッドに 渡 します 複 数 の 結 果 をファイルとして 出 力 する 場 合 は jp.cssj.cti2.results.directoryresults を 使 用 してください このクラスは 指 定 したディレクトリに 1から 開 始 する 連 番 の 前 後 に 指 定 した 文 字 列 をくっつけたファイル 名 で 結 果 を 出 力 します 次 の 例 では 変 換 結 果 の 各 ページを resultsディレクトリ 内 に"image[ 通 し 番 号 ].jpeg"という 名 前 で 別 々のJPEG 画 像 として 出 力 します 例 3.21 ディレクトリに 結 果 を 出 力 する... session.property("output.type", "image/jpeg"); session.setresults(new DirectoryResults(new File("results"), "image", ".jpeg"));... さらに 複 雑 な 処 理 が 必 要 な 場 合 は Resultsインターフェースを 実 装 するクラスを 用 意 す る 必 要 があります Resultsインターフェースは jp.cssj.rsr.randombuilder に 依 存 します が RandomBuilder に は フ ァ イ ル と ス ト リ ー ム に デ ー タ を 出 力 す る 実 装 (jp.cssj.rsr.impl.filerandombuilder, jp.cssj.rsr.impl.streamrandombuilder) が 用 意 されてい ます サーバーから 要 求 されたリソースの 送 信 (SourceResolver) CTISessionのsetSourceResolverで ソースリゾルバ(jp.cssj.resolver.SourceResolver ) を 設 定 すると サーバーから 要 求 されたリソースを 都 度 送 信 できるようになります jp.cssj.resolver.composite.compositesourceresolver の static メ ソ ッ ド creategenericcompositesourceresolver を 呼 び 出 すと file:, http:, data:で 始 まるURIによの リソースを 取 得 できるSourceResolverの 実 装 が 返 されます 100 3.8 Java ドライバ2

3. 開 発 者 ガイド CompositeSourceResolverをそのまま 使 用 すると クライアントのファイルシステム 上 の ファイルをドキュメントから 参 照 可 能 になってしまうため 注 意 してください 次 の 例 のように jp.cssj.resolver.restricted.restrictedsourceresolver を 使 用 すると アクセス 制 限 をかけることができます 例 3.22 アクセス 制 限 をしてSourceResolverを 使 う... RestrictedSourceResolver resolver = new RestrictedSourceResolver( CompositeSourceResolver.createGenericCompositeSourceResolver()); resolver.include("file:/home/miyabe/data/**"); session.setsourceresolver(resolver);... MetaSource CTISessionの resource, transcode メソッド 等 では データの 仮 想 URI MIME 型 キャラク タ エンコーディング 予 測 されるデータサイズをMetaSource インターフェースによ り 渡 します 通 常 は 用 意 されている jp.cssj.resolver.helpers.metasourceimpl という 実 装 を 利 用 してく ださい 複 数 の 結 果 の 結 合 複 数 の 結 果 を 結 合 したものを 得 るためには setcontinuous(true) を 呼 び 出 した 後 transcodeを 複 数 回 呼 び 出 し 最 後 にjoin を 呼 び 出 してください 例 3.23 2つの 結 果 の 結 合... session.setcontinuous(true); CTIDriverManager.sendResourceFile(session, new File("test.css"), "text/css", "UTF-8"); CTIDriverManager.transcodeFile(session, new File("test.html"), "text/html", "UTF-8"); session.transcode(uri.create("http://print.cssj.jp/")); session.join();... abortによる 中 断 CTISessionのabort メソッドは 文 書 の 変 換 処 理 を 中 断 しますが transcodeメソッドは 処 理 の 間 ブロックするため 別 スレッドからabortを 呼 び 出 す 必 要 があります abortは 引 数 に よって 強 制 的 に 中 断 するモードと きりのよいところまで 処 理 して 一 応 利 用 可 能 な 結 果 を 出 力 するモードの2つがあります 後 者 のモードは 例 えば 大 きなPDFファイルを 3.8 Java ドライバ2 101

3. 開 発 者 ガイド 出 力 中 に 処 理 を 中 断 して 途 中 までの 出 力 結 果 を 見 たい 場 合 に 有 用 です ただし 1 ページ 目 を 出 力 される 前 に 中 断 してしまった 場 合 など 読 み 込 み 可 能 なデータが 出 力 で きないことも 起 こり 得 ます 3.8.7 サーブレット/JSPでの 利 用 サーブレットで クライアントに 対 してドキュメントの 変 換 結 果 を 送 る 場 合 は jp.cssj.cti2.helpers.servlethelper クラスの setservletresponse メソッドを 使 ってください このメソッドは 内 部 で jp.cssj.cti2.helpers.servletresponseresults クラスを 使 用 しており 出 力 結 果 に 合 わせてContent-Type, Content-Lengthヘッダを 適 切 に 設 定 します サーブレットやJSPが 出 力 するデータをキャプチャしてCTISessionに 渡 す 場 合 は jp.cssj.cti2.helpers.ctihttpservletresponsewrapper クラスを 使 用 してください このクラ スは キャプチャしたデータをリソースか メインドキュメントとしてCTISessionに 渡 し ま す ServletResponse を CTIHttpServletResponseWrapper に よ り ラ ッ プ し て RequestDispatcherにより 他 のサーブレット/JSPに 転 送 すると 転 送 先 のサーブレッ ト/JSPによる 出 力 をキャプチャします あるいは フィルタを 使 う 方 法 があります 次 に 紹 介 するサンプルプログラムは ドライバのexamples/webappディレクトリにあり ます このサンプルは source.jspの 出 力 を2 通 りの 方 法 で 変 換 します 1つめは /pdf/ で 始 まるパスへのアクセスを サーブレットで 転 送 する 方 法 です /pdf/source.jspに 対 する アクセスを RequestDispatcherにより/source.jspに 転 送 し 転 送 先 の 出 力 を 変 換 します 2つめは /source.jspに 対 するアクセスを 文 字 通 りフィルタリングして 変 換 する 方 法 で す そ れ ぞ れ jp.cssj.cti2.examples.samplehttpservlet と い う 名 前 の サ ー ブ レ ッ ト と jp.cssj.cti2.examples.samplefilterという 名 前 のフィルタを 使 う 場 合 のweb.xmlの 記 述 は 次 のとおりです 例 3.24 web.xmlの 記 述 例 <?xml version="1.0" encoding="utf-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <filter> <filter-name>sample-filter</filter-name> <filter-class>jp.cssj.cti2.examples.samplefilter</filter-class> </filter> <filter-mapping> <filter-name>sample-filter</filter-name> <url-pattern>/source.jsp</url-pattern> </filter-mapping> <servlet> 102 3.8 Java ドライバ2

3. 開 発 者 ガイド <servlet-name>sample-servlet</servlet-name> <servlet-class>jp.cssj.cti2.examples.samplehttpservlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>sample-servlet</servlet-name> <url-pattern>/pdf/*</url-pattern> </servlet-mapping> </web-app> 次 が サーブレットの 実 装 です HttpServletRequestのgetPathInfoにより ユーザーがアク セ ス し た ア ド レ ス の /pdf の 後 に 続 く パ ス を 取 得 し レ ス ポ ン ス を CTIHttpServletResponseWrapperでラップして そのパスに 転 送 します 例 え ば ユ ー ザ ー がhttp://localhost:8180/webapp/pdf/source.jsp に ア ク セ ス す る と source.jsp の 出 力 をPDF 変 換 したものが 返 されます 例 3.25 RequestDispatcherにより 他 のJSPの 出 力 をキャプチャする package jp.cssj.cti2.examples; import java.io.ioexception; import java.net.uri; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import jp.cssj.cti2.ctidrivermanager; import jp.cssj.cti2.ctisession; import jp.cssj.cti2.helpers.ctihttpservletresponsewrapper; public class SampleHttpServlet extends HttpServlet { private static final long serialversionuid = 0L; /** 接 続 先 */ private static final URI SERVER_URI = URI.create ("ctip://127.0.0.1:8099/"); /** ユーザー */ private static final String USER = "user"; /** パスワード */ private static final String PASSWORD = "kappa"; protected void doget(httpservletrequest req, 3.8 Java ドライバ2 103

3. 開 発 者 ガイド HttpServletResponse res) throws ServletException, IOException { // 出 力 先 をレスポンスに 設 定 ServletHelper.setServletResponse(session, res); // PATH_INFOのアドレスに 転 送 String path = ((HttpServletRequest) req).getpathinfo(); // 転 送 先 のサーブレットが 出 力 したコンテンツを 変 換 CTIHttpServletResponseWrapper ctires = new CTIHttpServletResponseWrapper( res, session, URI.create(path)); try { req.getrequestdispatcher(path).forward(req, ctires); finally { ctires.close(); 次 は フィルタの 実 装 です 単 にレスポンスをCTIHttpServletResponseWrapperでラップ して 処 理 を 次 に 渡 すだけです 例 えば ユーザーがhttp://localhost:8180/webapp/source.jsp にアクセスすると source.jsp の 出 力 をPDF 変 換 したものが 返 されます 例 3.26 Filterによる 変 換 package jp.cssj.cti2.examples; import java.io.ioexception; import java.net.uri; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterconfig; import javax.servlet.servletexception; import javax.servlet.servletrequest; import javax.servlet.servletresponse; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import jp.cssj.cti2.ctidrivermanager; import jp.cssj.cti2.ctisession; import jp.cssj.cti2.helpers.ctihttpservletresponsewrapper; public class SampleFilter implements Filter { /** 接 続 先 */ 104 3.8 Java ドライバ2

3. 開 発 者 ガイド private static final URI SERVER_URI = URI.create ("ctip://127.0.0.1:8099/"); /** ユーザー */ private static final String USER = "user"; /** パスワード */ private static final String PASSWORD = "kappa"; private FilterConfig config; public void init(filterconfig config) throws ServletException { this.config = config; public void dofilter(servletrequest _req, ServletResponse _res, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) _req; HttpServletResponse res = (HttpServletResponse) _res; CTISession session = CTIDriverManager.getSession (SERVER_URI, USER, PASSWORD); try { // 出 力 先 をレスポンスに 設 定 ServletHelper.setServletResponse(session, res); // 基 底 URLとしてコンテキスト 以 降 のパスを 使 う URI uri = URI.create(req.getRequestURI().substring( req.getcontextpath().length())); // サーブレットが 出 力 したコンテンツを 変 換 CTIHttpServletResponseWrapper ctires = new CTIHttpServletResponseWrapper( (HttpServletResponse) res, session, uri); try { chain.dofilter(req, ctires); finally { ctires.close(); finally { session.close(); public void destroy() { // ignore 3.8 Java ドライバ2 105

3. 開 発 者 ガイド 前 記 の 例 では source.jspと 一 緒 に 置 かれたCSSや 画 像 が 読 み 込 まれません これらを 読 み 込 むようにするには 次 のようなSourceResolverを 用 意 します 例 3.27 リソースを 読 み 込 むSourceResolver class ServletContextResolver implements SourceResolver { protected final ServletContext context; public ServletContextResolver(ServletContext context) { this.context = context; public Source resolve(uri uri) throws IOException { // コンテキストに 置 かれたファイルを 取 得 する URL url = this.context.getresource(uri.tostring()); if (url == null) { throw new FileNotFoundException(uri.toString()); try { return new URLSource(url); catch (URISyntaxException e) { IOException ioe = new IOException(); ioe.initcause(e); throw ioe; public void release(source source) { ((URLSource) source).close(); 次 のようにサーブレット 内 でこのSourceResolverを 設 定 すると source.jspからの 相 対 パ スでCSSや 画 像 にアクセスできるようになります 例 3.28 SourceResolverを 設 定 する session.setsourceresolver(new ServletContextResolver(this.getServletContext())); ただし この 方 法 では 動 的 に 生 成 したCSSや 画 像 にはアクセスできませんので ご 注 意 ください 全 てを 動 的 に 変 換 する 場 合 は Session.transcodeメソッドを 呼 び 出 して ロー カルホストのサーブレットコンテナにCopper PDFからアクセスするのがよいでしょう 106 3.8 Java ドライバ2

3. 開 発 者 ガイド 3.8.8 ソースコード ドライバのソースコードはSourceForge.JPに 公 開 しています ドライバのソースコード が 必 要 な 方 は 以 下 の ガ イ ド を 参 考 にSVN か ら 取 得 し て く だ さ い http://sourceforge.jp/projects/copper/cvs/ CTI Java の ソ ー ス コ ー ド の タ ー ゲ ッ ト パ ス は 以 下 の 通 り で す http://svn.sourceforge.jp/svnroot/copper/drivers/java/trunk/ 3.8.9 Copper PDFのライブラリに 直 接 アクセスする JavaではCopper PDFサーバーを 起 動 せずに 直 接 Copper PDFのライブラリを 使 用 するこ とができます このためには 以 下 のようにドライバの 接 続 先 として 特 別 なURIであ る"copper:direct:"を 設 定 します 例 3.29 直 接 Copper PDFのライブラリを 使 用 する import java.io.file; import java.net.uri; import jp.cssj.cti2.ctidrivermanager; import jp.cssj.cti2.ctisession; import jp.cssj.cti2.helpers.ctisessionhelper; import jp.cssj.resolver.composite.compositesourceresolver; public class DirectJava { public static void main(final String[] args) throws Exception { CTISession session = CTIDriverManager.getSession(URI.create("copper:direct:")); CTISessionHelper.setResultFile(session, new File ("test.pdf")); CompositeSourceResolver resolver = CompositeSourceResolver.createGenericCompositeSourceResolver(); session.setsourceresolver(resolver); session.transcode(uri.create("http://copper-pdf.com/")); session.close(); こうして 得 られたCTISessionの 使 用 方 法 は 通 常 通 りドライバを 使 う 場 合 と 変 わりあり ません また プログラムのコンパイルも 通 常 通 りドライバのjarをクラスパスに 加 える ことで 可 能 です 3.8 Java ドライバ2 107

3. 開 発 者 ガイド しかし 当 然 ながらプログラムの 実 行 時 にはCopper PDFのlibディレクトリ 内 にあるjar を ク ラ ス パ ス に 加 え る 必 要 が あ り ま す ま た Java の シ ス テ ム プ ロ パ テ ィ jp.cssj.copper.config, jp.cssj.driver.default にそれぞれ 設 定 ディレクトリとdefault.properties ファイルへのパスを 設 定 する 必 要 があります 例 えば Windowsのバッチファイルにより 起 動 する 場 合 は 次 のようにします この 例 で は"C:\CopperPDF"に 配 置 したCopper PDFを 使 用 し カレントディレクトリに 置 かれた DirectJava.classを 実 行 します 例 3.30 プログラムの 起 動 (Windows) set COPPER_DIR="C:\CopperPDF" set CONFIG_DIR="%COPPER_DIR%\conf" set DEFAULT_FILE="%COPPER_DIR%\conf\profiles/default.properties" set LIB_DIR="%COPPER_DIR%\lib" java -cp.;%lib_dir%\* -Djp.cssj.copper.config=%CONFIG_DIR% - Djp.cssj.driver.default=%DEFAULT_FILE% DirectJava Linux 等 でシェルスクリプトにより 起 動 する 場 合 は 次 のようにします この 例 では.rpm や.debでインストールしたCopper PDFを 使 用 し カレントディレクトリに 置 かれた DirectJava.classを 実 行 します 例 3.31 プログラムの 起 動 (シェルスクリプト) #!/bin/sh CONFIG_DIR="/etc/copper-pdf" DEFAULT_FILE="/etc/copper-pdf/profiles/default.properties" LIB_DIR="/usr/share/copper-pdf/lib" java -cp.:$lib_dir/* -Djava.awt.headless=true - Djp.cssj.copper.config=$CONFIG_DIR - Djp.cssj.driver.default=$DEFAULT_FILE DirectJava 3.8.10 JRubyを 使 う 場 合 Java VMを 利 用 したRuby 実 行 環 境 であるJRubyでは RubyからJava 用 のドライバを 利 用 することができます JRubyは 普 通 のRuby(CRuby)と 同 じくらいか 時 にはそれ 以 上 の 性 能 を 発 揮 します また Javaと 併 用 する 手 軽 なスクリプト 言 語 としても 優 秀 です ぜひ JRuby の 使 用 を 検 討 し て く だ さ い ど う し て も CRuby を 使 う 必 要 が あ る 場 合 は HTTP/RESTインターフェースを 利 用 してください JRubyを 使 う 場 合 まずJava 用 ドライバをダウンロードしてください 次 にcti-driver- 2.x.x.jarを 適 当 な 場 所 (/usr/lib/jruby/libなど)に 配 置 してください 以 下 の 例 では Copper PDFに 接 続 し Rubyで 出 力 したHTMLをPDFに 変 換 してファイル に 保 存 します 108 3.8 Java ドライバ2

3. 開 発 者 ガイド 例 3.32 Rubyで 出 力 したHTMLを 変 換 する include Java require "cti-driver.jar" #jarのパスは 環 境 に 合 わせてください include_class Java::jp.cssj.cti2.CTIDriverManager include_class Java::jp.cssj.cti2.CTISession include_class Java::jp.cssj.cti2.helpers.CTIMessageHelper include_class Java::jp.cssj.cti2.helpers.CTISessionHelper include_class Java::jp.cssj.resolver.helpers.MetaSourceImpl include_class Java::java.io.File include_class Java::java.net.URI include_class Java::java.lang.System # セッションの 開 始 session = CTIDriverManager.getSession(URI.create ("ctip://localhost:8099/"), "user", "kappa") begin # ファイル 出 力 CTISessionHelper.setResultFile(session, File.new("test.pdf")) # エラーメッセージを 標 準 エラー 出 力 に 表 示 する session.setmessagehandler (CTIMessageHelper.createStreamMessageHandler(System.err)) # サーバーへの 出 力 をJavaのOutputStreamからRubyのioに 変 換 して 取 得 out = session.transcode(metasourceimpl.new(uri.create("."), "text/html", "UTF-8")).to_io; begin out.puts <<DATA <html> <body> JRubyからCopper PDFを 使 う </body> </html> DATA ensure # クローズを 忘 れないこと! out.close; end; ensure # セッションの 終 了 session.close end JRubyではJavaドライバのAPIをそのまま 利 用 することができます 詳 細 はJavaドライバ のAPIのドキュメントを 参 照 してください 3.8 Java ドライバ2 109

3. 開 発 者 ガイド 3.8.11 Jythonを 使 う 場 合 Java VMを 利 用 したPython 実 行 環 境 であるJythonでは PythonからJava 用 のドライバを 利 用 することができます Jythonは 普 通 のPython(CPython)と 同 じくらいか 時 にはそれ 以 上 の 性 能 を 発 揮 します どうしてもCPythonを 使 う 必 要 がある 場 合 は HTTP/RESTイン ターフェースを 利 用 してください Jythonを 使 う 場 合 まずJava 用 ドライバをダウンロードしてください 次 にcti-driver- 2.x.x.jarを 適 当 な 場 所 (/usr/share/java/など)に 配 置 してください 以 下 の 例 では Copper PDFに 接 続 し Pythonで 出 力 したHTMLをPDFに 変 換 してファイル に 保 存 します 例 3.33 Pythonで 出 力 したHTMLを 変 換 する # -*- coding: utf-8 -*- import sys sys.path.append("cti-driver.jar"); from jp.cssj.cti2.helpers import CTIMessageHelper from jp.cssj.cti2.helpers import CTISessionHelper from jp.cssj.resolver.helpers import MetaSourceImpl from jp.cssj.driver.ctip import CTIPDriver from java.io import File from java.net import URI from java.lang import System from java.util import HashMap driver = CTIPDriver() params = HashMap() params.put("user", "user") params.put("password", "kappa") session = driver.getsession(uri.create("ctip://localhost:8099/"), params) try: # ファイル 出 力 CTISessionHelper.setResultFile(session, File("test.pdf")) # エラーメッセージを 標 準 エラー 出 力 に 表 示 する session.setmessagehandler (CTIMessageHelper.createStreamMessageHandler(System.err)) # サーバーへの 出 力 を 取 得 out = session.transcode(metasourceimpl(uri.create("."), "text/html", "UTF-8")); try: out.write(""" <html> 110 3.8 Java ドライバ2

3. 開 発 者 ガイド <body> JythonからCopper PDFを 使 う </body> </html> """) finally: # クローズを 忘 れないこと! out.close() finally: # セッションの 終 了 session.close() JythonではJavaドライバのAPIをそのまま 利 用 することができます 詳 細 はJavaドライ バのAPIのドキュメントを 参 照 してください 3.8 Java ドライバ2 111

3. 開 発 者 ガイド 3.9 Perlドライバ2 3.9.1 概 要 Perl 用 ドライバは Perlスクリプトによる 出 力 をPDFに 変 換 できることが 特 徴 です CGI 等 として 作 成 された 他 のPerlプログラムの 出 力 を もとのプログラムを 変 えないまま 変 換 することができます また PDFのもととなるテンプレートをTemplateToolkit 等 Perl ベースのテンプレートエンジンにより 作 成 することができます 3.9.2 ドライバの 準 備 Perl 用 ド ラ イ バ は Copper PDF 本 体 と は 別 に 配 布 さ れ て い ま す http://sourceforge.jp/projects/copper/releases/?package_id=8741 か ら cti-perl-2.x.x ダ ウ ン ロードしてください アプリケーションは codeディレクトリをライブラリパスに 含 め usecti::drivermanager; でモジュールをインポートしてください Copper PDF 3.0.0, Perlドライババージョン2.1.0ではTLS 通 信 に 対 応 しています TLS 通 信 には IO::Socket::SSL モジュールが 必 要 です 例 3.34 copperdへの 接 続 # ドライバモジュールのインポート use CTI::DriverManager; # サーバーへの 接 続 my $uri = 'ctip://localhost:8099/'; my $session = CTI::DriverManager::get_session($uri, user => 'user', password => 'kappa'); # 各 種 操 作... 3.9.3 APIの 概 要 ここではAPIによるアクセスの 概 要 で 説 明 した 各 手 順 に 対 応 する 関 数 を 列 挙 します 各 関 数 の 詳 細 はapidoc 内 のAPIドキュメントか オンラインのAPIドキュメントを 参 照 し てください サーバーへの 接 続 認 証 get_driver URI get_session URI [OPTIONS] CTI Driver->get_session URI [OPTIONS] サーバー 情 報 の 取 得 CTI Session->get_server_info FUNCTION 112 3.9 Perlドライバ2

3. 開 発 者 ガイド メッセージハンドラ プログレスリスナの 設 定 CTI Session->set_message_func FUNCTION CTI Session->set_progress_func FUNCTION 出 力 先 の 設 定 CTI Session->set_results RESULTS CTI Session->set_output_as_handle FILEHANDLE CTI Session->set_output_as_file FILENAME CTI Session->set_output_as_directory DIRNAME プロパティの 設 定 CTI Session->property NAME VALUE ソースリゾルバの 設 定 CTI::Session->set_resolver_func FUNCTION リソースの 送 信 CTI::Session->start_resource FILEHANDLE URI [OPTIONS] CTI::Session->end_resource FILEHANDLE 本 体 の 送 信 変 換 CTI::Session->transcode URI CTI::Session->start_main FILEHANDLE URI [OPTIONS] CTI::Session->end_main FILEHANDLE 複 数 の 結 果 の 結 合 CTI::Session->set_continuous MODE CTI::Session->join 処 理 の 中 断 リセット 通 信 の 終 了 CTI::Session->abort MODE CTI::Session->reset CTI::Session->close 3.9 Perlドライバ2 113

3. 開 発 者 ガイド 3.9.4 サンプル 以 下 は プログラムによる 出 力 を 変 換 するサンプルです start_main, end_main 関 数 の 間 の 標 準 出 力 への 出 力 をキャプチャして 変 換 します 例 3.35 プログラムによる 出 力 を 変 換 する #!/usr/bin/perl use strict; use lib '../code'; use CTI::DriverManager; # Copper PDFに 接 続 my $uri = 'ctip://localhost:8099/'; my $session = CTI::DriverManager::get_session($uri, user => 'user', password => 'kappa'); # ファイル 出 力 $session->set_output_as_file('test.pdf'); # リソースの 送 信 $session->start_resource(*stdout, 'style.css', mime_type => 'text/css'); print "p {color: Red;"; $session->end_resource(*stdout); # 出 力 の 変 換 を 開 始 $session->start_main(*stdout, '.', mime_type => 'text/html'); print "<html>"; print "<head>"; print "<meta http-equiv='content-type' content='text/html; charset=utf-8'>"; print "<link rel='stylesheet' type='text/css' href='style.css'>"; print "<title>サンプル</title>"; print "</head>"; print "<body>"; print "<p>hello World!</p>"; print "</body>"; print "</html>"; # 出 力 の 変 換 を 終 了 $session->end_main(*stdout); # 接 続 を 閉 じる $session->close(); 次 の 例 は サーバー 側 からネットワーク 上 のウェブページアクセスしてPDFに 変 換 しま す 114 3.9 Perlドライバ2

3. 開 発 者 ガイド 例 3.36 サーバー 側 ウェブページにアクセスしてPDFに 変 換 #!/usr/bin/perl use strict; use lib '../code'; use CTI::DriverManager; # セッションの 開 始 my $uri = 'ctip://localhost:8099/'; my $session = CTI::DriverManager::get_session($uri, user => 'user', password => 'kappa'); # ファイル 出 力 $session->set_output_as_file('test.pdf'); # リソースのアクセス 許 可 $session->property('input.include', 'http://copper-pdf.com/**'); # 文 書 の 送 信 $session->transcode('http://copper-pdf.com/'); # セッションの 終 了 $session->close(); 他 のサンプルはドライバのsrc/testに 収 められています 3.9.5 プログラミングのポイント Content-Type, Content-Length ヘッダの 出 力 ウェブアプリケーションでは Content-Type, Content-Lengthヘッダを 出 力 しないと ブ ラ ウ ザ 上 で PDF が 正 常 に 表 示 さ れ な い こ と が あ り ま す 以 下 の よ う に set_output_as_handle 関 数 の2 番 目 の 引 数 に1を 設 定 してください これらのヘッダが 自 動 的 に 出 力 されます 例 3.37 ヘッダの 出 力 を 有 効 にする... $session->set_output_as_handle(*stdout, 1);... 他 のプログラムを 呼 び 出 して 変 換 する 他 のプログラムによる 出 力 を 変 換 するには start_main, end_mainの 間 でrequireしてくだ さ い CGI プ ロ グ ラ ム 等 は ヘ ッ ダ を 出 力 す る こ と が あ り ま す が start_main に ignore_headers => 1 オプションを 加 えて 呼 び 出 すと これを 除 去 します 以 下 の 例 では bbs.cgiというプログラムの 出 力 を 変 換 します 3.9 Perlドライバ2 115

3. 開 発 者 ガイド 例 3.38 他 のプログラムの 出 力 を 変 換 する... $session->start_main(*stdout, '.', mime_type => 'text/html', ignore_headers => 1); require "bbs.cgi"; $session->end_main(*stdout);... start_resource, end_resourceについても 同 じことができます 繰 り 返 し 処 理 出 力 先 を 変 え start_main/end_main または transcodeを 繰 り 返 し 呼 び 出 すことで 同 じ セッションで 何 度 もドキュメントを 変 換 することができます 送 信 済 みのリソース 設 定 済 みのプロパティは 同 じセッションで 維 持 されます 同 じセッションのまま 初 期 状 態 に 戻 すには $session->reset() を 呼 び 出 してください 出 力 先 の 設 定 set_output_as_handle, set_output_as_fileにより 単 一 のファイルハンドルかファイルを 出 力 先 として 設 定 することができます 複 数 の 結 果 をファイルとして 出 力 する 場 合 は set_output_as_directory を 使 用 してくださ い このクラスは 指 定 したディレクトリに 1から 開 始 する 連 番 の 前 後 に 指 定 した 文 字 列 をくっつけたファイル 名 で 結 果 を 出 力 します 次 の 例 では 変 換 結 果 の 各 ページを resultsディレクトリ 内 に"image[ 通 し 番 号 ].jpeg"という 名 前 で 別 々のJPEG 画 像 として 出 力 します 例 3.39 ディレクトリに 結 果 を 出 力 する... $session->property("output.type", "image/jpeg"); $session->set_output_as_directory("results", "image", ".jpeg");... サーバーから 要 求 されたリソースの 送 信 サーバーから 要 求 されたリソースを 送 る 場 合 set_resolver_funcに 関 数 を 設 定 してくだ さい 関 数 には 要 求 されたファイルのURIと サーバーへのファイルハンドルを 得 るた めの 関 数 への 参 照 が 渡 されます 以 下 の 例 では URIが 相 対 パスであるという 前 提 で ローカルのファイルがあればサーバーに 送 信 します 116 3.9 Perlドライバ2

3. 開 発 者 ガイド 例 3.40 サーバーから 要 求 されたリソースをローカルファイルから 送 信 する... $session->set_resolver_func(sub { my ($uri, $open) = @_; if (-e $uri) { my $fp = $open->(); open(my $rfp, "<$uri"); while (<$rfp>) {print $fp $_; close($rfp); return undef; );... 実 際 に 動 作 するサンプルはドライバの src/test/resolver.pl にあります 複 数 の 結 果 の 結 合 複 数 の 結 果 を 結 合 したものを 得 るためには $session->set_continuous(1) を 呼 び 出 した 後 transcodeを 複 数 回 呼 び 出 し 最 後 に$session->join() を 呼 び 出 してください 例 3.41 2つの 結 果 の 結 合... $session->set_continuous(1); # 文 書 の 送 信 $session->start_main(*stdout, '.'); open($rfp, '<data/test.html'); while (<$rfp>) {print; close($rfp); $session->end_main(*stdout); # 文 書 の 送 信 $session->start_main(*stdout, '.'); open($rfp, '<data/test.html'); while (<$rfp>) {print; close($rfp); $session->end_main(*stdout); $session->join();... 実 際 に 動 作 するサンプルはドライバの src/test/continuous.pl にあります 3.9 Perlドライバ2 117

3. 開 発 者 ガイド 3.9.6 ソースコード ドライバのソースコードはSourceForge.JPに 公 開 しています ドライバのソースコード が 必 要 な 方 は 以 下 の ガ イ ド を 参 考 にSVN か ら 取 得 し て く だ さ い http://sourceforge.jp/projects/copper/cvs/ CTI Perl の ソ ー ス コ ー ド の タ ー ゲ ッ ト パ ス は 以 下 の 通 り で す http://svn.sourceforge.jp/svnroot/copper/drivers/perl/trunk/ 118 3.9 Perlドライバ2

3. 開 発 者 ガイド 3.10 PHPドライバ2 3.10.1 概 要 PHP 用 ドライバは PHPによる 出 力 をPDFに 変 換 できることが 特 徴 です 他 のPHPプログ ラムの 出 力 を もとのプログラムを 変 えないまま 変 換 することができます また PDFの もととなるテンプレートをSmarty 等 PHPベースのテンプレートエンジンにより 作 成 す ることができます 3.10.2 ドライバの 準 備 PHP 用 ド ラ イ バ は Copper PDF 本 体 と は 別 に 配 布 さ れ て い ま す http://sourceforge.jp/projects/copper/releases/?package_id=8743 か ら cti-php-2.x.x ダ ウ ン ロードしてください アプリケーションは codeディレクトリをライブラリパスに 含 め require_once ('CTI/DriverManager.php'); でドライバを 読 み 込 んでください 例 3.42 copperdへの 接 続 // ドライバの 読 み 込 み require_once ('CTI/DriverManager.php'); // セッションの 開 始 $session = cti_get_session('ctip://localhost:8099/', array('user' => 'user', 'password' => 'kappa')); // 各 種 操 作... 3.10.3 APIの 概 要 ここではAPIによるアクセスの 概 要 で 説 明 した 各 手 順 に 対 応 する 関 数 を 列 挙 します 各 関 数 の 詳 細 はapidoc 内 のAPIドキュメントか オンラインのAPIドキュメントを 参 照 し てください サーバーへの 接 続 認 証 cti_get_driver($uri) cti_get_session($uri, $opts) Driver->get_session($uri, $opts) サーバー 情 報 の 取 得 Session->get_server_info($uri) 3.10 PHPドライバ2 119

3. 開 発 者 ガイド メッセージハンドラ プログレスリスナの 設 定 Session->set_message_func(&$messageFunc) Session->set_progress_func(&$progressFunc) 出 力 先 の 設 定 Session->set_results(&$results) Session->set_output_as_resource(&$fp) Session->set_output_as_file($file) Session->set_output_as_directory($dir, [$prefix = ''], [$suffix = '']) Session->set_output_as_variable(&$var) プロパティの 設 定 Session->property($name, $value) ソースリゾルバの 設 定 Session->set_resolver_func(&$resolverFunc) リソースの 送 信 Session->start_resource($uri, [$opts = array()]) Session->end_resource() 本 体 の 送 信 変 換 Session->transcode($uri) Session->start_main($uri, [$opts = array()]) Session->end_main() 複 数 の 結 果 の 結 合 Session->set_continuous($continuous) Session->join() 処 理 の 中 断 リセット 通 信 の 終 了 Session->abort($mode) Session->reset() Session->close() 120 3.10 PHPドライバ2

3. 開 発 者 ガイド 3.10.4 サンプル 以 下 は プログラムによる 出 力 を 変 換 するサンプルです start_main, end_main 関 数 の 間 の 標 準 出 力 への 出 力 をキャプチャして 変 換 します 例 3.43 プログラムによる 出 力 を 変 換 する <?php require_once ('CTI/DriverManager.php'); //セッションの 開 始 $session = cti_get_session('ctip://localhost:8099/', array('user' => 'user', 'password' => 'kappa')); // ファイル 出 力 @mkdir($dir, 0777, 'out'); $session->set_output_as_file('test.pdf'); // リソースの 送 信 $session->start_resource('style.css', array('mimetype' => 'text/css'));?> p {color: Red; <?php $session->end_resource(); // 出 力 の 変 換 を 開 始 $session->start_main('.', array('mimetype' => 'text/html'));?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="style.css"> <title>サンプル</title> </head> <body> <p>hello World!</p> </body> </html> <?php // 出 力 の 変 換 を 終 了 $session->end_main(); // セッションの 終 了 $session->close();?> 3.10 PHPドライバ2 121

3. 開 発 者 ガイド 次 の 例 は サーバー 側 からネットワーク 上 のウェブページアクセスしてPDFに 変 換 しま す 例 3.44 サーバー 側 ウェブページにアクセスしてPDFに 変 換 <?php require_once ('CTI/DriverManager.php'); //セッションの 開 始 $session = cti_get_session('ctip://localhost:8099/', array('user' => 'user', 'password' => 'kappa')); //ファイル 出 力 @mkdir($dir, 0777, 'out'); $session->set_output_as_file('test.pdf'); //リソースのアクセス 許 可 $session->property('input.include', 'http://copper-pdf.com/**'); // 文 書 の 送 信 $session->transcode('http://copper-pdf.com/'); //セッションの 終 了 $session->close();?> 他 のサンプルはドライバのsrc/testに 収 められています 3.10.5 プログラミングのポイント Content-Type, Content-Length ヘッダの 出 力 ウェブアプリケーションでは Content-Type, Content-Lengthヘッダを 出 力 しないと ブ ラウザ 上 でPDFが 正 常 に 表 示 されないことがあります set_resultsやset_output_xxx 関 数 を 呼 び 出 さない 初 期 状 態 では 出 力 先 は 標 準 出 力 に 設 定 されています このとき 自 動 的 にContent-Lengthヘッダが 出 力 されます Content-Type はheader 関 数 により アプリ ケーションで 出 力 してください 他 のプログラムを 呼 び 出 して 変 換 する 他 のプログラムによる 出 力 を 変 換 するには start_main, end_mainの 間 でincludeしてくだ さい 以 下 の 例 では bbs.phpというプログラムの 出 力 を 変 換 します 122 3.10 PHPドライバ2

3. 開 発 者 ガイド 例 3.45 他 のプログラムの 出 力 を 変 換 する... $session->start_main('.', array('mimetype' => 'text/html')); include("bbs.php"); $session->end_main();... start_resource, end_resourceについても 同 じことができます 繰 り 返 し 処 理 出 力 先 を 変 え start_main/end_main または transcodeを 繰 り 返 し 呼 び 出 すことで 同 じ セッションで 何 度 もドキュメントを 変 換 することができます 送 信 済 みのリソース 設 定 済 みのプロパティは 同 じセッションで 維 持 されます 同 じセッションのまま 初 期 状 態 に 戻 すには $session->reset() を 呼 び 出 してください 出 力 先 の 設 定 set_output_as_resource, set_output_as_fileにより 単 一 のファイルハンドルかファイルを 出 力 先 として 設 定 することができます また set_output_as_variableに 変 数 の 参 照 を 渡 す と 変 数 に 結 果 が 出 力 されます 複 数 の 結 果 をファイルとして 出 力 する 場 合 は set_output_as_directory を 使 用 してくださ い このクラスは 指 定 したディレクトリに 1から 開 始 する 連 番 の 前 後 に 指 定 した 文 字 列 をくっつけたファイル 名 で 結 果 を 出 力 します 次 の 例 では 変 換 結 果 の 各 ページを resultsディレクトリ 内 に"image[ 通 し 番 号 ].jpeg"という 名 前 で 別 々のJPEG 画 像 として 出 力 します 例 3.46 ディレクトリに 結 果 を 出 力 する... $session->property("output.type", "image/jpeg"); $session->set_output_as_directory("results", "image", ".jpeg");... サーバーから 要 求 されたリソースの 送 信 サーバーから 要 求 されたリソースを 送 る 場 合 set_resolver_funcに 関 数 を 設 定 してくだ さい 関 数 には 要 求 されたファイルのURIと サーバーへのファイルハンドルを 得 るた めの 関 数 への 参 照 が 渡 されます 以 下 の 例 では URIが 相 対 パスであるという 前 提 で ローカルのファイルがあればサーバーに 送 信 します 3.10 PHPドライバ2 123

3. 開 発 者 ガイド 例 3.47 サーバーから 要 求 されたリソースをローカルファイルから 送 信 する... function resolver($uri, $r) { if (file_exists($uri)) { $r->start(); readfile($uri); $r->end(); $func = 'resolver'; $session->set_resolver_func($func);... 実 際 に 動 作 するサンプルはドライバの src/test/resolver.php にあります 複 数 の 結 果 の 結 合 複 数 の 結 果 を 結 合 したものを 得 るためには $session->set_continuous(true) を 呼 び 出 した 後 transcodeを 複 数 回 呼 び 出 し 最 後 に$session->join() を 呼 び 出 してください 例 3.48 2つの 結 果 の 結 合... $session->set_continuous(true); // 文 書 の 送 信 $session->start_main('.'); readfile("data/test.html"); $session->end_main(); // 文 書 の 送 信 $session->start_main('.'); readfile("data/test.html"); $session->end_main(); $session->join();... 実 際 に 動 作 するサンプルはドライバの src/test/continuous.php にあります 3.10.6 ソースコード ドライバのソースコードはSourceForge.JPに 公 開 しています ドライバのソースコード が 必 要 な 方 は 以 下 の ガ イ ド を 参 考 にSVN か ら 取 得 し て く だ さ い http://sourceforge.jp/projects/copper/cvs/ CTI PHP の ソ ー ス コ ー ド の タ ー ゲ ッ ト パ ス は 以 下 の 通 り で す http://svn.sourceforge.jp/svnroot/copper/drivers/php/trunk/ 124 3.10 PHPドライバ2

3. 開 発 者 ガイド 3.11.NETドライバ 3.11.1 概 要.NETドライバはC#で 書 かれており C#, VB.NETなどから 利 用 することができます ス トリーム(System.IO.Stream)からストリームへの 変 換 に 対 応 しており 巨 大 な 文 書 も 容 易 に 変 換 することができます また ASP.NET で 利 用 する 際 は ASP.NET からの 出 力 をキャプチャしながら 変 換 結 果 を 送 り 出 すことができます これにより PDFの 出 力 も 普 通 のウェブページと 同 様 に ASP.NETにより 作 ることができます 3.11.2 ドライバの 準 備.NET 用 ド ラ イ バ は Copper PDF 本 体 と は 別 に 配 布 さ れ て い ま す http://sourceforge.jp/projects/copper/releases/?package_id=12608 からcti-dotnet_2.x.x.zipをダ ウンロードしてください このアーカイブに 含 まれるCTI.dllをアプリケーションの ディレクトリまたはシステムディレクトリ(C:\WINDOWS\system32)に 配 置 してくださ い ドライバの 窓 口 となるクラスはCTI.DriverManagerです 例 えばlocalhostの8099 番 ポート で 起 動 しているcopperdに ユーザーID"user" パスワード"kappa"で 接 続 するには 以 下 の ようにします 例 3.49 copperdへの 接 続 using System; using CTI;... using (Session session = DriverManager.getSession(new Uri ("ctip://localhost:8099/"), "user", "kappa")) { // 各 種 操 作...... 3.11.3 タイムアウトの 設 定.NET 版 ドライバ2.0.1 以 降 から 一 定 時 間 通 信 がない 状 態 で 自 動 的 に 通 信 を 切 断 するタ イムアウトに 対 応 しています 以 下 のようにURLパラメータで timeoutをミリ 秒 単 位 で 指 定 できます ctip://127.0.0.1:8099/?timeout=10000 3.11.NETドライバ 125

3. 開 発 者 ガイド 3.11.4 APIの 概 要 ここではAPIによるアクセスの 概 要 で 説 明 した 各 手 順 に 対 応 する 関 数 を 列 挙 します 各 関 数 の 詳 細 はドライバのapidoc/htmlディレクトリ 内 のAPIドキュメントか オンライン のAPIドキュメントを 参 照 してください サーバーへの 接 続 認 証 public static CTIDriver GetDriver(Uri uri) public static CTISession GetSession(Uri uri, Hashtable props) public static CTISession GetSession(Uri uri, string user, string password) サーバー 情 報 の 取 得 public Stream GetServerInfo(Uri uri) メッセージハンドラ プログレスリスナの 設 定 MessageHandler MessageHandler { set; ProgressListener ProgressListener { set; 出 力 先 の 設 定 Results Results { set; プロパティの 設 定 public void Property(string name, string value) ソースリゾルバの 設 定 SourceResolver SourceResolver { set; リソースの 送 信 public void Resource(SourceInfo info, Stream input) public Stream Resource(SourceInfo info) 本 体 の 送 信 変 換 public void Transcode(SourceInfo info, Stream input) public Stream Transcode(SourceInfo info) public void Transcode(string uri) 126 3.11.NETドライバ

3. 開 発 者 ガイド 複 数 の 結 果 の 結 合 bool Continuous { set; public void Join() 処 理 の 中 断 リセット 通 信 の 終 了 public void Abort(AbortMode mode) public void Reset() public void Close() 3.11.5 サンプル 次 の 例 は サーバー 側 からネットワーク 上 のウェブページアクセスしてPDFに 変 換 しま す 例 3.50 サーバー 側 からウェブページにアクセスしてPDFに 変 換 (C#) using System; using Zamasoft.CTI; namespace examples { /// <summary> /// サーバー 側 からインターネット 上 の 文 書 にアクセスして 変 換 します /// </summary> class ServerResource { static void Main(string[] args) { using (Session session = DriverManager.getSession(new Uri("ctip://localhost:8099/"), "user", "kappa")) { // test.pdfに 結 果 を 出 力 する Utils.SetResultFile(session, "test.pdf"); // http://copper-pdf.com/ 以 下 にあるリソースへのアクセス 3.11.NETドライバ 127

3. 開 発 者 ガイド を 許 可 する session.property("input.include", "http://copperpdf.com/**"); // ウェブページを 変 換 session.transcode("http://copper-pdf.com/"); 例 3.51 サーバー 側 からウェブページにアクセスしてPDFに 変 換 (VB.NET) Imports System Imports System.IO Imports Zamasoft.CTI ''' <summary> ''' サーバー 側 からインターネット 上 の 文 書 にアクセスして 変 換 します ''' </summary> Module ServerResource Sub Main() Using session As Session = DriverManager.getSession(New Uri ("ctip://localhost:8099/"), "user", "kappa") ' test.pdfに 結 果 を 出 力 する Utils.SetResultFile(session, "test.pdf") ' http://copper-pdf.com/ 以 下 にあるリソースへのアクセスを 許 可 する session.property("input.include", "http://copperpdf.com/**") ' ウェブページを 変 換 session.transcode("http://copper-pdf.com/") End Using End Sub End Module.NET 版 ドライバの 特 徴 は ASP.NET をPDF 出 力 のためのテンプレートとして 利 用 でき るようになることです 前 準 備 として 以 下 のクラスを 用 意 しておきます 128 3.11.NETドライバ

3. 開 発 者 ガイド 例 3.52 ASP.NET のために 用 意 しておくクラス(C#) public class CopperPDF { // 結 果 を 直 接 ブラウザに 返 すように 設 定 します static public void SetResponse(Session session, HttpResponse response) { session.results = new SingleResult(new ContentLengthSender(response)); // Content-Lengthヘッダを 送 信 するためのビルダー private class ContentLengthSender : Builder { private readonly HttpResponse response; public ContentLengthSender(HttpResponse response) : base(response.outputstream) { this.response = response; public override void Finish() { this.response.contenttype = this.info.mimetype; response.appendheader("content-length", this.length.tostring()); base.finish(); 例 3.53 ASP.NET のために 用 意 しておくクラス(VB.NET) Public Class CopperPDF ' 結 果 を 直 接 ブラウザに 返 すように 設 定 します Public Shared Sub SetResponse(session As Session, response As HttpResponse) session.results = New SingleResult(New ContentLengthSender (response)) End Sub ' Content-Lengthヘッダを 送 信 するためのビルダー Private Class ContentLengthSender Inherits Builder Private ReadOnly response As HttpResponse Sub New(response As HttpResponse) MyBase.New(response.OutputStream) 3.11.NETドライバ 129

3. 開 発 者 ガイド Me.response = response End Sub ()) Overrides Sub Finish() response.contenttype = Info.MimeType response.appendheader("content-length", length.tostring MyBase.Finish() End Sub End Class End Class ASP.NET により 生 成 したPDFを 直 接 ブラウザに 送 る 場 合 HTTPレスポンスのContent- Typeヘッダに"application/pdf"を 設 定 し Content-LengthヘッダにPDFファイルのサイズ を 設 定 する 必 要 があります 上 記 のContentLengthSenderは そのためのもので 親 クラス のBuilderからPDFのMIME 型 (Info.MimeType) ファイルサイズ(length)を 得 ています ASP.NET で 他 のページをPDFのテンプレートとして 利 用 するには 以 下 のようにしま す 例 3.54 他 のページを 実 行 して 結 果 をPDFに 変 換 する(C#) CopperPDF.SetResponse(session, Response); string template = Request.ApplicationPath + "PDFTemplate.aspx"; using (StreamWriter writer = new StreamWriter(session.Transcode (new SourceInfo(".")))) { Server.Execute(template, writer); 例 3.55 他 のページを 実 行 して 結 果 をPDFに 変 換 する(VB.NET) CopperPDF.SetResponse(session, Response) Dim template As String = Request.ApplicationPath + "PDFTemplate.aspx" Using writer As New StreamWriter(session.Transcode(New SourceInfo("."))) Server.Execute(template, writer) End Using 上 記 の 例 ではPDFTemplate.aspxを 実 行 した 結 果 をCopper PDFに 送 り 変 換 した 結 果 をブ ラウザに 送 信 しています PDFTemplate.aspxは 普 通 のASP.NET ページなので 例 えば PDF 上 にカレンダーを 印 刷 するためにカレンダーコントロールを 利 用 するといったこ とができます 他 のサンプルはドライバのCTIディレクトリに 収 められています 130 3.11.NETドライバ

3. 開 発 者 ガイド 3.11.6 プログラミングのポイント Utilsの 利 用 結 果 の 出 力 先 リ ソ ー ス の 送 信 フ ァ イ ル の 変 換 等 の よ く 使 わ れ る 操 作 が Zammasoft.CTI.Utils のstatic(Shared)メソッドにまとめられています 例 えば 事 前 に 関 連 するCSSを 送 信 してHTMLファイルを 変 換 する 処 理 は 次 のように 簡 単 に 書 けます 例 3.56 ファイルを 変 換 する(C#)... Utils.SendResourceFile(session, "test.css", "text/css", "UTF-8"); Utils.TranscodeFile(session, "test.html", "text/html", "UTF-8");... 例 3.57 ファイルを 変 換 する(VB.NET)... Utils.SendResourceFile(session, "test.css", "text/css", "UTF-8") Utils.TranscodeFile(session, "test.html", "text/html", "UTF-8")... 繰 り 返 し 処 理 出 力 先 を 変 え Transcodeメソッドを 繰 り 返 し 呼 び 出 すことで 同 じセッションで 何 度 も ドキュメントを 変 換 することができます 送 信 済 みのリソース 設 定 済 みのプロパティ は 同 じセッションで 維 持 されます 同 じセッションのまま 初 期 状 態 に 戻 すには Reset を 呼 び 出 してください 出 力 先 (Results)の 設 定 出 力 先 が 単 一 の フ ァ イ ル や ス ト リ ー ム の 場 合 は Utils の SetResultFile か SetResultStream を 使 っ て く だ さ い こ れ ら の メ ソ ッ ド は 内 部 的 に Zamasoft.CTI.Result.SingleResultクラスを 使 用 しています Zamasoft.CTI.Result.Resultsインターフェースは 複 数 の 出 力 結 果 を 受 け 取 るためのイン ターフェースです SessionのResultsプロパティにセットします 複 数 の 結 果 をファイルとして 出 力 する 場 合 は Zamasoft.CTI.Result.FileResults を 使 用 し てください このクラスは 指 定 したディレクトリに 1から 開 始 する 連 番 の 前 後 に 指 定 した 文 字 列 をくっつけたファイル 名 で 結 果 を 出 力 します 次 の 例 では 変 換 結 果 の 各 ページを resultsディレクトリ 内 に"image[ 通 し 番 号 ].jpeg"という 名 前 で 別 々のJPEG 画 像 として 出 力 します 3.11.NETドライバ 131

3. 開 発 者 ガイド 例 3.58 ディレクトリに 結 果 を 出 力 する(C#)... session.property("output.type", "image/jpeg"); session.results = new FileResults("results/image", ".jpeg"));... 例 3.59 ディレクトリに 結 果 を 出 力 する(VB.NET)... session.property("output.type", "image/jpeg") session.results = New FileResults("results/image", ".jpeg"))... さらに 複 雑 な 処 理 が 必 要 な 場 合 は Resultsインターフェースを 実 装 するクラスを 用 意 す る 必 要 が あ り ま す Results イ ン タ ー フ ェ ー ス を 実 装 し た ク ラ ス で は Zamasoft.CTI.Result.Builder を 使 ってストリームやファイルにデータを 出 力 してくださ い サーバーから 要 求 されたリソースの 送 信 (SourceResolver) Session の SourceResolver プ ロ パ テ ィ に ソ ー ス リ ゾ ル バ (Zamasoft.CTI.Source.SourceResolver) を 設 定 すると サーバーから 要 求 されたリソース を 都 度 送 信 できるようになります 次 の 例 のように SourceResolverを 実 装 すると クライアント 側 のファイル あるいはク ライアント 側 からウェブにアクセスして 取 得 したデータをサーバーに 送 ることができ ます 例 3.60 SourceResolverの 実 装 例 (C#) class MySourceResolver : SourceResolver { public Stream Resolve(string _uri, ref SourceInfo info) { Uri uri = new Uri(_uri); if (uri.isfile) { string file = uri.absolutepath; if (!File.Exists(file)) { return null; info = new SourceInfo(_uri); return new FileStream(file, FileMode.Open, FileAccess.Read); else if (uri.scheme == "http") 132 3.11.NETドライバ

3. 開 発 者 ガイド { WebRequest req = WebRequest.Create(uri); WebResponse resp = req.getresponse(); info = new SourceInfo(_uri); info.mimetype = resp.headers.get("content-type"); return resp.getresponsestream(); return null; 例 3.61 SourceResolverの 実 装 例 (VB.NET) Class MySourceResolver Implements SourceResolver Function Resolve(_uri As String, ByRef info As SourceInfo) As Stream Implements SourceResolver.Resolve Dim uri As New Uri(_uri) If uri.isfile Then Dim file As String = uri.absolutepath If Not System.IO.File.Exists(file) Then Return Nothing End If info = New SourceInfo(_uri) Return New FileStream(file, FileMode.Open, FileAccess.Read) ElseIf uri.scheme = "http" Then Dim req As WebRequest = WebRequest.Create(uri) Dim resp As WebResponse = req.getresponse() info = New SourceInfo(_uri) info.mimetype = resp.headers.get("content-type") Return resp.getresponsestream() End If Return Nothing End Function End Class SourceInfo Sessionの Resource, Transcode メソッド 等 では データの 仮 想 URI MIME 型 キャラク タ エンコーディング 予 測 されるデータサイズ SourceInfo クラスにより 渡 します 複 数 の 結 果 の 結 合 複 数 の 結 果 を 結 合 したものを 得 るためには Continuous プロパティにtrueを 設 定 した 後 Transcodeを 複 数 回 呼 び 出 し 最 後 にJoin を 呼 び 出 してください 3.11.NETドライバ 133

3. 開 発 者 ガイド 例 3.62 2つの 結 果 の 結 合 (C#)... session.continuous = true; Utils.SendResourceFile(session, "test.css", "text/css", "UTF-8"); Utils.TranscodeFile(session, "test.html", "text/html", "UTF-8"); session.transcode("http://print.cssj.jp/"); session.join();... 例 3.63 2つの 結 果 の 結 合 (VB.NET)... session.continuous = true Utils.SendResourceFile(session, "test.css", "text/css", "UTF-8") Utils.TranscodeFile(session, "test.html", "text/html", "UTF-8") session.transcode("http://print.cssj.jp/") session.join()... Abortによる 中 断 SessionのAbort メソッドは 文 書 の 変 換 処 理 を 中 断 しますが Transcodeメソッドは 処 理 の 間 ブロックするため 別 スレッドからAbortを 呼 び 出 す 必 要 があります Abortは 引 数 に よって 強 制 的 に 中 断 するモードと きりのよいところまで 処 理 して 一 応 利 用 可 能 な 結 果 を 出 力 するモードの2つがあります 後 者 のモードは 例 えば 大 きなPDFファイルを 出 力 中 に 処 理 を 中 断 して 途 中 までの 出 力 結 果 を 見 たい 場 合 に 有 用 です ただし 1 ページ 目 を 出 力 される 前 に 中 断 してしまった 場 合 など 読 み 込 み 可 能 なデータが 出 力 で きないことも 起 こり 得 ます 134 3.11.NETドライバ

3. 開 発 者 ガイド 3.12 Rubyドライバ 3.12.1 概 要 Rubyドライバは ストリーム(IO)への 出 力 をPDFに 変 換 することができます 例 えば ERBでPDFの 元 となるHTMLのテンプレートを 作 ることができます 3.12.2 ドライバの 準 備 Ruby 用 ド ラ イ バ は Copper PDF 本 体 と は 別 に 配 布 さ れ て い ま す http://sourceforge.jp/projects/copper/releases/?package_id=13670 か ら cti-ruby-2.x.x ダ ウ ン ロードしてください アプリケーションは codeディレクトリをライブラリパスに 含 め require 'CTI' でドライバを 読 み 込 んでください 例 3.64 copperdへの 接 続 # ドライバの 読 み 込 み require 'CTI' include CTI # セッションの 開 始 get_session('ctip://localhost:8099/', { 'user' => 'user', 'password' => 'kappa' ) do session # 各 種 操 作... end 3.12.3 APIの 概 要 ここではAPIによるアクセスの 概 要 で 説 明 した 各 手 順 に 対 応 する 関 数 を 列 挙 します 各 関 数 の 詳 細 はapidoc 内 のAPIドキュメントか オンラインのAPIドキュメントを 参 照 し てください サーバーへの 接 続 認 証 CTI#get_driver(uri) CTI#get_session(uri, options = {, &block) サーバー 情 報 の 取 得 CTI::Session#get_server_info(uri) 3.12 Rubyドライバ 135

3. 開 発 者 ガイド メッセージハンドラ プログレスリスナの 設 定 CTI::Session#receive_message(&messageFunc) CTI::Session#set_progress_func(&progressFunc) 出 力 先 の 設 定 CTI::Session#set_results(results) CTI::Session#set_output_as_stream(out) CTI::Session#set_output_as_file(file) CTI::Session#set_output_as_directory(dir, prefix = '', suffix = '') プロパティの 設 定 CTI::Session#property(name, value) ソースリゾルバの 設 定 CTI::Session#resolver(&resolverFunc) リソースの 送 信 CTI::Session#resource(uri, opts = {, &block) 本 体 の 送 信 変 換 CTI::Session#transcode(uri = '.', opts = {, &block) CTI::Session#transcodeServer(uri) 複 数 の 結 果 の 結 合 CTI::Session#set_continuous(continuous) CTI::Session#join 処 理 の 中 断 リセット 通 信 の 終 了 CTI::Session#abort(mode) CTI::Session#reset CTI::Session#close 136 3.12 Rubyドライバ

3. 開 発 者 ガイド 3.12.4 サンプル 以 下 は ERBによる 出 力 を 変 換 するサンプルです $stdoutを 途 中 でCopper PDFへの 出 力 に 切 り 替 えています 例 3.65 プログラムによる 出 力 を 変 換 する require 'CTI' include CTI require 'erb' # セッションの 開 始 get_session('ctip://localhost:8099/', { 'user' => 'user', 'password' => 'kappa' ) do session # ファイル 出 力 dir = 'out'; Dir::mkdir(dir, 0777) unless File.exist?(dir) session.set_output_as_file('out/erb.pdf') # テンプレートを 変 換 session.transcode do out begin $stdout = out ERB.new(DATA.read).run ensure $stdout = STDOUT end end end END <html> <head> <title>erb</title> </head> <body> <p>hello ERB</p> <p>ただいまの 時 刻 は <%= Time.now %></p> </body> </html> 次 の 例 は サーバー 側 からネットワーク 上 のウェブページアクセスしてPDFに 変 換 しま す 3.12 Rubyドライバ 137

3. 開 発 者 ガイド 例 3.66 サーバー 側 ウェブページにアクセスしてPDFに 変 換 require 'CTI' include CTI # セッションの 開 始 get_session('ctip://localhost:8099/', { 'user' => 'user', 'password' => 'kappa' ) do session # ファイル 出 力 dir = 'out'; Dir::mkdir(dir, 0777) unless File.exist?(dir) session.set_output_as_file('out/server-resource.pdf') #リソースのアクセス 許 可 session.property('input.include', 'http://copper-pdf.com/**') # 文 書 の 変 換 session.transcodeserver('http://copper-pdf.com/'); end 他 のサンプルはドライバのsrc/testに 収 められています 3.12.5 プログラミングのポイント Content-Type, Content-Length ヘッダの 出 力 ウェブアプリケーションでは Content-Type, Content-Lengthヘッダを 出 力 しないと ブ ラウザ 上 でPDFが 正 常 に 表 示 されないことがあります set_resultsやset_output_xxxメ ソッドを 呼 び 出 さない 初 期 状 態 では 出 力 先 は 標 準 出 力 (STDOUT)に 設 定 されていま す このとき 自 動 的 にContent-Type, Content-Lengthヘッダが 出 力 されます これはSingleResultとStreamBuilderのコンストラクタに 渡 すことができるブロックを 利 用 しています 同 じ 状 態 にするためには 以 下 のようにSession#set_resultsメソッドを 呼 び 出 してください 例 3.67 ヘッダの 出 力 session.set_results(singleresult.new(streambuilder.new(stdout) do length print "Content-Length: #{length\r\n\r\n" end) do opts print "Content-Type: #{opts['mime_type']\r\n" end) 138 3.12 Rubyドライバ

3. 開 発 者 ガイド 繰 り 返 し 処 理 出 力 先 を 変 え transcode または transcodeserverを 繰 り 返 し 呼 び 出 すことで 同 じセッ ションで 何 度 もドキュメントを 変 換 することができます 送 信 済 みのリソース 設 定 済 みのプロパティは 同 じセッションで 維 持 されます 同 じセッションのまま 初 期 状 態 に 戻 すには session.reset を 呼 び 出 してください 出 力 先 の 設 定 set_output_as_stream, set_output_as_fileにより 単 一 のファイルハンドルかファイルを 出 力 先 として 設 定 することができます 複 数 の 結 果 をファイルとして 出 力 する 場 合 は set_output_as_directory を 使 用 してくださ い このクラスは 指 定 したディレクトリに 1から 開 始 する 連 番 の 前 後 に 指 定 した 文 字 列 をくっつけたファイル 名 で 結 果 を 出 力 します 次 の 例 では 変 換 結 果 の 各 ページを resultsディレクトリ 内 に"image[ 通 し 番 号 ].jpeg"という 名 前 で 別 々のJPEG 画 像 として 出 力 します 例 3.68 ディレクトリに 結 果 を 出 力 する session.property("output.type", "image/jpeg") session.set_output_as_directory("results", "image", ".jpeg") サーバーから 要 求 されたリソースの 送 信 サーバーから 要 求 されたリソースを 送 る 場 合 resolverを 呼 び 出 してください このメ ソッドには 要 求 されたファイルのURIと サーバーへのファイルハンドルを 得 るため のブロックを 渡 します 以 下 の 例 では URIが 相 対 パスであるという 前 提 で ローカルの ファイルがあればサーバーに 送 信 します 例 3.69 サーバーから 要 求 されたリソースをローカルファイルから 送 信 する session.resolver do uri, r if File.exist?(uri) r.found do out FileUtils.copy_stream(File.open(uri), out) end end end 実 際 に 動 作 するサンプルはドライバの src/test/resolver.rb にあります 複 数 の 結 果 の 結 合 複 数 の 結 果 を 結 合 したものを 得 るためには session.set_continuous(true) を 呼 び 出 した 後 transcodeを 複 数 回 呼 び 出 し 最 後 にsession.join を 呼 び 出 してください 3.12 Rubyドライバ 139

3. 開 発 者 ガイド 例 3.70 2つの 結 果 の 結 合 session.set_continuous(true) # 文 書 の 送 信 session.transcode do out FileUtils.copy_stream(File.open('data/test.html'), out) end #リソースのアクセス 許 可 session.property('input.include', 'http://copper-pdf.com/**') # 文 書 の 変 換 session.transcodeserver('http://copper-pdf.com/') # 結 合 session.join 実 際 に 動 作 するサンプルはドライバの src/test/continuous.rb にあります 3.12.6 ソースコード ドライバのソースコードはSourceForge.JPに 公 開 しています ドライバのソースコード が 必 要 な 方 は 以 下 の ガ イ ド を 参 考 にSVN か ら 取 得 し て く だ さ い http://sourceforge.jp/projects/copper/cvs/ CTI Ruby の ソ ー ス コ ー ド の タ ー ゲ ッ ト パ ス は 以 下 の 通 り で す http://svn.sourceforge.jp/svnroot/copper/drivers/ruby/trunk/ 140 3.12 Rubyドライバ

3. 開 発 者 ガイド 3.13 Pythonドライバ 3.13.1 概 要 Pythonドライバは 出 力 をPDFに 変 換 することができます 3.13.2 ドライバの 準 備 Python 用 ド ラ イ バ は Copper PDF 本 体 と は 別 に 配 布 さ れ て い ま す http://sourceforge.jp/projects/copper/releases/?package_id=13732 から cti-python-2.x.x ダウン ロードしてください アプリケーションは codeディレクトリをライブラリパスに 含 め fromctimport *でドライバを 読 み 込 んでください 例 3.71 copperdへの 接 続 # ドライバの 読 み 込 み from cti import * # セッションの 開 始 session = get_session('ctip://localhost:8099/',{ 'user' :'user', 'password' :'kappa' ) try: # 各 種 操 作... finally: session.close() Python 2.7 以 降 ではセッションの 開 始 と 終 了 は with 文 を 使 ってつぎのように 書 くこと もできます 例 3.72 copperdへの 接 続 (Python2.7) # セッションの 開 始 with get_session('ctip://localhost:8099/',{ 'user' :'user', 'password' :'kappa' ) as session # 各 種 操 作... 3.13.3 APIの 概 要 ここではAPIによるアクセスの 概 要 で 説 明 した 各 手 順 に 対 応 する 関 数 を 列 挙 します 各 関 数 の 詳 細 はapidoc 内 のAPIドキュメントか オンラインのAPIドキュメントを 参 照 し てください 3.13 Pythonドライバ 141

3. 開 発 者 ガイド サーバーへの 接 続 認 証 get_driver(uri) get_session(uri, options = {) サーバー 情 報 の 取 得 Session#get_server_info(uri) メッセージハンドラ プログレスリスナの 設 定 Session#set_message_func(&message_func) Session#set_progress_func(&progress_func) 出 力 先 の 設 定 Session#set_results(results) Session#set_output_as_stream(out) Session#set_output_as_file(file) Session#set_output_as_directory(dir, prefix = '', suffix = '') プロパティの 設 定 Session#property(name, value) ソースリゾルバの 設 定 Session#set_resolver_func(&resolver_func) リソースの 送 信 Session#resource(uri, opts = {,) 本 体 の 送 信 変 換 Session#transcode(uri = '.', opts = {) Session#transcode_server(uri) 複 数 の 結 果 の 結 合 Session#set_continuous(continuous) Session#join() 142 3.13 Pythonドライバ

3. 開 発 者 ガイド 処 理 の 中 断 リセット 通 信 の 終 了 Session#abort(mode) Session#reset() Session#close() 3.13.4 サンプル 以 下 は プログラムによる 出 力 を 変 換 するサンプルです sys.stdoutを 途 中 でCopper PDF への 出 力 に 切 り 替 えています 例 3.73 プログラムによる 出 力 を 変 換 する # -*- coding: utf-8 -*- import sys import os import os.path import time from cti import * # セッションの 開 始 session = get_session('ctip://localhost:8099/',{ 'user' :'user', 'password' :'kappa' ) try: # ファイル 出 力 dir = 'out'; if not os.path.exists(dir): os.mkdir(dir) session.set_output_as_file('out/stdin.pdf') # 文 書 の 送 信 sys.stdout = session.transcode() try: print """ <html> <head> <title>python Test</title> </head> <body> 3.13 Pythonドライバ 143

3. 開 発 者 ガイド <h1>hello Python</h1> <p> 只 今 の 時 刻 は: %s</p> </body> </html>""" % time.strftime("%y/%m/%d %H:%M:%S") finally: sys.stdout.close() sys.stdout = sys. stdout finally: session.close() 次 の 例 は サーバー 側 からネットワーク 上 のウェブページアクセスしてPDFに 変 換 しま す 例 3.74 サーバー 側 ウェブページにアクセスしてPDFに 変 換 # -*- coding: utf-8 -*- import sys import os import os.path from cti import * # セッションの 開 始 session = get_session('ctip://localhost:8099/',{ 'user' :'user', 'password' :'kappa' ) try: # ファイル 出 力 dir = 'out'; if not os.path.exists(dir): os.mkdir(dir) session.set_output_as_file('out/server-resource.pdf') #リソースのアクセス 許 可 session.property('input.include', 'http://copper-pdf.com/**') # 文 書 の 変 換 session.transcode_server('http://copper-pdf.com/'); finally: session.close() 他 のサンプルはドライバのsrc/testに 収 められています 144 3.13 Pythonドライバ

3. 開 発 者 ガイド 3.13.5 プログラミングのポイント Content-Type, Content-Length ヘッダの 出 力 ウェブアプリケーションでは Content-Type, Content-Lengthヘッダを 出 力 しないと ブ ラウザ 上 でPDFが 正 常 に 表 示 されないことがあります set_resultsやset_output_xxxメ ソッドを 呼 び 出 さない 初 期 状 態 では 出 力 先 は 標 準 出 力 (sys. stdout )に 設 定 されてい ます このとき 自 動 的 にContent-Type, Content-Lengthヘッダが 出 力 されます これはSingleResultとStreamBuilderのコンストラクタに 渡 すことができるブロックを 利 用 しています 同 じ 状 態 にするためには 以 下 のようにSession#set_resultsメソッドを 呼 び 出 してください 例 3.75 ヘッダの 出 力 def content_type(opts): print >> sys. stdout, "Content-Type: "+opts['mime_type'] def content_length(length): print >> sys. stdout, "Content-Length: "+str(length) print >> sys. stdout results = SingleResult(StreamBuilder(sys. stdout, content_length), content_type) session.set_results(results) 繰 り 返 し 処 理 出 力 先 を 変 え transcode または transcode_serverを 繰 り 返 し 呼 び 出 すことで 同 じセッ ションで 何 度 もドキュメントを 変 換 することができます 送 信 済 みのリソース 設 定 済 みのプロパティは 同 じセッションで 維 持 されます 同 じセッションのまま 初 期 状 態 に 戻 すには session.reset() を 呼 び 出 してください 出 力 先 の 設 定 set_output_as_stream, set_output_as_fileにより 単 一 のファイルハンドルかファイルを 出 力 先 として 設 定 することができます 複 数 の 結 果 をファイルとして 出 力 する 場 合 は set_output_as_directory を 使 用 してくださ い このクラスは 指 定 したディレクトリに 1から 開 始 する 連 番 の 前 後 に 指 定 した 文 字 列 をくっつけたファイル 名 で 結 果 を 出 力 します 次 の 例 では 変 換 結 果 の 各 ページを resultsディレクトリ 内 に"image[ 通 し 番 号 ].jpeg"という 名 前 で 別 々のJPEG 画 像 として 出 力 します 例 3.76 ディレクトリに 結 果 を 出 力 する session.property("output.type", "image/jpeg") session.set_output_as_directory("results", "image", ".jpeg") 3.13 Pythonドライバ 145

3. 開 発 者 ガイド サーバーから 要 求 されたリソースの 送 信 サーバーから 要 求 されたリソースを 送 る 場 合 resolverを 呼 び 出 してください このメ ソッドには 要 求 されたファイルのURIと サーバーへのファイルハンドルを 得 るため のブロックを 渡 します 以 下 の 例 では URIが 相 対 パスであるという 前 提 で ローカルの ファイルがあればサーバーに 送 信 します 例 3.77 サーバーから 要 求 されたリソースをローカルファイルから 送 信 する def resolver(uri, r): if os.path.exists(uri): out = r.found() try: file = open(uri) try: out.write(file.read()) finally: file.close() finally: out.close() session.set_resolver_func(resolver) 実 際 に 動 作 するサンプルはドライバの src/test/python2.4/resolver.py にあります 複 数 の 結 果 の 結 合 複 数 の 結 果 を 結 合 したものを 得 るためには session.set_continuous(true) を 呼 び 出 した 後 transcodeを 複 数 回 呼 び 出 し 最 後 にsession.join() を 呼 び 出 してください 例 3.78 2つの 結 果 の 結 合 session.set_continuous(true) # 文 書 の 送 信 out = session.transcode() try: file = open('data/test.html') try: out.write(file.read()) finally: file.close() finally: 146 3.13 Pythonドライバ

3. 開 発 者 ガイド out.close() #リソースのアクセス 許 可 session.property('input.include', 'http://copper-pdf.com/**') # 文 書 の 変 換 session.transcode_server('http://copper-pdf.com/') # 結 合 session.join() 実 際 に 動 作 するサンプルはドライバの src/test/python2.4/continuous.py にあります 3.13.6 ソースコード ドライバのソースコードはSourceForge.JPに 公 開 しています ドライバのソースコード が 必 要 な 方 は 以 下 の ガ イ ド を 参 考 にSVN か ら 取 得 し て く だ さ い http://sourceforge.jp/projects/copper/cvs/ CTI Python の ソ ー ス コ ー ド の タ ー ゲ ッ ト パ ス は 以 下 の 通 り で す http://svn.sourceforge.jp/svnroot/copper/drivers/python/trunk/ 3.13 Pythonドライバ 147

3. 開 発 者 ガイド 3.14 transcode Antタスク 3.14.1 Antタスクの 概 要 頻 繁 に 更 新 されるドキュメントを 素 早 くまとめて 変 換 するために Apache Antによる バッチ 処 理 をサポートしています AntはJavaで 開 発 されたフリーのビルド ツールで す Antによるバッチ 処 理 は ソースが 変 更 されたファイルだけを 変 換 するため 効 率 的 です Antについての 詳 細 は 書 籍 などをご 参 照 下 さい transcode Antタスクは Copper PDF 本 体 と Java 版 CTIP 2.0ドライバに 含 まれています Copper PDF 本 体 のライブラリを 使 用 する 場 合 は 直 接 ローカルマシンのライブラリを 使 用 する 方 法 と CTIP 2.0またはHTTP/RESTプロトコルで 接 続 する 方 法 を 使 うことがで きます CTIP 2.0ドライバを 使 用 する 場 合 は 後 者 の 方 法 だけです 3.14.2 transcode タスクの 使 用 方 法 ローカルマシン 上 のCopper PDFを 直 接 利 用 して transcode タスクを 使 用 するためには Antのbuild.xml 中 で 次 のように 宣 言 する 必 要 があります 例 3.79 transcode タスクの 宣 言 (ローカルマシン) <path id="lib.path"> <fileset dir=" Copper PDFのlibディレクトリのパス " includes="*.jar"/> </path> <typedef classpathref="lib.path" resource="jp/cssj/driver/ant/tasks.properties"/> Java 版 のCTIP 2.0ライブラリを 使 う 場 合 は 同 様 に 次 のように 宣 言 します 例 3.80 transcode タスクの 宣 言 (CTIP 2.0ドライバ) <typedef classpath="cti-driver.jarへのパス" resource="jp/cssj/driver/ant/tasks.properties"/> 以 降 transcodeという 要 素 名 でタスクを 使 えるようになります transcodeタスクに 指 定 することができる 属 性 は 次 の 通 りです 表 3.3 transcode タスクの 属 性 属 性 名 srcdir 説 明 変 換 前 のXML,HTMLファイルなどが 格 納 されたディレクトリです 省 略 した 場 合 カレント ディレクトリとなります 148 3.14 transcode Antタスク

3. 開 発 者 ガイド 属 性 名 includes excludes destdir suffix 説 明 srcdir 中 の 変 換 対 象 となるファイルのパターンです srcdir 中 の 変 換 対 象 外 となるファイルのパターンです 出 力 先 のディレクトリです 省 略 するとsrcDirと 同 じディレクトリになります 出 力 結 果 ファイルの 拡 張 子 です 省 略 した 場 合 は.pdfとなります 接 続 先 はtranscode 要 素 内 で connection 要 素 を 使 って 設 定 します ただし ローカルマシ ンに 接 続 する 場 合 は 設 定 は 不 要 です 表 3.4 connection 要 素 の 属 性 属 性 名 uri user password 説 明 接 続 先 URI ユーザーID パスワード transcode 要 素 内 で property 要 素 を 使 って 入 出 力 プロパティを 設 定 することができます 表 3.5 property 要 素 の 属 性 属 性 名 説 明 name プロパティの 名 前 value プロパティの 値 以 下 の 例 では ローカルホストで 動 作 しているCopper PDFを 使 って docs/manual.htmlか らdocs/manual.pdfを 出 力 します 例 3.81 transcode タスクの 使 用 例 <transcode includes="docs/manual.html" suffix=".pdf"> <connection uri="ctip://localhost:8099/" user="user" password="kappa" /> <property name="input.include" value="**" /> <property name="output.pdf.bookmarks" value="true" /> <property name="output.pdf.hyperlinks" value="true" /> <property name="output.pdf.fonts.policy" value="cid-keyed" /> </transcode> transcode AntタスクはHTTP/RESTによる 接 続 にも 対 応 しています HTTPを 使 う 場 合 は "http://127.0.0.1:8097/" のようにURIを 設 定 してください 3.14 transcode Antタスク 149

3. 開 発 者 ガイド 3.14.3 うまく 動 かない 場 合 (ローカルマシンで 実 行 する 場 合 ) Can't connect to X11... というエラーが 表 示 される JDK 1.4.2では 以 下 のようなエラーが 発 生 することがあります 例 3.82 エラーメッセージの 例 [copper] java.lang.internalerror: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable. [copper] at sun.awt.x11graphicsenvironment.initdisplay (Native Method) [copper] at sun.awt.x11graphicsenvironment.<clinit> (X11GraphicsEnvironment.java:134) [copper] at java.lang.class.forname0(native Method)... 省 略... [copper] at org.apache.tools.ant.launch.launcher.run (Launcher.java:246) [copper] at org.apache.tools.ant.launch.launcher.main (Launcher.java:67) [copper] Transcoded 0 file(s). BUILD FAILED /home/miyabe/workspaces/cssj/cssj/build/release/docs/build.xml:11: java.lang.internalerror: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable. これは Copper PDFが 一 部 でグラフィック 環 境 を 必 要 とする 処 理 を 行 っているため ディスプレイが 接 続 されていない 環 境 で 発 生 するものです 以 下 のように ANT_OPTS 環 境 変 数 でjava.awt.headlessシステムプロパティをtrueにするように 設 定 することで 問 題 が 解 消 されます 例 3.83 java.awt.headlessの 設 定 export ANT_OPTS=-Djava.awt.headless=true ライセンスが 認 証 されない 場 合 出 力 結 果 に ライセンスファイルが 存 在 しないか 期 限 切 れです と 表 示 される 場 合 や 一 部 の 機 能 が 使 用 できない 場 合 は ライセンスキーのインストールか confディレクト リ(license-keyファイルが 置 かれたディレクトリ)のパスを 指 定 する 必 要 があります confディレクトリはcopperタスクのconfigdir 属 性 で 指 定 するか ANT_OPTS 環 境 変 数 に よりjp.cssj.copper.configシステムプロパティで 指 定 することもできます 150 3.14 transcode Antタスク

3. 開 発 者 ガイド 例 3.84 設 定 ディレクトリの 指 定 (ANT_OPTS 環 境 変 数 ) export ANT_OPTS=-Djp.cssj.copper.config=/etc/copper-pdf 例 3.85 設 定 ディレクトリの 指 定 (configdir 属 性 ) <copper includes="docs/manual.html" suffix=".pdf" configfile="conf/profiles/default.properties" configdir="/etc/copper-pdf"> <includeresource pattern="**" /> <property name="output.pdf.bookmarks" value="true" /> <property name="output.pdf.hyperlinks" value="true" /> <property name="output.pdf.fonts.policy" value="cid-keyed" /> </copper> 3.14 transcode Antタスク 151

3. 開 発 者 ガイド 3.15 HTTP/RESTインターフェース 3.15.1 概 要 HTTP/RESTインターフェースはCopper PDF 2.1.0からサポートされた HTTPベースのイ ンターフェースです 高 速 高 機 能 なCTIPに 比 べて 冗 長 なプロトコルですが HTTPを ベースとしているため 普 通 のウェブブラウザやHTTPクライアントライブラリを 利 用 できる 利 点 があります HTTP 通 信 による 処 理 速 度 の 損 失 は 変 換 処 理 の 開 始 終 了 時 に 発 生 するものなので 数 十 ページ 以 上 の 文 書 の 出 力 ではほとんど 問 題 になりません 数 ページ 程 度 の 文 書 を 繰 り 返 し 出 力 する 場 合 は 処 理 速 度 はおおむね70% 程 度 に 低 下 します HTTP/RESTインターフェースはCTIP 2.0と 同 等 の 機 能 を 備 えており 実 際 にJava 版 の CTIP 2.0ドライバは CTIP, HTTP 接 続 の 両 方 で 同 一 のインターフェースを 利 用 するこ とができます このドキュメントでは HTTP/RESTインターフェースの 基 本 的 な 使 用 方 法 だけを 解 説 します HTTP/RESTインターフェースの 完 全 な 仕 様 は 以 下 のアドレスで 公 開 している 仕 様 書 を 参 照 してください http://sourceforge.jp/projects/copper/docs/cti-rest-v1 3.15.2 アクションの 実 行 HTTP/RESTインターフェースにより Copper PDFに 対 して 何 らかの 動 作 (アクション)の 実 行 を 要 求 するためには HTTPのGETまたはPOSTメソッドでクライアントからアク セスします アクションの 種 類 は ファイルパスにより 識 別 されます 処 理 対 象 文 書 や 認 証 情 報 など 必 要 な 情 報 はリクエストパラメータとして 送 ります アクションとファ イルパスの 対 応 と 使 用 可 能 なリクエストパラメータの 表 は 以 下 の 通 りです パス リクエストパラメータ 説 明 /open /info /properties rest.user rest.password rest.timeout rest.httpsession rest.id rest.user rest.password rest.uri rest.id "rest." で 始 ま ら な い パ ラ メータ セッションの 開 始 サーバーの 情 報 (セッションの 開 始 と 終 了 を 兼 ねる) プロパティ 設 定 152 3.15 HTTP/RESTインターフェース

3. 開 発 者 ガイド パス リクエストパラメータ 説 明 /resources /transcode /messages /result /abort rest.id rest.uri rest.mimetype rest.encoding rest.resource rest.notfound "rest." で 始 ま ら な い パ ラ メータ rest.id rest.user rest.password rest.async rest.requestresource "rest." で 始 ま ら な い パ ラ メータ rest.uri rest.mimetype rest.encoding rest.resource rest.main rest.mainuri rest.id rest.wait rest.id rest.uri rest.id rest.mode リソース 送 信 (プロパティ 設 定 を 兼 ねる) ドキュメント 変 換 処 理 (セッションの 開 始 と 終 了 プロパ ティ 設 定 リソース 送 信 を 兼 ねる) メッセージ 受 信 ドキュメント 変 換 結 果 受 信 ドキュメント 変 換 処 理 の 中 断 /reset rest.id リセット /close rest.id セッションの 終 了 例 えばlocalhostの8097ポートでドキュメント 変 換 サーバーが 動 作 している 場 合 変 換 処 理 を 実 行 するには http://localhost:8097/transcode にアクセスします HTTP/RESTインターフェースの 機 能 をフルに 活 用 する 場 合 は openによりセッション を 開 始 し 各 種 操 作 をした 後 closeによりセッションを 終 了 することが 基 本 となります ただし transcodeアクションは 簡 単 な 変 換 処 理 であれば1 回 のリクエストだけで 完 結 で きるようになっています リクエストパラメータは クエリパラメータで 送 る 方 法 POSTメソッドのフォームパラ メータとして 送 る 方 法 (application/x-www-form-urlencoded) そしてmultipart/form-data 形 3.15 HTTP/RESTインターフェース 153

3. 開 発 者 ガイド 式 のファイルとフォームフィールドとして 送 る 方 法 があります (さらに ファイルその ものをリクエストボディとして 送 る 方 法 があります 詳 細 は 仕 様 書 を 参 照 してくださ い) application/x-www-form-urlencoded を 使 用 する 場 合 送 信 できるデータの 最 大 サイズに 制 限 があります(190KB 程 度 ) そのため アプリケーション 側 から 変 換 対 象 のドキュメ ントをCopper PDFに 送 る 場 合 は なるべくmultipart/form-dataの 使 用 を 推 奨 します リクエストパラメータの 意 味 は 次 の 表 の 通 りです パラメータ 名 rest.user rest.password rest.timeout rest.httpsession rest.id rest.uri rest.mimetype rest.encoding rest.resource rest.notfound rest.async rest.requestresource rest.main rest.mainuri rest.wait 説 明 認 証 のためのユーザー 名 です 認 証 のためのパスワードです セッションの 最 小 持 続 時 間 (ミリ 秒 )です trueを 設 定 すると クッキーによるHTTPセッション 使 用 します セッションを 識 別 するIDです クッキーによるHTTPセッション 使 用 する 場 合 は 不 要 です infoアクションではサーバー 情 報 の 識 別 URI resultアクションでは 結 果 の 識 別 URI 他 のアクションでは 次 に 送 るデータの 仮 想 URIを 表 します 次 に 送 るデータのMIME 型 です 次 に 送 るデータのキャラクタ エンコーディングです リソースデータです これはmaltipart/form-dataのファイルとして 送 ることもでき ます リソースデータの 代 わりに このパラメータにtrueを 設 定 すると リソースが 存 在 しないことを 示 します transcodeアクションは 通 常 変 換 結 果 をレスポンスとして 返 しますが このパラ メータにtrueを 設 定 すると 変 換 結 果 をresultアクションにより 得 ることを 前 提 に 非 同 期 的 にドキュメント 変 換 処 理 を 実 行 します trueを 設 定 すると サーバーが 必 要 なリソースをクライアントに 要 求 するようにな ります クライアントはリソースの 送 信 要 求 をmessagesアクションで 確 認 する 必 要 があります 変 換 対 象 のメインドキュメントです これはmaltipart/form-dataのファイルとして 送 ることもできます サーバーに 変 換 対 象 のメインドキュメントを 取 得 させる 場 合 のURIです メッセージの 変 化 があるまでmessagesアクションのレスポンスを 保 留 する 場 合 の 最 大 待 ち 時 間 (ミリ 秒 )です 154 3.15 HTTP/RESTインターフェース

3. 開 発 者 ガイド パラメータ 名 rest.mode 説 明 1であればなるべく 有 効 なデータを 出 力 して 処 理 を 中 断 し 2であればなるべく 直 ちに 処 理 を 中 断 します なお 各 アクションのレスポンスの 詳 細 は 仕 様 書 を 参 照 してください 3.15.3 ウェブブラウザからのアクセス ウェブブラウザからデータの 変 換 を 行 う 場 合 最 も 簡 単 な 方 法 は 以 下 のフォームを HTMLファイルとして 保 存 して (キャラクタ エンコーディングはUTF-8にしてくださ い) ブラウザで 表 示 し 変 換 ボタンを 押 すことです テキストエリアの 内 容 (Hello world!)がpdf 化 されます 例 3.86 フォームからCopper PDFを 使 う <form action="http://localhost:8097/transcode"> <input type="hidden" name="rest.user" value="user"/> <input type="hidden" name="rest.password" value="kappa"/> <textarea name="rest.main"> <html><body>hello world!</body></html> </textarea> <button type="submit"> 変 換 </button> </form> アップロードしたファイルを 変 換 することもできます 例 3.87 アップロードしたファイルを 変 換 <form action="http://localhost:8097/transcode" method="post" enctype="multipart/form-data"> <input type="hidden" name="rest.user" value="user"/> <input type="hidden" name="rest.password" value="kappa"/> <input type="file" name="rest.main" /> <button type="submit"> 変 換 </button> </form> 3.15.4 Ruby (httpclient) 新 しく 開 発 されたRubyインターフェースか 実 行 環 境 としてJRubyを 使 う 場 合 はJava インターフェースを 利 用 した 方 がより 高 速 です Rubyではhttpclientモジュールを 使 うと 簡 単 です 以 下 のサンプルでは ヒアドキュメン トとして 記 述 したHTMLを 変 換 します 3.15 HTTP/RESTインターフェース 155

3. 開 発 者 ガイド 例 3.88 Rubyでドキュメントを 変 換 require 'httpclient' # 変 換 対 象 のHTML data = <<DATA <html> <body> RubyからCopper PDFを 使 う </body> </html> DATA # POSTの 準 備 client = HTTPClient.new postdata = { "rest.user" => "user", "rest.password" => "kappa", "rest.main" => data, # 大 きなデータを 扱 えるようにmultipart/formdataで 送 信 (boundaryは 適 当 な 文 字 列 ) boundary = "3w48588hfwfdwed2332hdiuj2d3jiuhd32" puts client.post_content("http://localhost:8097/transcode", postdata, "content-type" => "multipart/form-data, boundary=#{boundary") 以 下 の 例 では http://print.cssj.jp/ をPDF 化 します 前 の 例 では 大 きなデータをPOSTする ため multipart/form-data を 使 用 しましたが POSTするデータが 小 さい 場 合 は 普 通 の POST(application/x-www-form-urlencoded)で 構 いません パラメータの input.include 画 像 等 の 取 得 のためにアクセスを 許 可 するアドレスのパターンです 例 3.89 Rubyでウェブサイトを 変 換 require 'httpclient' # POSTの 準 備 client = HTTPClient.new postdata = { "rest.user" => "user", "rest.password" => "kappa", "input.include" => "http://*.cssj.jp/**", "rest.mainuri" => "http://print.cssj.jp/", # POSTを 実 行 puts client.post_content("http://localhost:8097/transcode", postdata) 156 3.15 HTTP/RESTインターフェース

3. 開 発 者 ガイド 3.15.5 Python (urllib2, urllib) 新 しく 開 発 されたPythonインターフェースか 実 行 環 境 としてJythonを 使 う 場 合 は Javaインターフェースを 利 用 した 方 がより 高 速 です Pythonではurllib2モジュールを 使 うことができます 以 下 のサンプルでは 三 重 クォー トで 囲 った 文 字 列 リテラルとして 記 述 したHTMLを 変 換 します 例 3.90 Pythonでドキュメントを 変 換 # -*- coding: utf_8 -*- import urllib2 # multipart/form-dataの 出 力 (boundaryは 適 当 な 文 字 列 ) boundary = '3w48588hfwfdwed2332hdiuj2d3jiuhd32' def multipart_formdata(form_dict): disposition = 'Content-Disposition: form-data; name="%s"' lines = [] for k, v in form_dict.iteritems(): lines.append('--' + boundary) lines.append(disposition % k) lines.append('') lines.append(v) lines.append("--" + boundary + "--") lines.append('') value = "\r\n".join(lines) return value # 変 換 対 象 のHTML data = """ <html> <body> PythonからCopper PDFを 使 う </body> </html> """ # POSTの 実 行 params = {'rest.user':'user', 'rest.password':'kappa', 'rest.main':data 3.15 HTTP/RESTインターフェース 157

3. 開 発 者 ガイド url = 'http://localhost:8097/transcode' req = urllib2.request(url) req.add_header("content-type", "multipart/form-data; boundary=" + boundary) data = multipart_formdata(params) f = urllib2.urlopen(req, data) # 結 果 表 示 print f.read() 以 下 の 例 では http://print.cssj.jp/ をPDF 化 します 前 の 例 では 大 きなデータをPOSTする ため multipart/form-data を 使 用 しましたが POSTするデータが 小 さい 場 合 は 普 通 の POST(application/x-www-form-urlencoded)で 構 いません こちらはurllibを 使 っています パラメータの input.include 画 像 等 の 取 得 のためにアクセスを 許 可 するアドレスのパター ンです 例 3.91 Pythonでウェブサイトを 変 換 # -*- coding: utf_8 -*- import urllib url = 'http://localhost:8097/transcode' params = urllib.urlencode({'rest.user':'user', 'rest.password':'kappa', 'input.include':'http://*.cssj.jp/**', 'rest.mainuri':'http://print.cssj.jp/', ) f = urllib.urlopen(url, params) print f.read() 3.15.6 C# (.NET WebClient) C# / VB.NETではRESTインターフェースを 使 用 する 必 要 はなくなりました より 高 速 で 高 機 能 な.NETドライバの 使 用 を 推 奨 します C#では.NETのWebClientを 使 うことができます 以 下 のサンプルでは ヒアドキュメン トとして 記 述 したHTMLを 変 換 します 158 3.15 HTTP/RESTインターフェース

3. 開 発 者 ガイド 例 3.92 C#でドキュメントを 変 換 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Collections.Specialized; namespace cti.net { class Program { static void Main(string[] args) { string data = @" <html> <body> C#からCopper PDFを 使 う </body> </html> "; WebClient client = new WebClient(); NameValueCollection par = new NameValueCollection(); par.add("rest.user", "user"); par.add("rest.password", "kappa"); par.add("rest.main", data); byte[] res = client.uploadvalues ("http://localhost:8097/transcode", par); Console.OpenStandardOutput().Write(res, 0, res.length); client.dispose(); 以 下 の 例 では http://print.cssj.jp/ をPDF 化 します パラメータの input.include 画 像 等 の 取 得 のためにアクセスを 許 可 するアドレスのパターンです この 例 では 変 換 結 果 をストリームに 逐 次 送 り 出 すため メモリを 節 約 することができ 巨 大 なPDFの 出 力 にも 対 応 できます 3.15 HTTP/RESTインターフェース 159

3. 開 発 者 ガイド 例 3.93 C#でウェブサイトを 変 換 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Collections.Specialized; namespace cti.net { class ServerDocument { static void Main(string[] args) { Response.ClearContent(); Response.ContentType = "application/pdf"; WebClient wc = new WebClient(); String uri = "http://localhost:8097/transcode" + // ロー カルマシンのCopper PDF "?rest.user=user" + "&rest.password=kappa" + "&input.include=http://*.cssj.jp/**" + // 画 像 等 への アクセス 許 可 "&rest.mainuri=http://print.cssj.jp/"; // 変 換 対 象 ア ドレス Stream input = wc.openread(uri); Stream output = Console.OpenStandardOutput(); byte[] buff = new byte[4096]; int len; while ((len = input.read(buff, 0, buff.length)) > 0) output.write(buff, 0, len); input.close(); wc.dispose(); 3.15.7 ASP.NET (C#, VisualBasic) C# / VB.NETではRESTインターフェースを 使 用 する 必 要 はなくなりました より 高 速 で 高 機 能 な.NETドライバの 使 用 を 推 奨 します 以 下 の 例 では http://print.cssj.jp/ をPDF 化 します それぞれC#とVisualBasicのプログラム 例 です パラメータの input.include 画 像 等 の 取 得 のためにアクセスを 許 可 するアドレス のパターンです 160 3.15 HTTP/RESTインターフェース

3. 開 発 者 ガイド 例 3.94 ASP.NET(C#) でウェブサイトを 変 換 <%@ Page Language="C#" AutoEventWireup="true" %> <%@ Import Namespace="System.Net" %> <%@ Import Namespace="System.IO" %> <% Response.ClearContent(); Response.ContentType = "application/pdf"; // ファイル 名 String filename = "FILENAME.pdf"; Response.AddHeader("Content-Disposition", "attachment; filename=" + filename); Response.ContentType = "application/pdf"; WebClient wc = new WebClient(); String uri = "http://localhost:8097/transcode" + // ローカルマシ ンのCopper PDF "?rest.user=user" + "&rest.password=kappa" + "&input.include=http://*.cssj.jp/**" + // 画 像 等 へのアクセス 許 可 "&rest.mainuri=http://print.cssj.jp/"; // 変 換 対 象 アドレス Stream input = wc.openread(uri); Stream output = Response.OutputStream; byte[] buff = new byte[4096]; int len; while ((len = input.read(buff, 0, buff.length)) > 0) output.write(buff, 0, len); %> input.close(); wc.dispose(); 例 3.95 ASP.NET(VisualBasic) でウェブサイトを 変 換 <%@ Page Language="VB" %> <%@ Import Namespace="System.Net" %> <%@ Import Namespace="System.IO" %> <% Response.ClearContent() Response.ContentType = "application/pdf" ' ファイル 名 Dim filename As String = "FILENAME.pdf" Response.AddHeader("Content-Disposition", "attachment; filename=" + filename) Response.ContentType = "application/pdf" Dim wc As WebClient = New WebClient() 3.15 HTTP/RESTインターフェース 161

3. 開 発 者 ガイド ' ローカルマシンのCopper PDF Dim uri As String = "http://localhost:8097/transcode" uri &= "?rest.user=user" uri &= "&rest.password=kappa" ' 画 像 等 へのアクセス 許 可 uri &= "&input.include=http://*.cssj.jp/**" ' 変 換 対 象 アドレス uri &= "&rest.mainuri=http://print.cssj.jp/" %> Dim input As Stream = wc.openread(uri) Dim output As Stream = Response.OutputStream Dim buff(4096) As Byte Dim len As Integer len = input.read(buff, 0, buff.length) While (len > 0) output.write(buff, 0, len) len = input.read(buff, 0, buff.length) End While input.close() wc.dispose() 3.15.8 4th Dimension (Internet Commands) 4th Dimension(4D)ではInternet CommandsのTCP/IPコマンドを 使 うことができます 以 下 のサンプルでは BLOBに 格 納 したHTMLを 変 換 します 例 3.96 4Dでドキュメントを 変 換 C_TEXT ($host;$user;$password;$boundary;$sourcetype;$source;$beforecontent;$aftercontent C_LONGINT($port;$length;$err;$status;$socket;$pos) C_BLOB($content;$buffer;$data) C_TIME($doc) `Copper PDFサーバー $host:="localhost" $port:=8097 $user:="user" $password:="kappa" ` 変 換 対 象 HTML $sourcetype:="text/html" $source:="<html><head><title>サンプル</title></head><body>4dから Copper PDFを 使 う </body></html>" TEXT TO BLOB($source;$content) `BLOBに 変 換 ` 結 果 ファイル 名 $resultfile:="result.pdf" 162 3.15 HTTP/RESTインターフェース

3. 開 発 者 ガイド ` 通 信 開 始 $err:=tcp_open ($host;$port;$socket) $err:=tcp_state ($socket;$status) `リクエスト 送 信 $boundary:=string(random)+string(random)+string(random) `マルチパー トの 境 界 (ランダムな 文 字 列 ) $beforecontent:="---"+$boundary+"\r\n" $beforecontent:=$beforecontent+"content-disposition: form-data; name=\"rest.main\"; filename=\"data.html\"\r\n" $beforecontent:=$beforecontent+"content-type: "+$sourcetype+"\r\n\r\n" $aftercontent:="\r\n---"+$boundary+"--\r\n" $length:=length($beforecontent)+blob size($content)+length ($aftercontent) $err:=tcp_send ($socket;"post /transcode? rest.user="+$user+"&rest.password="+$password+" HTTP/1.0\r\n") `keep-aliveとchunkedを 使 わないためHTTP/1.0で 接 続 する $err:=tcp_send ($socket;"host: "+$host+"\r\n") $err:=tcp_send ($socket;"content-length: "+String($length)+"\r\n") $err:=tcp_send ($socket;"content-type: multipart/form-data; boundary=-"+$boundary+"\r\n") $err:=tcp_send ($socket;"\r\n") $err:=tcp_send ($socket;$beforecontent) $err:=tcp_sendblob ($socket;$content) $err:=tcp_send ($socket;$aftercontent) `レスポンス 受 信 Repeat SET BLOB SIZE($buffer;0) $err:=tcp_receiveblob ($socket;$buffer) $err:=tcp_state ($socket;$status) $bufferlen:=blob size($buffer) $datalen:=blob size($data) INSERT IN BLOB($data;$dataLen;$bufferLen) COPY BLOB($buffer;$data;0;$dataLen;$bufferLen) Until (($status=0) ($err#0)) $err:=tcp_state ($socket;$state) $err:=tcp_close ($socket) 3.15 HTTP/RESTインターフェース 163

3. 開 発 者 ガイド `ヘッダの 除 去 $text:=blob to text($data;mac C string ) $pos:=position("\r\n\r\n";$text) DELETE FROM BLOB($data;0;$pos+3) ` 先 頭 から 最 初 の 空 行 までの 間 を 除 去 する `ファイルの 出 力 $doc:=create document($resultfile) CLOSE DOCUMENT($doc) BLOB TO DOCUMENT($resultFile;$data) 以 下 の 例 では http://print.cssj.jp/ をPDF 化 します パラメータの input.include 画 像 等 の 取 得 のためにアクセスを 許 可 するアドレスのパターンです 例 3.97 4Dでウェブサイトを 変 換 C_TEXT ($host;$user;$password;$include;$uri;$query;$resultfile;$text) C_LONGINT($port;$err;$status;$socket;$pos) C_BLOB($content;$buffer;$data) C_TIME($doc) `Copper PDFサーバー $host:="neko" $port:=8097 $user:="user" $password:="localhost" ` 変 換 対 象 アドレス $include:="http://*.cssj.jp/**" $uri:="http://print.cssj.jp/" ` 結 果 ファイル 名 $resultfile:="result.pdf" ` 通 信 開 始 $err:=tcp_open ($host;$port;$socket) $err:=tcp_state ($socket;$status) `リクエスト 送 信 $query:="rest.user="+$user+"&rest.password="+$password+ "&input.include="+$include+"&rest.mainuri="+$uri $err:=tcp_send ($socket;"get /transcode?"+$query+" HTTP/1.0\r\n") `keep-aliveとchunkedを 使 わないためHTTP/1.0で 接 続 する $err:=tcp_send ($socket;"host: "+$host+"\r\n") $err:=tcp_send ($socket;"\r\n") $err:=tcp_send ($socket;$beforecontent) $err:=tcp_sendblob ($socket;$content) $err:=tcp_send ($socket;$aftercontent) 164 3.15 HTTP/RESTインターフェース

3. 開 発 者 ガイド `レスポンス 受 信 Repeat SET BLOB SIZE($buffer;0) $err:=tcp_receiveblob ($socket;$buffer) $err:=tcp_state ($socket;$status) $bufferlen:=blob size($buffer) $datalen:=blob size($data) INSERT IN BLOB($data;$dataLen;$bufferLen) COPY BLOB($buffer;$data;0;$dataLen;$bufferLen) Until (($status=0) ($err#0)) $err:=tcp_state ($socket;$state) $err:=tcp_close ($socket) `ヘッダの 除 去 $text:=blob to text($data;mac C string ) $pos:=position("\r\n\r\n";$text) DELETE FROM BLOB($data;0;$pos+3) ` 先 頭 から 最 初 の 空 行 までの 間 を 除 去 する `ファイルの 出 力 $doc:=create document($resultfile) CLOSE DOCUMENT($doc) BLOB TO DOCUMENT($resultFile;$data) 3.15.9 その 他 のサンプルについて HTTP/RESTインターフェースは さらに 多 くの 種 類 の 開 発 環 境 から 様 々な 方 法 で 利 用 することできます 最 新 情 報 はCopper PDFのサイト(http://copper-pdf.com/)で 提 供 してい ます 3.15 HTTP/RESTインターフェース 165

3. 開 発 者 ガイド 3.16 HTTPクライアント 機 能 Copper PDFには ウェブサーバーから 画 像 スタイルシート 文 書 等 を 取 得 するための HTTPクライアントが 入 っています 公 開 されているウェブコンテンツにアクセスする 場 合 は 特 に 設 定 は 必 要 ありませんが プロクシを 通 してのアクセスや 認 証 (BASICま たはDigest)が 必 要 なウェブサイトヘのアクセスもサポートしています 以 下 の 説 明 では 入 出 力 プロパティの 設 定 例 をJavaで 記 述 しています 他 の 言 語 で 実 装 する 場 合 は 各 プログラミング 言 語 のプロパティ 設 定 関 数 に 書 き 換 えてください 3.16.1 BASIC 認 証 またはDigest 認 証 BASIC 認 証 が 必 要 なウェブサーバーに 接 続 する 場 合 input.http.authentication.n.host [io] input.http.authentication.n.port [io] input.http.authentication.n.user [io] input.http.authentication.n.password [io] にそれぞれ 対 象 のウェブサーバーのホスト 名 またはIPアドレス ポート 番 号 ユーザー 名 パスワードを 設 定 します ポート 番 号 を 省 略 した 場 合 は ウェブサーバーのポート 番 号 は 任 意 となります パスワードを 省 略 した 場 合 は 空 のパスワードが 使 われます ホスト 名 とユーザー 名 を 省 略 することはできません nは0から 始 まる 整 数 で 連 番 にす ることで 複 数 のサイトやレルム( 認 証 領 域 )に 対 応 することができます サーバーに 複 数 のレルムが 存 在 する 場 合 や Digest 認 証 を 行 う 場 合 は 実 際 の 認 証 を 行 う 前 に サーバーから 認 証 情 報 を 取 得 する 必 要 があります input.http.authentication.preemptive [io] にtrueを 設 定 することで サーバー か ら 認 証 情 報 を 取 得 で き る よ う に な り ま す レ ル ム を 明 示 す る 場 合 は input.http.n.authentication.realm [io] にレルム 名 を 設 定 します input.http.n.authentication.schema [io] に BASIC 認 証 (basic) か Digest 認 証 (digest)を 設 定 することで 認 証 方 法 を 限 定 することができます デフォルトの 設 定 で input.http.authentication.preemptive [io] がtrue の 場 合 は 認 証 方 法 が 自 動 判 別 されます 以 下 の 例 ではwww.foo.comとwww.bar.com にそれぞれ 別 のユーザーアカウントで 接 続 し BASIC 認 証 かDigest 認 証 かを 自 動 判 別 します 166 3.16 HTTPクライアント 機 能

3. 開 発 者 ガイド 例 3.98 認 証 の 設 定 session.property("input.http.authentication.preemptive", "true"); session.property("input.http.0.authentication.host", "www.foo.com"); session.property("input.http.0.authentication.user", "foouser"); session.property("input.http.0.authentication.password", "foopass"); session.property("input.http.1.authentication.host", "www.bar.com"); session.property("input.http.1.authentication.user", "baruser"); session.property("input.http.1.authentication.password", "barpass"); 3.16.2 プロクシの 設 定 ウェブブラウザ 等 と 同 様 に HTTP 接 続 のためのプロクシを 設 定 することができます input.http.proxy.host [io] に プロクシ サーバーのホスト 名 またはIPアドレスを 設 定 することにより プロクシを 通 して 接 続 するようになります プロクシ サーバー のデフォルトのポート 番 号 は8080ですが input.http.proxy.port [io] により 任 意 のポート 番 号 を 設 定 することができます 認 証 が 必 要 なプロクシ サーバーを 使 用 する 場 合 input.http.proxy.authentication.user [io] input.http.proxy.authentication.password [io] にそれぞれユーザー 名 とパスワードを 設 定 してください 次 の 例 では 認 証 が 必 要 なプロクシ サーバーproxy.foo.com に "mei", "pass"という ユーザ 名 とパスワードで 接 続 します 例 3.99 プロクシサーバーの 設 定 session.property("input.http.proxy.host", "proxy.foo.com"); session.property("input.http.proxy.authentication.user", "mei"); session.property("input.http.proxy.authentication.password", "pass"); 3.16.3 HTTPヘッダの 送 信 2つで1 組 の 入 出 力 プロパティ input.http.header.n.name [io] input.http.header.n.value [io] 3.16 HTTPクライアント 機 能 167

3. 開 発 者 ガイド でHTTPのヘッダを 設 定 することができます nは0から 始 まる 整 数 で 連 番 にすること で 複 数 のHTTPヘッダを 送 ることができます 次 の 例 では クライアントの 使 用 言 語 を 韓 国 語 ブラウザの 種 類 をInternet Explorer7で あるとウェブサーバーに 申 告 するようにHTTPヘッダを 設 定 しています 例 3.100 HTTPヘッダの 設 定 session.property("input.http.header.0.name", "Accept-Language"); session.property("input.http.header.0.value", "ko"); session.property("input.http.header.1.name", "User-Agent"); session.property("input.http.header.1.value", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"); 3.16.4 参 照 元 (Referer)の 送 信 デフォルトでは 変 換 対 象 の 文 書 のURIがRefererヘッダの 値 として 送 信 されます この 機 能 は input.http.referer [io] をfalseに 設 定 することにより 無 効 化 することができ ます 3.16.5 クッキーの 送 信 Copper PDFのHTTPクライアントには ウェブサーバーからクッキーを 取 得 し 保 存 する 機 能 はありません ただし アプリケーション 側 で 設 定 したクッキーをウェブサーバーに 送 信 する 機 能 があ ります これは クッキーを 使 ったセッション 認 証 を 行 うウェブアプリケーションで Copper PDFを 使 用 する 場 合 に ウェブアプリケーションがユーザーのセッションIDを 知 っていて Copper PDFから 自 分 自 身 のウェブサーバーに 接 続 する 場 合 には 有 効 です クッキーは4つで1 組 となっている input.http.cookie.n.domain [io] input.http.cookie.n.name [io] input.http.cookie.n.value [io] input.http.cookie.n.path [io] という 入 出 力 プロパティで 設 定 します それぞれクッキーのドメイン 名 前 値 パスで す パスを 省 略 した 場 合 はルートパス("/")となります nは0から 始 まる 整 数 で 連 番 にす ることで 複 数 のクッキーを 送 ることができます 次 は Javaサーブレットで 現 在 のクライアントのセッションIDをCopper PDFのHTTPク ライアントに 引 き 継 ぐ 例 です 168 3.16 HTTPクライアント 機 能

3. 開 発 者 ガイド 例 3.101 クッキーの 設 定 String sessionid = request.getsession().getid(); session.property("input.http.cookie.0.domain", "www.foo.com"); session.property("input.http.cookie.0.name", "JSESSIONID"); session.property("input.http.cookie.0.value", sessionid); session.property("input.http.cookie.0.path", "/"); 3.16.6 タイムアウトの 設 定 相 手 先 サーバとの 接 続 に 時 間 がかかる 場 合 あるいは 接 続 後 一 定 時 間 データがやりとり されない 場 合 接 続 を 切 断 してコンテンツの 取 得 をあきらめる(タイムアウトする)よう に 設 定 することができます [2.0.7] デフォルトではタイムアウトしないため ずっと 待 ち 続 けます タイムアウトは input.http.connection.timeout [io] input.http.socket.timeout [io] により 設 定 します 数 値 で 設 定 し 単 位 はms(ミリ 秒 )です 次 の 例 では 接 続 が 確 立 するまで30 秒 以 上 かかった 場 合 または 接 続 語 10 秒 間 データがや りとりされなかった 場 合 にタイムアウトするように 設 定 しています 例 3.102 タイムアウトの 設 定 session.property("input.http.connection.timeout", "30000"); session.property("input.http.socket.timeout", "10000"); 3.16 HTTPクライアント 機 能 169

3. 開 発 者 ガイド 3.17 出 力 制 限 機 能 一 般 に 解 放 するウェブアプリケーション 等 で 極 端 にページ 数 の 大 きな 結 果 あるいは 物 理 的 なサイズが 極 端 に 大 きな 結 果 が 出 力 されてしまうような 文 書 が 入 力 される 可 能 性 がある 場 合 があります このとき 意 図 的 であるかどうかに 関 わらずサーバーに 極 端 に 負 荷 がかけられるような 状 態 に 陥 ることがあります Copper PDFには そういった 危 険 を 防 ぐための 動 作 制 限 の 機 能 があります 動 作 制 限 が 発 生 した 場 合 ドライバは 例 外 を 投 げるか 文 書 変 換 のための 関 数 が 戻 り 値 としてエラーを 返 します その 際 ドライバのエラーハンドラには( 警 告 や 致 命 的 エラー ではなく)エラーが 通 知 されます 3.17.1 ページ 数 の 制 限 出 力 結 果 が 一 定 のページ 数 に 達 した 場 合 に 強 制 的 に 処 理 を 中 断 する 機 能 です output.page-limit [io] に 出 力 する 最 大 ページ 数 を 設 定 してください デフォルト では ページ 数 の 制 限 はありません ページ 数 の 制 限 を 越 えた 場 合 途 中 までのページを 結 果 として 出 力 するか 結 果 を 破 棄 するかどうかを 選 ぶことができます output.page-limit.abort [io] に "normal"を 設 定 すると 途 中 までのページを 結 果 として 出 力 します "force"を 設 定 すると 結 果 を 破 棄 します デフォルトは"force"です ただし 2パス 以 上 の 処 理 を 行 う 場 合 は 最 終 パス 以 外 でページ 数 が 限 界 に 達 すると 結 果 が 破 棄 されます また (PDFではなく) 画 像 として 結 果 を 出 力 する 場 合 は ( 最 終 パス の 場 合 )いずれの 場 合 も 途 中 までページが 出 力 されます 3.17.2 データサイズの 制 限 出 力 結 果 が 一 定 の 物 理 的 なサイズに 達 した 場 合 に 強 制 的 に 処 理 を 中 断 する 機 能 です output.size-limit [io] に 最 大 データサイズをバイト 単 位 で 設 定 してください デ フォルトではデータサイズの 制 限 はありません 170 3.17 出 力 制 限 機 能

4.デザイナーガイド 4.デザイナーガイド 4.1 Copper PDFによる 文 書 のレイアウト Copper PDFはHTMLやCSS 等 ウェブコンテンツの 作 成 で 標 準 となっている 方 法 を 使 用 するため ウェブコンテンツの 作 成 の 知 識 があれば PDFの 作 成 も 同 様 にできるのが 特 徴 です このドキュメントでは Copper PDF 独 自 の 機 能 や 注 意 点 について 解 説 します 4.1.1 Copper PDFで 文 書 をレイアウトするには ドキュメントをレイアウトする 方 法 は 通 常 のウェブアプリケーションの 作 成 と 大 差 あ りません HTMLエディタ 等 を 使 ってHTMLや プログラムで 処 理 するためのテンプ レートを 作 成 し それをプログラムによりPDFに 変 換 するという 手 順 となります Copper PDFによる 出 力 結 果 を 手 軽 に 確 認 するために Copper PDFにはcopper-webappと いうツールが 用 意 されています このツールを 起 動 すると ローカルマシン 上 にある HTMLファイルをウェブベースのツールでPDFに 変 換 することができます 4.1 Copper PDFによる 文 書 のレイアウト 171

4.デザイナーガイド 4.2 入 出 力 プロパティ Copper PDF 独 自 の 機 能 や 一 般 的 なブラウザの 環 境 設 定 やオプションに 相 当 する 部 分 を 設 定 するためには 名 前 と 値 の 組 み 合 わせである 入 出 力 プロパティ を 設 定 します 入 出 力 プロパティの 一 覧 は 資 料 集 の 入 出 力 プロパティ (274ページ)を 参 照 してくださ い 入 出 力 プロパティは プログラマによりプログラムにより 設 定 (65ページ) されるか シ ステム 管 理 者 により デフォルトの 入 出 力 プロパティの 設 定 ファイル (42ページ) により 設 定 されます また 入 出 力 プロパティはHTMLやXML 文 書 中 でjp.cssj.property 処 理 命 令 により 設 定 する こ と も で き ま す た だ し プ ロ グ ラ ム や 設 定 フ ァ イ ル に よ り あ ら か じ め input.property-pi [io] がtrueに 設 定 されている 必 要 があります 次 のように 処 理 命 令 のname 属 性 にプロパティ 名 value 属 性 に 値 を 記 述 してください また 必 ずドキュメ ントの 先 頭 から 最 初 の 要 素 の 間 に 記 述 してください 例 4.1 jp.cssj.property 処 理 命 令 による 入 出 力 プロパティの 設 定 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <?jp.cssj.property name="output.pdf.encryption" value="v2"?> <?jp.cssj.property name="output.pdf.encryption.user-password" value="user"?> <?jp.cssj.property name="output.pdf.encryption.owner-password" value="owner"?> <?jp.cssj.property name="output.pdf.encryption.permissions.print" value="false"?> <!-- 上 記 の 設 定 を 有 効 にするには プログラムか 設 定 ファイルでinput.property-pi が true にされている 必 要 があります --> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title> 暗 号 化 1</title> <style type="text/css"> </style> 172 4.2 入 出 力 プロパティ

4.デザイナーガイド </head> <body> <h1> 暗 号 化 1</h1> <p> この 文 書 のユーザーパスワードは"user" オーナーパスワードは"owner"です 印 刷 が 禁 止 されています </p> </body> </html> なお jp.cssj.property 処 理 命 令 により 設 定 できないプロパティがあります 詳 細 は 資 料 集 (286ページ)を 参 照 してください 4.2 入 出 力 プロパティ 173

4.デザイナーガイド 4.3 対 応 する 入 力 ファイル 4.3.1 HTML/XMLの 処 理 ドキュメントの 判 別 Copper PDFはドキュメントがHTMLかXMLであるかを 以 下 の 情 報 をもとに 判 別 しま す 1. プログラマが 指 定 したドキュメントのMIMEタイプ 2. HTTPのContent-Type ヘッダ 1の 情 報 は 2より 優 先 されます 上 記 の 情 報 以 外 によりCopper PDFがドキュメントの 型 を 判 別 することはありません HTMLとして 判 別 されたドキュメントは <?xml~ で 開 始 していても HTMLとして 認 識 します ただし HTMLと 認 識 されても XMLや XHTMLがサポートしている 名 前 空 間 は 認 識 されます HTMLと 認 識 された 文 書 は ゆるやかに 解 釈 されるため 文 法 ミスが 許 容 されます 一 方 XMLと 認 識 された 文 書 は 厳 密 に 解 釈 されます XHTMLを 記 述 する 場 合 全 ての 要 素 名 と 属 性 名 は 小 文 字 で 記 述 してください 文 法 エラーがあった 場 合 処 理 が 停 止 しま す キャラクタ エンコーディング Copper PDFが 認 識 できるキャラクタ エンコーディングはJava 実 行 環 境 に 依 存 します エンコーディング 名 のリストは Java 実 行 環 境 の サポートされているエンコーディン グ ドキュメント を 参 照 してください XMLドキュメントのキャラクタ エンコーディングは 次 の 優 先 順 位 で 判 別 します 1. プログラマが 指 定 したドキュメントのキャラクタ エンコーディング 2. BOM(Byte Order Mark) 3. XML 宣 言 のencoding 属 性 デフォルトのエンコーディングは XMLの 仕 様 に 従 い UTF-8またはUTF-16が 自 動 判 別 されます HTMLドキュメントのキャラクタ エンコーディングは 次 の 優 先 順 位 で 判 別 します 1. プログラマが 指 定 したドキュメントのキャラクタ エンコーディング 2. BOM(Byte Order Mark) 3. <meta http-equiv="content-type" content="text/html; charset=エンコーディング 名 "> 4. XML 宣 言 のencoding 属 性 5. input.default-encoding [io] によるエンコーディング 174 4.3 対 応 する 入 力 ファイル

4.デザイナーガイド input.default-encoding [io] はデフォルトではJISAutoDetect(ISO-2022-JP, Shift_JIS, EUC_JPの 自 動 判 別 )です Copper PDF 3.0.1 からはデフォルトがJISUniAutoDetect(ISO- 2022-JP, UTF-8, Windows-31J, EUC_JP_Solarisの 自 動 判 別 ) という Copper PDF 独 自 のエ ンコーディング 名 になりました 文 書 情 報 Copper PDFはHTMLのmeta 要 素 から 取 得 した 情 報 を PDFの 文 書 情 報 として 使 用 しま す 文 書 情 報 はHTMLの <meta name=" content=" 名 前 " 要 素 によって 値 "> 設 定 すること ができます ただし TITLEはHTMLのtitle 要 素 の 内 容 も 使 われます 表 4.1 meta 要 素 による 文 書 情 報 の 設 定 名 前 PDFの 属 性 名 説 明 TITLE Title/タイトル 文 書 の 表 題 DESCRIPTION SUBJECT Subject/サブタイトル 文 書 に 内 容 についての 簡 潔 な 説 明 KEYWORDS Keywords/キーワード スペースまたはカンマ 区 切 りで 羅 列 した 文 書 の 内 容 に 関 連 するキーワード AUTHOR Author/ 作 成 者 文 書 の 作 成 者 PRODUCER GENERATOR CREATOR Producer/PDF 変 換 Creator/アプリケーション PDFを 生 成 したプログラム 省 略 した 場 合 はCopper PDFの 名 前 とバージョンが 入 ります HTML 文 書 を 生 成 したプログラム エディタ オーサリン グツールなど な お meta 要 素 の name 属 性 は 大 文 字 小 文 字 を 区 別 し ま せ ん <meta name="author" content=" としても 作 者 名 "> <meta name="author" content=" としても 作 者 名 "> PDF 文 書 に 作 者 名 が 設 定 されます 文 書 情 報 は 入 出 力 プロパティによっても 設 定 することができます[2.0.3] output.meta.n.name [io] output.meta.n.value [io] により 名 前 と 値 を 設 定 することができます nは0から 始 まる 連 番 で 複 数 の 文 書 情 報 を 設 定 することができます この 設 定 は 前 記 のmeta 要 素 で 上 書 きされます 4.3 対 応 する 入 力 ファイル 175

4.デザイナーガイド XSLTスタイルシートの 適 用 XSLT スタイルシートはCSS 同 様 にxml-stylesheet 処 理 命 令 により 適 用 されます xmlstylesheet 処 理 命 令 についての 詳 細 はCSSのxml-stylesheet 処 理 命 令 の 節 を 参 照 してくださ い CSS 同 様 に デ フ ォ ル ト のXSLT ス タ イ ル シ ー ト を 設 定 す る こ と が で き ま す input.xslt.default-stylesheet [io] により 指 定 されたスタイルシートが 最 初 に 適 用 されます input.xslt.default-stylesheet [io] またはxml-stylesheet 処 理 命 令 によって ド キュメントに 複 数 のXSLTスタイルシートが 指 定 されているとき 実 際 に 適 用 するのは 最 初 に 指 定 されたスタイルシートです 他 のスタイルシートは 無 視 されます 4.3.2 画 像 Copper PDFがサポートする 画 像 Copper PDFはJPEG, GIF, PNG, SVG 形 式 の 画 像 を 標 準 でサポートしています 各 画 像 は 通 常 のブラウザ 同 様 にimg, object, embed 要 素 によってドキュメント 中 に 含 めることが できます CSSのbackground-image [css] プロパティ あるいはcontent [css] プロパ ティによっても 画 像 の 表 示 が 可 能 です また 画 像 を 直 接 読 み 込 んでPDFに 変 換 することができます この 場 合 全 体 が 画 像 と なっている1ページだけのPDFが 生 成 されます 他 の 画 像 形 式 の 利 用 より 多 種 多 様 な 画 像 フォーマットを 使 用 する 場 合 はサンマイクロシステムズ 社 により 配 布 されている Java Advanced Imaging Image I/O Tools(JAI-ImageI/O) をCopper PDFを 動 作 させるJava 環 境 に 管 理 者 がインストールする 必 要 があります JAI-ImageI/Oをインス トールすることにより BMP, JPEG 2000, PNM, TIFF, WBMPの 各 画 像 フォーマットが 利 用 可 能 になります また JAI-ImageI/O 以 外 にもJava Image I/Oに 対 応 した 拡 張 ライブ ラリをインストールすることで 利 用 可 能 な 画 像 を 追 加 することができます JAI-ImageI/Oは 画 像 形 式 での 出 力 (187ページ)にも 利 用 することができます[2.0.3] ラスター(ビットマップ/ピクセルマップ) 画 像 GIF / PNG 画 像 GIFおよびPNG 画 像 の 透 明 化 効 果 はPDF 内 でも 有 効 です ただし PDF 1.3 以 前 のバー ジョンのPDFを 出 力 する 場 合 PNG 画 像 の 半 透 明 化 効 果 が 正 確 に 表 現 されず 透 明 不 透 明 だけとなります 176 4.3 対 応 する 入 力 ファイル

4.デザイナーガイド アニメーションGIFの 場 合 最 初 のコマだけが 使 われ アニメーションしません JPEG / JPEG 2000 画 像 JPEG 画 像 は 処 理 を 加 えずに そのままPDFに 含 めることができます 入 出 力 プロパティ output.pdf.jpeg-image [io] にto-flateを 設 定 することで 画 像 を 展 開 してからPDFに 含 むこともできますが PDFのサイズは 大 きくなります JAI-ImageI/Oがインストールされている 場 合 は JPEG 2000にも 同 様 の 処 理 が 適 用 され ます JAI-ImageI/Oがない 場 合 はJPEG 2000は 全 く 利 用 できませんのでご 注 意 ください その 他 の 画 像 JAI-ImageI/O 等 のライブラリで 他 の 画 像 形 式 が 利 用 可 能 な 場 合 それらの 扱 いはGIF /PNG 画 像 に 準 じます 半 透 明 効 果 をサポートする 画 像 形 式 の 場 合 はPDF 内 でも 再 現 さ れ アニメーションする 画 像 では 最 初 のコマだけが 使 われます 画 像 の 解 像 度 レイアウトされるときの 埋 め 込 まれた 画 像 の 大 きさはoutput.resolution [io] によ ります デフォルトでは96dpiです つまりデフォルトでは 例 えばimgタグでheightが100 と 設 定 された 場 合 あるいはimgタグでサイズが 指 定 されずに 元 の 画 像 の 大 きさが100 の 場 合 実 際 のレイアウト 結 果 では75ptの 高 さになります SVG 画 像 SVG 画 像 ファイルの 参 照 Copper PDFはSVG 画 像 ファイル(.svg)またはGZIPで 圧 縮 されたSVG 画 像 ファイル(.svgz) をサポートしています ただし PDF 出 力 の 場 合 SVG 埋 め 込 みフォントと 透 明 度 を 含 むグラデーション 塗 り(linearGradient, radialgradientでstop-opacityの 使 用 ) には 対 応 していません 一 般 的 なブラウザではobject 要 素 によりSVG 画 像 サポートされていますので Copper PDFでも 同 様 の 方 法 を 推 奨 します 例 4.2 object 要 素 によるSVG 画 像 の 埋 め 込 み <object data="image.svg" type="image/svg+xml"> SVGをサポートしないブラウザで 表 示 されるテキスト </object> 4.3 対 応 する 入 力 ファイル 177

4.デザイナーガイド Copper PDFでは SVG 画 像 を 他 の 画 像 と 同 様 に 扱 うことができます img 要 素 を 利 用 す ることができ background-image [css] プロパティにより 背 景 に 設 定 することもでき ます インラインSVG SVGを 別 ファイルに 分 けずに 文 章 中 に 直 接 記 述 することができます グラフ 等 動 的 に 変 化 する 画 像 をドキュメントに 含 める 場 合 に 適 しています インラインSVGは ド キュメント 中 でhttp://www.w3.org/2000/svg と 名 前 空 間 宣 言 したSVGを 記 述 するだけで す 例 4.3 インラインSVG <html> <head> <title>インラインsvgを 含 むドキュメント</title> </head> <body> <p>すぐ 下 に が 表 示 されます </p> <svg:svg xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveaspectratio="none" width="100" height="100" viewbox="0 0 100 100" xml:space="preserve"> <svg:g> <svg:circle cx="50" cy="50" r="45" stroke="blue" fill="white" stroke-width="10"/> </svg:g> </svg:svg> </body> </html> 画 像 を 読 み 込 めない 場 合 画 像 ファイルが 存 在 しない データの 破 損 Copper PDFがサポートしない 画 像 形 式 と いった 原 因 で 画 像 を 読 み 込 めない 場 合 は 通 常 はalt 属 性 で 指 定 された 代 替 テキストが 表 示 されます 入 出 力 プロパティoutput.broken-image [io] の 設 定 により 画 像 の 形 に 印 を 表 示 する(cross)か 空 白 を 空 ける(hidden)ことができます 4.3.3 EPUB 電 子 書 籍 Copper PDFはEPUB 2.0またはEPUB 3.0ファイルを 変 換 することができます[3.1.0] EPUBファイルは コンテンツのMIME 方 が application/epub+zip であるか 拡 張 子 が.epub であることで 判 別 されます 178 4.3 対 応 する 入 力 ファイル

4.デザイナーガイド 4.4 出 力 するファイル 形 式 Copper PDFは 長 らくPDFを 唯 一 の 出 力 形 式 としていましたが Copper PDF 2.0.3から 画 像 の 出 力 をサポートしました output.type [io] にMIMEタイプを 設 定 することにより 出 力 形 式 を 切 り 替 えることが できます デフォルトではPDF("application/pdf")です 4.4.1 PDFの 出 力 Copper PDFはデフォルトの 設 定 でPDFを 出 力 します PDF 出 力 機 能 の 詳 細 はPDFの 機 能 (ページ)を 参 照 してください PDFのバージョンと 機 能 出 力 するPDFのバージョンは output.pdf.version [io] で 設 定 することができます デフォルトではバージョン1.5のPDFが 出 力 されます PDF 1.5 以 降 であれば Copper PDFの 全 ての 機 能 を 利 用 することができます PDF 1.4 以 前 で は 使 用 で き る 機 能 に 制 限 が あ り ま す 詳 細 は 資 料 集 の output.pdf.version [io] の 説 明 を 参 照 してください Copper PDF 2.1.0からは PDF/A-1(ISO 19005-1)に 対 応 したファイルを 出 力 することがで きます (186ページ) 暗 号 化 Copper PDFは 暗 号 化 したPDFを 出 力 することができます パスワードを 設 定 して 暗 号 化 したPDFは パスワードがなければ 閲 覧 不 可 能 になります また 内 容 のコピーなど PDFの 利 用 制 限 を 設 定 するためにも 暗 号 化 が 必 要 で 広 く 配 布 するPDFのためにパス ワードを 設 定 せず 暗 号 化 だけしたPDFを 出 力 することができます 暗 号 化 は output.pdf.encryption [io] の 設 定 で 有 効 となります 暗 号 化 方 式 はv1 とv2の2 種 類 がありますが 通 常 はPDF 1.3 以 降 でサポートされているv2 暗 号 化 を 使 用 し てください 暗 号 強 度 ( 暗 号 化 キーのビット 数 )は output.pdf.encryption.length [io] で 設 定 で きます デフォルトでは 最 も 強 い 暗 号 化 (v1では40, v2では128)がされるため 通 常 は 設 定 の 必 要 はありません 閲 覧 のためのパスワードは output.pdf.encryption.user-password [io] で 設 定 することができます このプロパティを 設 定 しなかった 場 合 は 暗 号 化 だけされて 誰 で 4.4 出 力 するファイル 形 式 179

4.デザイナーガイド も 開 く こ と が で き る PDF が 生 成 さ れ ま す さ ら に output.pdf.encryption.owner-password [io] でAdobe Acrobat 等 で 文 書 の 編 集 を するためのパスワードを 設 定 することができます PDFを 暗 号 化 する 場 合 は パーミッションを 設 定 することができます パーミッション はoutput.pdf.encryption.permissionsで 開 始 する 次 の8 種 類 の 入 出 力 プロパティで 設 定 す ることができます true( 有 効 )またはfalse( 無 効 )で 設 定 してください デフォルトでは 全 て 有 効 です output.pdf.encryption.permissions.print [io] 印 刷 output.pdf.encryption.permissions.modify [io] 内 容 の 変 更 output.pdf.encryption.permissions.copy [io] テキストや 画 像 のコピー output.pdf.encryption.permissions.add [io] 注 釈 の 追 加 変 更 とPDFフォームへの 入 力 次 の4つはv2 暗 号 化 でのみ 有 効 です output.pdf.encryption.permissions.fill [io] PDFフォームへの 入 力 output.pdf.encryption.permissions.extract [io] 障 害 を 持 つユーザーのための 文 書 中 のテキストや 画 像 の 抽 出 output.pdf.encryption.permissions.assemble [io] 文 書 中 に 新 しいページ ブックマーク サムネイル 画 像 を 追 加 する output.pdf.encryption.permissions.print-high [io] 文 書 を 高 画 質 で 印 刷 する なお Copper PDFはPDFフォームをサポートしていないため フォームに 対 する 権 限 は 通 常 は 無 意 味 です パーミッションを 設 定 することにより Adobe Reader 等 のPDF 閲 覧 ソフ トは 設 定 に 沿 った 動 作 をしますが 他 のツール 等 でPDFに 対 する 該 当 する 操 作 が 行 われないことを 保 証 するものではありません 180 4.4 出 力 するファイル 形 式

4.デザイナーガイド ファイルの 添 付 PDF 1.4 以 降 では PDFにファイルを 添 付 することができます ファイルの 添 付 は output.pdf.attachments.n.name [io] output.pdf.attachments.n.description [io] output.pdf.attachments.n.mime-type [io] output.pdf.attachments.n.uri [io] の4つで1 組 のプロパティを 使 います nは0から 始 まる 通 し 番 号 で 複 数 のファイルを 添 付 することができます このうち 必 須 なのはoutput.pdf.attachments.n.uri [io] です あらかじめドライ バにより 送 られてきたファイルのURIか アクセス 可 能 なファイルのURLを 設 定 してく ださい output.pdf.attachments.n.name [io] はファイルの 名 前 です ASCII 文 字 以 外 も 使 用 することができますが 文 字 化 けが 発 生 するおそれがあります 日 本 語 ファイル 名 を 使 用 する 場 合 は output.pdf.attachments.n.name [io] にはなるべくASCII 文 字 を 使 い output.pdf.attachments.n.description [io] に 実 際 のファイル 名 を 設 定 してください output.pdf.attachments.n.mime-type [io] は ファイルのMIMEタイプです PDFの 圧 縮 形 式 Copper PDFのデフォルトの 設 定 では 出 力 されるPDFはなるべくサイズが 小 さくなるよ うに 圧 縮 されます 結 果 出 力 されるPDFはバイナリデータとなります output.pdf.compression [io] の 設 定 により テキスト 形 式 か 圧 縮 されないPDFを 生 成 することができます asciiという 設 定 では PDFを 圧 縮 しますが 出 力 されるPDFは ASCIIテキストになります 若 干 サイズは 大 きくなりますが テキストとしてそのまま コピー&ペーストできるようなファイルができ 上 がります noneではpdfを 全 く 圧 縮 せ ず 描 画 命 令 などがそのままの 形 のテキストで 出 てきます 画 像 はHEX 形 式 となり 非 常 にファイルサイズが 大 きくなりますが 出 力 されたPDFの 内 容 をテキストエディタ 等 で 確 認 するのに 便 利 です PDF 中 の 画 像 の 圧 縮 形 式 容 量 の 大 きなPDFの 場 合 画 像 が 容 量 のほとんどを 占 めていることがよくあります そ のため 画 像 の 圧 縮 形 式 を 適 切 に 設 定 することで PDFのサイズを 節 約 することができ ます 4.4 出 力 するファイル 形 式 181

4.デザイナーガイド デフォルトでは JPEG 画 像 は 加 工 されずにPDF 内 で 使 用 され 他 の 画 像 はFlateDecode 形 式 ( 可 逆 圧 縮 )で 圧 縮 されます 画 像 の 圧 縮 形 式 は output.pdf.image.compression [io] で 指 定 することができま す[2.0.3] デフォルトはflateですが jpegにするとjpegで 圧 縮 します JAI-ImageI/O [io] がインストールされた 環 境 では jpeg2000の 指 定 が 可 能 です 画 像 の 圧 縮 は デフォルト で は JPEG / JPEG2000 に は 適 用 さ れ ま せ ん が output.pdf.jpeg-image [io] を recompressにすると JPEG / JPEG2000を 再 圧 縮 するようになります[2.0.3] (ただしJPEGを JPEGに JPEG2000をJPEG2000に 圧 縮 することはしません JPEGとJPEG2000を 互 いに 変 換 することはします) JPEG / JPEG2000による 再 圧 縮 は 不 可 逆 であり 画 像 を 劣 化 させるためアイコンのよう な 小 さな 画 像 には 適 用 したくないことがあります そのため Copper PDFは 一 定 の 大 き さより 小 さな 画 像 を 常 にFlateDecode 形 式 で 圧 縮 するように 指 定 することができます [2.0.3] 閾 値 はoutput.pdf.image.compression.lossless [io] に 画 像 の 縦 のピク セル 数 と 横 のピクセル 数 を 足 した 値 で 設 定 します デフォルトは200です この 場 合 例 えば 縦 が90ピクセル 横 が110ピクセルの 画 像 はJPEG / JPEG2000に 再 圧 縮 されますが 縦 が80ピクセル 横 が100ピクセルの 画 像 はFlateDecodeで 可 逆 圧 縮 されます ただし 元 の 画 像 がJPEG / JPEG2000で output.pdf.image.compression [io] で 指 定 した 形 式 と 同 じ 場 合 は そのままの 形 式 でPDFに 埋 め 込 みます PDFの 表 示 環 境 のキャラクタ エンコーディング PDF 1.2 以 前 ではフォント 名 PDF 1.6 以 前 では 添 付 ファイル 名 が PDFの 表 示 環 境 の キャラクタ エンコーディングに 依 存 していました 後 のバージョンのPDFではユニ コードを 使 用 するため 特 に 表 示 環 境 のキャラクタ エンコーディングを 気 にする 必 要 はありません 古 い バ ー ジ ョ ン の PDF を 生 成 す る 場 合 は 文 字 化 け を 防 ぐ た め に output.pdf.platform-encoding [io] に 想 定 される 表 示 環 境 のエンコーディングを 設 定 する 必 要 があります デフォルトではMS932(Windows 版 Shift_JIS)が 設 定 されてい るため 日 本 語 環 境 ではおおよそ 問 題 は 起 きません ただし 該 当 する 箇 所 に 設 定 され たエンコーディングがサポートしない 文 字 が 使 われた 場 合 や 設 定 されたエンコー ディング 以 外 の 表 示 環 境 では 文 字 化 けが 発 生 する 可 能 性 があります 作 成 更 新 時 刻 ファイルIDの 設 定 デフォルトでは PDFの 作 成 更 新 時 刻 (CreationDate, ModDate)にはCopper PDFが 動 作 している 環 境 の 時 計 の 現 在 時 刻 が 使 われます また ファイルIDは 乱 数 が 使 用 されま す 作 成 更 新 時 刻 とファイルIDは 明 示 的 に 設 定 することもできます[2.0.9] 182 4.4 出 力 するファイル 形 式

4.デザイナーガイド 作 成 更 新 時 刻 はそれぞれ output.pdf.meta.creation-date [io] output.pdf.meta.mod-date [io] を 設 定 してください 日 付 の 形 式 は"2009-05-22 21:10:14"または"2009-06-04 15:53:02 +09:00" (タイムゾーンを 明 示 する 場 合 )といった 形 式 です ファイルIDは output.pdf.file-id [io] で 設 定 してください これは 必 ず32 桁 固 定 の 16 進 数 で "000067A36902BF8D2A0617B9CD02BCFA" のような 値 です すかし PDFの 前 面 または 背 面 に すかし 画 像 を 出 力 することができます[2.1.8] すかしを 利 用 で きるのは PDF 1.4 以 降 です 同 様 のことは CSSのbackground-image [css] 等 をつかって 実 現 することもできます が PDFの 場 合 は 画 面 では 見 えず 印 刷 時 だけすかしを 表 示 する 機 能 があります output.pdf.watermark.uri [io] に すかしに 使 う 画 像 を 絶 対 アドレスで 指 定 する と 繰 り 返 しパターンとして 画 像 がPDFの 全 ページに 表 示 されるようになります デフォルトでは 背 景 は 背 面 に 表 示 されますが output.pdf.watermark.mode [io] に"front"を 設 定 すると 前 面 に 表 示 されます output.pdf.watermark.opacity [io] により すかしの 不 透 明 度 を 設 定 することが できます 例 えば "0.5"という 値 を 設 定 すると すかしが 半 透 明 になります 以 下 の 出 力 例 は output.pdf.watermark.uri [io] に SVG 画 像 を 指 定 し output.pdf.watermark.mode [io] に"back"を 指 定 しています 4.4 出 力 するファイル 形 式 183

4.デザイナーガイド 図 4.17 背 面 にすかしを 配 置 以 下 の 出 力 例 は output.pdf.watermark.uri [io] に SVG 画 像 を 指 定 し output.pdf.watermark.mode [io] に "front" を 指 定 し output.pdf.watermark.opacity [io] に0.5を 指 定 しています 184 4.4 出 力 するファイル 形 式

4.デザイナーガイド 図 4.18 前 面 にすかしを 配 置 印 刷 時 だけ または 画 面 表 示 だけすかしを 表 示 する output.pdf.watermark.view [io] output.pdf.watermark.print [io] は それぞ れすかしを 画 面 表 示 時 と 印 刷 時 に 表 示 するかどうかを 設 定 するものです デフォルト では 両 方 とも 表 示 しますが 例 えばoutput.pdf.watermark.view [io] に"false"を 設 定 すると 印 刷 時 だけすかしを 表 示 します すかしを 背 面 に 表 示 する 場 合 これらの 設 定 はPDF 1.4 以 前 では 有 効 になりません 4.4 出 力 するファイル 形 式 185

4.デザイナーガイド PDF/A-1bに 準 拠 したファイルの 出 力 PDF/A (ISO 19005-1)はPDFの 長 期 保 存 のための 国 際 規 格 です 出 力 されるPDFの 形 式 に 一 定 の 制 約 を 加 えることにより 様 々なPDF 表 示 ソフトウェアの 互 換 性 の 問 題 が 起 きに くくなります PDF/AにはPDF/A-1bと より 制 約 の 強 いPDF/A-1aがありますが Copper PDFは 現 在 のところPDF/A-1bをサポートします output.pdf.version [io] に"1.4A-1"を 設 定 すると PDF/A-1bに 準 拠 したファイルが 生 成 されます[2.1.0] このモードで 生 成 されるPDFのバージョンは1.4ですが 通 常 のPDF 1.4の 以 下 の 機 能 が 使 用 できなくなります 暗 号 化 添 付 ファイル 半 透 明 表 示 ( 半 透 明 すかし 半 透 明 PNG SVGの 透 明 度 指 定 など) フォントは 常 に 埋 め 込 みフォントだけが 使 用 されます CID-Keyedフォント 外 部 フォ ント コア14フォントも 使 用 できません PDFビューワの 表 示 設 定 [3.0.2/2.1.11] CopperPDFは PDFをビューワで 開 いた 際 の 表 示 (ViewerPreferences)を 設 定 することがで きます ViewerPreferences の 設 定 がどのように 影 響 するかは そのPDFを 開 くビュー ワー(Adobe Readerなど)によります 必 ずしもユーザーの 環 境 で 設 定 通 りに 表 示 され るものではありませんが 組 織 内 での 事 務 処 理 や 印 刷 作 業 のためには 非 常 に 有 効 です ViewerPreferences はoutput.pdf.viewer-preferences. で 始 まる 名 前 の 入 出 力 プロパティによ り 設 定 します たとえば 文 書 を 印 刷 する 場 合 の 印 刷 部 数 をあらかじめ3に 設 定 したい 場 合 は output.pdf.viewer-preferences.num-copies [io] を3に 設 定 します 設 定 の 一 覧 は 資 料 集 の 入 出 力 プロパティ 一 覧 を 参 照 してください PDFの 表 示 の 際 に 実 行 されるJavaScript [3.0.2/2.1.11] output.pdf.open-action.java-script [io] により PDFをビューワで 開 いたタイ ミングで 実 行 されるJavaScriptを 設 定 することができます 例 えば PDFを 開 いた 際 に 印 刷 ダイアログを 表 示 する 場 合 は "print();" を 設 定 します PDF の JavaScript の 仕 様 に つ い て は Adobe 社 が 公 開 し て い る ド キ ュ メ ン ト (http://www.adobe.com/jp/support/products/pdfs/acrojs_j.pdf)を 参 照 してください 186 4.4 出 力 するファイル 形 式

4.デザイナーガイド 4.4.2 画 像 の 出 力 Copper PDFはPDFだけではなく JPEG 等 のラスタ(ピクセルマップ) 画 像 を 出 力 すること ができます [2.0.3] output.type [io] に"image/jpeg"のように 画 像 のMIMEタイプを 指 定 してください 画 像 のエンコーディングにはJava 実 行 環 境 の 機 能 を 利 用 しており 大 抵 のJava 実 行 環 境 ではJPEG("image/jpeg"), PNG("image/png") 画 像 を 出 力 することができます Java 実 行 環 境 に 拡 張 ライブラリを 導 入 することにより 出 力 できる 画 像 を 増 やすことができます 拡 張 方 法 については 他 の 画 像 形 式 の 利 用 を 参 照 してください 画 像 出 力 の 制 約 コアフォント (47ページ) とCID-Keyedフォント (51ページ)を 描 画 できないという 制 約 があります フォントを 正 しく 表 示 するためには 埋 め 込 みフォント (51ページ)を 利 用 する 必 要 があります フォントの 設 定 方 法 はフォントの 種 類 (46ページ)を 参 照 してく ださい 画 像 出 力 の 解 像 度 出 力 される 画 像 の 解 像 度 は output.image.resolution [io] により 設 定 することが できます[2.0.4] 値 の 単 位 はdpiで CSSで1inの 長 さのオブジェクトを 描 画 するときに 並 ぶピクセル 数 です デフォルトの 画 像 の 解 像 度 は96dpiです 1ptは1/72inであるため デ フォルトでは1ptは1ピクセルより 若 干 大 きくなります 1px が 実 際 に 出 力 さ れ る 画 像 の 1 ピ ク セ ル と 一 致 す る よ う に す る た め に は output.resolution [io] と output.image.resolution [io] が 同 じ 値 になるように してください デフォルトでは 両 方 とも96です なお 2.0.8 以 前 ではoutput.image.resolution [io] のデフォルト 値 が72となってお り 解 像 度 が 正 しく 反 映 されないバグがありました 2.0.9 以 降 では ( 以 前 の 設 定 output.resolution [io] / 72) で 換 算 した 値 を 設 定 してください 4.4.3 SVGの 出 力 Copper PDF 3.0.1 か ら SVG の 出 力 を サ ポ ー ト し ま し た output.type [io] に"image/svg+xml"を 設 定 してください SVG 出 力 では 文 字 が 全 てアウトライン 化 されます 出 力 されたSVGはAdobe Illustrator CSなどのドローソフトで 読 み 込 み 加 工 することができます 4.4 出 力 するファイル 形 式 187

4.デザイナーガイド 4.5 一 般 的 なブラウザとの 互 換 性 Copper PDF 3.1.0 以 降 では Internet Explorer 7 互 換 モードは 廃 止 されました 4.5.1 互 換 性 モードの 切 り 替 え Copper PDFは デフォルト( 標 準 モード)ではCSS 2.1に 準 拠 したレンダリングをします が 実 用 上 の 問 題 か ら 一 般 的 な ブ ラ ウ ザ と の 互 換 モ ー ド が 用 意 さ れ て い ま す output.compatible_mode [io] にmsieを 指 定 することにより Copper PDFはInternet Explorer 7に 近 いレイアウトをするように 試 みます ただし ドキュメントに 次 のいずれかのpublic idを 持 つDOCTYPE 宣 言 がある 場 合 は 常 に 通 常 のモードでレイアウトします 互 換 モードはCopper PDFのバージョンアップごとに 一 般 的 なブラウザと 互 換 性 を 持 つ ように 改 善 が 試 みられますが 完 全 な 互 換 性 を 保 証 するものではありません また 制 限 事 項 があり デフォルトのモードより 非 効 率 な 処 理 が 行 われることがあるため 若 干 パフォーマンスが 劣 ります -//W3C//DTD HTML 4.01//EN -//W3C//DTD XHTML 1.0 Transitional//EN -//W3C//DTD XHTML 1.0 Strict//EN -//W3C//DTD XHTML 1.1//EN 4.5.2 標 準 モードとmsieモードの 違 い CSSで 数 字 のクラス 名 が 認 識 される 標 準 モードでは 数 字 のクラス 名 はエラーとなり 無 視 されますが msieモードでは 有 効 で す 188 4.5 一 般 的 なブラウザとの 互 換 性

4.デザイナーガイド 例 4.4 数 字 のクラス 名 を 使 用 する <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title> 数 字 のクラス 名 </title> <style type="text/css">.a { color: Red;.1 { color: Red; </style> </head> <body> <p class="a">このテキストは 赤 字 です</p> <p class="1">msieモードではここも 赤 くなります</p> </body> </html> CSSで':'の 代 わりに'='が 使 用 できる CSSでプロパティ 名 と 値 の 区 切 り 文 字 は':'ですが msieモードでは'='も 使 用 することが できます 例 4.5 ':'の 代 わりに'='を 使 用 する <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>':'の 代 わりに'='を 使 用 する</title> <style type="text/css">.a { color: Red;.B { color=red; </style> </head> <body> <p class="a">このテキストは 赤 字 です</p> <p class="b">msieモードではここも 赤 くなります</p> </body> </html> 4.5 一 般 的 なブラウザとの 互 換 性 189

4.デザイナーガイド CSSの 色 指 定 で#を 省 略 しても 認 識 される msieモードではrgbコードで 色 を 指 定 する 場 合 #を 省 略 できます 例 4.6 色 指 定 で#を 省 略 する <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title> 色 指 定 で#を 省 略 する</title> <style type="text/css">.a { color: #FF0000;.B { color: FF0000; </style> </head> <body> <p class="a">このテキストは 赤 字 です</p> <p class="b">msieモードではここも 赤 くなります</p> </body> </html> CSSの 長 さ 指 定 で 単 位 を 省 略 しても 認 識 される msieモードでは 長 さ 指 定 で 単 位 を 省 略 した 場 合 px 単 位 による 指 定 と 認 識 されます フォームの 前 後 にマージンが 設 定 される msieモードでは デフォルトでフォーム(form 要 素 )の 前 後 に1.12emのマージンが 設 定 さ れます 段 落 と 見 出 しのマージン 上 下 のマージンをなくす 場 合 がある msieモードでは 段 落 または 見 出 しが(p, h1~h6 要 素 )の ページまたはテーブルセルの 先 頭 にある 場 合 前 のマージンがなくなります 同 様 に 末 尾 にある 場 合 は 後 のマージン がなくなります ボックスの 幅 または 高 さに100%が 指 定 された 場 合 外 側 のボックスをはみ 出 さない width [css] またはheight [css] のパーセント 指 定 は 標 準 モードでは 外 側 のボックスの 幅 に 対 して ボックスの 内 側 の 幅 を 指 定 するため 境 界 のあるボックスに 対 して100%を 190 4.5 一 般 的 なブラウザとの 互 換 性

4.デザイナーガイド 指 定 すると ボックスが 外 側 のボックスの 内 部 からはみ 出 します msieモードでは100% 指 定 された 場 合 にボックスの 外 側 の 幅 が 外 側 のボックスの 内 側 の 幅 に 一 致 し 0% 指 定 された 場 合 にボックスの 内 側 の 幅 がゼロになるように 計 算 します 絶 対 位 置 指 定 ボックス 浮 動 ボックスの 大 きさが 内 容 により 拡 張 される 絶 対 位 置 指 定 ボックス 浮 動 ボックスに{overflow: visible;が 指 定 され かつ ボックスの 幅 と 高 さが 設 定 されている 場 合 標 準 モードではボックスのサイズは 常 に 固 定 で 内 容 がはみ 出 した 部 分 はボックスの 境 界 にかかりますが msieモードではボッ クスの 内 容 によってボックスの 幅 と 高 さが 拡 張 されます 通 常 のフローのボックスが 幅 が 指 定 されたボックスにより 拡 張 される 幅 指 定 されたボックスに より 大 きな 幅 のボックスが 含 まれている 場 合 標 準 モードで は 内 部 のボックスは 外 側 のボックスをはみ 出 しますが msieモードでは 外 側 のボック スの 幅 が 内 側 のボックスが 収 まるように 拡 張 されます 幅 がautoの 固 定 レイアウトテーブルが 固 定 レイアウトのまま 処 理 される 標 準 モードでは {table-layout: fixed;が 指 定 されているテーブルであっても width [css] がautoであれば{table-layout: auto; が 指 定 されたのと 同 様 に 扱 われ ます msieモードでは width [css] がautoの 場 合 は テーブルの 外 側 の 幅 を 外 側 のボックスの 内 側 の 幅 に 合 わせて 固 定 し 固 定 レイアウトとして 処 理 します ただし 全 てのカラム に 幅 が 明 示 されている 場 合 は テーブルの 幅 はカラムの 指 定 幅 の 合 計 となります テーブル 行 に 対 するmax-height [css] が 適 用 されない msieモードではテーブル 行 に 対 するmax-height [css] の 設 定 は 無 視 されます ブロックに 対 するline-height [css] による 高 さが 確 保 されない ブロックに 対 してline-height [css] が 指 定 されている 場 合 標 準 モードではブロック 内 の 行 に 対 して 指 定 した 高 さが 必 ず 確 保 されますが msieモードでは 行 内 にインライ ン 画 像 インラインボックスまたはインラインテーブルだけが 含 まれ かつそれらの 高 さがline-height [css] より 小 さい 場 合 は line-height [css] で 指 定 された 高 さは 確 保 されません 全 角 スペースの 間 で 折 り 返 しされない msieモードでは 全 角 スペースが 連 続 している 場 合 その 中 での 折 り 返 しは 発 生 しませ ん また 全 角 スペースにより 外 側 のボックスが 拡 張 されることはありません 4.5 一 般 的 なブラウザとの 互 換 性 191

4.デザイナーガイド input 要 素 の 高 さが 強 制 される msieモードでは input 要 素 で 配 置 されるフォームの 高 さが1.12emに 強 制 されます height [css] は 適 用 されません マージンの 設 定 に 関 わらず 中 央 寄 せされる img, input, applet, object, iframe, tableのalign 属 性 による 中 央 寄 せは 標 準 モードでは 左 右 のマージンをautoにした 状 態 {margin: 0 auto;と 同 等 ですが msieモードでは 左 右 のマージンが 設 定 された 場 合 も 中 央 寄 せになります 例 えば 標 準 モードでは{margin-left: 100pt;が 指 定 されれば 中 央 寄 せが 設 定 された 要 素 でも 常 に 左 から100ptの 位 置 に 配 置 されますが msieモードでは 中 央 寄 せか ら 左 に100ptの1/2(つまり50pt)ずれた 位 置 に 配 置 されます 匿 名 のテーブルセルにより 補 完 されない テーブル 内 で かつテーブルセルの 外 にインライン インラインブロックまたはインラ インテーブルが 配 置 された 場 合 標 準 モードでは 自 動 的 に 上 位 に 匿 名 のセル 要 素 が 挿 入 されますが msieモードでは 全 てテーブルの 前 に 表 示 されます インラインボックスにwidth [css] が 適 用 される 標 準 モードではwidth [css] はインラインボックスには 適 用 されませんが msieモードで はwidth [css] の 設 定 によりインラインボックスの 幅 が 変 化 します また width [css] がauto 以 外 に 設 定 されたインラインボックスはインラインボックスと 同 様 に 配 置 されます すなわち {display: inline;が 指 定 されている 要 素 であっ ても width [css] がauto 以 外 であれば {display: inline-block;が 適 用 されている のと 同 じことになります text-align [css] がブロックの 配 置 にも 適 用 される 標 準 モードではtext-align [css] はテキストの 配 置 にだけ 適 用 されますが msieモード では 内 部 にある 通 常 のフローのボックスの 配 置 にも 適 用 されます これはp 要 素 やdiv 要 素 等 のalign 属 性 と 同 様 の 挙 動 をします 192 4.5 一 般 的 なブラウザとの 互 換 性

4.デザイナーガイド テーブルカラムのプロパティがセルに 継 承 される msieモードではテーブルカラムに 設 定 された 以 下 のプロパティがテーブルセルに 継 承 されます text-align [css] color [css] font-style [css] font-weight [css] font-family [css] font-size [css] text-transform [css] letter-spacing [css] word-spacing [css] 上 記 のプロパティがテーブルセルと テーブル 行 の 両 方 に 設 定 されている 場 合 は テー ブル 行 のプロパティの 方 が 継 承 されます width [css] が 設 定 されたテーブルセルには{white-space: nowrap;が 適 用 されない 標 準 モードでは{white-space: nowrap;が 指 定 された 領 域 ではテキストの 折 り 返 しが 行 われないため width [css] で 幅 が 指 定 されたテーブルセルでは 内 容 が 幅 をはみ 出 すことがありますが msieモードではwidth [css] で 幅 が 指 定 されたテーブルセルでは {white-space: nowrap;が 適 用 されず 内 容 がはみ 出 さないようにテキストの 折 り 返 しが 発 生 します 4.5.3 既 知 の 制 限 事 項 MS 明 朝 系 フォントの 文 字 幅 について MS 明 朝 MSゴシックのフォントを 使 用 する 場 合 一 般 的 なブラウザでは 小 さなフォ ントサイズが 指 定 された 場 合 一 番 近 いビットマップフォントが 使 用 されるため 指 定 された 文 字 サイズと 実 際 に 使 われる 文 字 サイズが 異 なることがありますが Copper PDFでは 全 てアウトラインフォントを 使 用 するため 指 定 したとおりの 文 字 サイズとな ります そのため 文 字 幅 が 一 般 的 なブラウザで 表 示 する 場 合 と 異 なり 文 字 列 の 折 り 返 し 位 置 等 が 異 なることがあります 4.5 一 般 的 なブラウザとの 互 換 性 193

4.デザイナーガイド サポートしていないCSSプロパティ Internet Explorer 独 自 のCSSプロパティで 以 下 のものはサポートしていません accelerator [css] behavior [css] block-progression [css] filter [css] layout-grid [css] layout-grid-* [css] interpolation-mode [css] overflow-* [css] scrollbar-* [css] text-autospace [css] text-justify [css] text-kashida-space [css] text-overflow [css] text-underline-position [css] word-break [css] word-wrap [css] writing-mode [css] zoom [css] 4.5.4 自 動 レイアウトテーブル CSS 2.1 で は 自 動 レ イ ア ウ ト テ ー ブ ル ( デ フ ォ ル ト あ る い は{table-layout: auto;が 指 定 されたテーブル) のレイアウトの 調 整 方 法 について 明 確 な 仕 様 が 定 め られていないため どうしても 一 般 的 なブラウザと 若 干 のレイアウトの 違 いが 生 じま す Copper PDF 2.0.7 以 降 では ほぼ 一 般 的 なブラウザに 近 いレイアウトとなりますが なるべく 以 下 のいずれかの 条 件 の 下 で 使 用 してください {table-layout: fixed;が 指 定 されたーブル)を 使 用 する 自 動 レイアウトテーブルで 横 方 向 に 連 結 されたセルが 存 在 する 場 合 は %による 幅 指 定 をしない 194 4.5 一 般 的 なブラウザとの 互 換 性

4.デザイナーガイド 4.6 XML/HTMLの 拡 張 機 能 4.6.1 見 出 し HTMLのh1~h6 要 素 は 見 出 しとして 特 別 な 意 味 を 持 ちます h1~h6 要 素 の 数 字 は 見 出 しのレベルとして 認 識 され 数 字 が 大 きいものほど 深 い 階 層 にあるものとして 処 理 さ れます また 任 意 の 要 素 にhtml:header="レベル" という 属 性 を 付 与 することで 任 意 の 要 素 をHTMLのh1~h6 要 素 と 同 様 の 意 味 を 持 たせることができます ブックマーク output.pdf.bookmarks [io] をtrueにすると PDFのブックマーク(しおり)が 生 成 され ます ブックマークは 見 出 しのレベルによって 自 動 的 に 階 層 化 されます 現 在 ページのセクション ページの 内 容 として 出 力 済 みの 見 出 しを content [css] プロパティ 内 で-cssj-heading 関 数 によって 生 成 することができます 例 4.7 見 出 しの 表 示 content: -cssj-heading(1) ' - ' -cssj-heading(2); 上 の 例 はレベル1とレベル2の 見 出 しを 表 示 します すなわち ドキュメントの 先 頭 か ら 前 ページの 最 後 までの 間 で 一 番 最 後 のh1とh2の 内 容 を 表 示 します -cssj-heading 関 数 を -cssj-page-content [css] が 設 定 されたページで 使 用 すると ド キュメントの 先 頭 から 現 在 のページの 最 後 までの 間 で 一 番 最 後 の 見 出 しを 表 示 する ことができます これは ノンブルに 見 出 しを 表 示 する 場 合 に 便 利 です 4.6.2 目 次 の 生 成 見 出 しは 目 次 の 生 成 に 利 用 することができます 目 次 を 生 成 するためには Copper PDFが 文 書 全 体 の 見 出 しと 見 出 しのあるページ 番 号 を 収 集 している 必 要 があります 例 4.8 目 次 の 生 成 <cssj:make-toc xmlns:cssj="http://www.cssj.jp/ns/cssjml" counter="page-number" type="decimal"/> ドキュメントの 末 尾 に 目 次 を 生 成 する 場 合 は 目 次 の 生 成 の 開 始 時 点 で 本 文 が 全 て 処 理 されていますが ドキュメントの 先 頭 や 途 中 に 目 次 を 生 成 する 場 合 は 2パス 以 上 の 処 理 が 必 要 です 4.6 XML/HTMLの 拡 張 機 能 195

4.デザイナーガイド counter 属 性 はページ 番 号 を 振 るために 使 用 するページカウンタの 名 前 です typeは ページ 番 号 のタイプです CSSのlist-style-type [css] で 使 われるのと 同 じタイプ 名 が 利 用 可 能 です 生 成 される 目 次 は 次 のようなリストの 形 式 をしています 例 4.9 生 成 される 目 次 の 例 <ul class="cssj-toc"> <li><a href="#cssj-heading-1"><span class="cssj-title">1. タイト ル1</span><span class="cssj-page">1</span></a></li> <li><a href="#cssj-heading-2"><span class="cssj-title">2. タイト ル2</span><span class="cssj-page">5</span></a></li> <li><a href="#cssj-heading-3"><span class="cssj-title">3. タイト ル3</span><span class="cssj-page">8</span></a></li> <ul> <li><a href="#cssj-heading-4"><span class="cssj-title">3.1. タイトル4</span><span class="cssj-page">8</span></a></li> <li><a href="#cssj-heading-5"><span class="cssj-title">3.2. タイトル5</span><span class="cssj-page">9</span></a></li> </ul> </ul> 例 として 以 下 のようなスタイルシートを 使 うことで 目 次 を 整 形 してください 例 4.10 目 次 を 整 形 するCSSの 例 ul.cssj-toc, ul.cssj-toc ul { list-style: none; ul.cssj-toc { margin: 0; ul.cssj-toc ul { margin: 1em; ul.cssj-toc li { margin: 1em 1em 1.5em 0; font-family: sans-serif; height: 0.5em; border-bottom: 1pt dotted; ul.cssj-toc ul li { margin: 0 0 0.5em 1em; 196 4.6 XML/HTMLの 拡 張 機 能

4.デザイナーガイド font-family: serif; ul.cssj-toc span { background-color: White; padding: 0 0.5em; ul.cssj-toc span.cssj-page { position: absolute; right: 0; 4.6.3 リンクとフラグメント フラグメント 識 別 子 によるリンク output.pdf.hyperlinks [io] をtrueに 設 定 すると 文 書 内 のハイパーリンクがPDFに 反 映 されます デフォルトでは ハイパーリンクは 文 書 のURIに 対 する 相 対 アドレスに 変 換 されます ハ イ パ ー リ ン ク の ベ ー ス と な る URI を 文 書 の URI 以 外 に す る 場 合 は output.pdf.hyperlinks.base [io] にURIを 設 定 することで 変 更 することができま す これらの 場 合 PDFファイルの 位 置 が 適 切 でないと リンクは 意 味 を 持 ちません output.pdf.hyperlinks.href [io] にabsoluteを 指 定 すると 文 書 内 リンクを 除 いて 全 て 絶 対 リンクになります この 場 合 PDFファイルの 配 置 場 所 を 変 えてもリンクが 切 れることはありません output.pdf.hyperlinks.fragment [io] をtrueに 設 定 すると ドキュメントの 一 部 に 対 してフラグメント 識 別 子 によるリンクが 可 能 になります フラグメントの 作 成 方 法 は 通 常 のHTMLと 同 じで 任 意 の 要 素 のid 属 性 と a 要 素 のname 属 性 をサポートしてい ます -cssj-page-ref 関 数 Copper PDFは フラグメントが 存 在 するページを 表 示 するために content [css] 内 で 使 用 できる-cssj-page-ref 関 数 を 用 意 しています 4.6 XML/HTMLの 拡 張 機 能 197

4.デザイナーガイド 例 4.11 フラグメントのページ 番 号 の 表 示 @page { counter-increment: page; span:before { content: 'p' -cssj-page-ref(frag, page, decimal, ', p') ' '; a:after { content: ' (' -cssj-page-ref(attr(href), page, decimal, ', ') ' ページ)'; -cssj-page-ref 関 数 の 最 初 の 引 数 は 参 照 するフラグメント 識 別 子 です 2 番 目 の 引 数 は ページ 番 号 の 表 示 に 使 うページカウンタです 3 番 目 の 引 数 は 数 字 のスタイルで list-style-type [css] で 使 われるのと 同 じスタイル 名 です 3 番 目 の 引 数 を 省 略 する とdecimalスタイルで 表 示 されます 4 番 目 の 引 数 (Copper PDF 2.0.2 以 降 )は 同 じ 名 前 のフ ラグメントが 複 数 存 在 する 場 合 複 数 のページ 番 号 を 表 示 するための 区 切 り 記 号 です 4 番 目 の 引 数 を 省 略 すると 最 初 のフラグメントのページ 番 号 だけが 表 示 されます フラグメント 識 別 子 の 部 分 はattr 関 数 を 使 うことができます 上 の 例 のように HTMLの a 要 素 でhref 属 性 の 値 を 使 うと フラグメントへリンクすると 同 時 に フラグメントが 存 在 知 るページの 番 号 を 表 示 することができます なお フラグメント 識 別 子 の 最 初 の'#' はあってもなくても 構 いません -cssj-page-ref 関 数 を 使 うためには 一 般 的 に2パス 以 上 の 処 理 の 処 理 が 必 要 です ドキュ メント 全 体 の 処 理 が 一 度 終 わらないと ドキュメントの 後 の 方 にあるフラグメントの ページが 分 からないためです ドライバで 複 数 の 結 果 を 結 合 する 機 能 を 用 いる 場 合 他 のドキュメントのページ 番 号 を 得 るには -cssj-page-refの 最 初 の 引 数 に'document.html#frag'のようなURIを 指 定 してくだ さい [3.0.14][3.1.0] 4.6.4 注 釈 cssj:annot 属 性 は Copper PDFを 利 用 するアプリケーションに メッセージを 送 るもので す 例 えば 日 付 順 に 内 容 が 並 んでいる 文 書 を 処 理 する 場 合 に cssj:annot 属 性 に 日 付 を 入 れることで ドキュメント 中 でCopper PDFが 現 在 処 理 中 の 部 分 をアプリケーション が 知 ることができます 4.6.5 XML 中 でHTMLの 要 素 と 属 性 を 使 用 する 名 前 空 間 http://www.w3.org/1999/xhtml を 使 用 することで 画 像 (img 要 素 ) テーブルセル の 結 合 (colspan, rowspan 属 性 )といった HTMLの 一 部 の 要 素 や 属 性 はXML 内 でも 使 用 す ることができます 利 用 可 能 な 要 素 や 属 性 のリストは 資 料 集 のXMLの 拡 張 の 章 を 参 照 してください 198 4.6 XML/HTMLの 拡 張 機 能

4.デザイナーガイド 4.6.6 ルビ[3.0.0] ルビはHTMLのruby, rb, rt, rp 要 素 により 表 示 可 能 です rbがルビが 振 られる 部 分 rtがル ビです rpにはルビをサポートしない 環 境 のためのカッコなどを 記 述 します し ょ う じ たろう 東 海 林 太 郎 例 4.12 ルビ(ソース) <ruby> <rb> 東 海 林 </rb> <rp>(</rp> <rt>しょうじ</rt> <rp>)</rp> <rb> 太 郎 </rb> <rp>(</rp> <rt>たろう</rt> <rp>)</rp> </ruby> 図 4.19 ルビ( 表 示 結 果 ) 前 記 の 記 述 は さらに 簡 略 化 して 次 のように 書 くことができます ruby 中 に 直 接 テキス トを 記 述 した 場 合 自 動 的 にrbが 上 に 挿 入 されます またrpを 省 略 した 場 合 ルビをサ ポートしない 環 境 ではカッコは 表 示 されません 例 4.13 簡 単 なルビ(ソース) <ruby> 東 海 林 <rt>しょうじ</rt> 太 郎 <rt>たろう</rt> </ruby> ルビは 本 文 の 半 分 のサイズで 表 示 されます また ルビのある 行 ではルビの 配 置 のため に 行 間 が 拡 張 されます ルビのために 拡 張 される 行 幅 は ruby 要 素 のline-height [css] によって 決 まります 明 示 しなければ 横 書 きでは1.414( 白 銀 比 ) 縦 書 きでは1.618( 黄 金 比 )という 値 になり ます 行 幅 を 一 定 にするためには 本 文 のline-height [css] をこれより 大 きくとって あらかじめ 行 幅 を 確 保 しておいてください あるいは 次 のようにruby 要 素 に 対 する line-height [css] を 明 示 して 行 幅 に 合 わせてください 4.6 XML/HTMLの 拡 張 機 能 199

4.デザイナーガイド 例 4.14 ルビの 幅 を 行 幅 に 合 わせるCSS body { writing-mode: vertical-rl; line-height: 1.5; ruby { line-height: 1.5; 200 4.6 XML/HTMLの 拡 張 機 能

4.デザイナーガイド 4.7 CSSによるドキュメントのレイアウト Copper PDFはHTMLとXMLをCSSによってスタイル 付 けすることができます Copper PDFは CSS Level 2 Revision 1 に 準 拠 しています Copper PDFがサポートする CSSプロパティの 一 覧 は 資 料 集 を 参 照 してください 4.7.1 スタイルシートの 型 Copper PDFは 特 に 型 が 指 定 されていないスタイルシートをCSS(MIME 型 text/css)とし て 認 識 します Content-Style-Type ヘッダ (HTML 中 では <meta http-equiv="content-style- Type" content="... といった 記 述 ) やstyle 要 素 のtype 属 性 等 によってtext/css 以 外 がスタイ ルシートの 型 として 指 定 されている 場 合 は スタイルシートをCSSとして 認 識 しませ ん 4.7.2 メディアタイプ style 要 素 のmedia 属 性 あるいはCSSの@media 指 示 子 等 でスタイルシートが 適 用 される メディアタイプが 限 定 されている 場 合 通 常 Copper PDFは 印 刷 メディア 向 けのスタイ ルだけを 適 用 します すなわち Copper PDFのメディアタイプはall print paged visual bitmap staticのいずれかです な お Copper PDF の ユ ー ザ ー エ ー ジ ェ ン ト の メ デ ィ ア タ イ プ は output.media_types [io] 入 出 力 プロパティによって 変 更 することができます 適 用 するCSS 2.1のメディアタイプ 名 またはメディアグループ 名 を 列 挙 してください 例 え ば ブラウザの 画 面 表 示 用 のスタイルを 適 用 する 場 合 は"all visual bitmap static screen continuous"を 設 定 してください 4.7.3 ドキュメント 中 にスタイルシートを 記 述 する ドキュメント 中 にスタイルおよびスタイルシートを 記 述 する 方 法 は 以 下 の3 通 りがあり ます 1. HTMLのstyle 属 性 2. HTMLのstyle 要 素 3. jp.cssj.stylesheet 処 理 命 令 HTMLのstyle 属 性 style 属 性 により 各 要 素 に 直 接 スタイルを 指 定 する 方 法 です style 属 性 には 適 用 したい CSSのプロパティを 記 述 してください 4.7 CSSによるドキュメントのレイアウト 201

4.デザイナーガイド 例 4.15 style 属 性 によるスタイルの 指 定 (ソース) <html> <body style="border: 1px Black dashed;"> <h1 style="font-style: italic;"> 題 名 </h1> <p style="text-decoration: underline;"> 本 文 <span style="font-size: x-large;"> 大 きなテキスト</span> 本 文 </p> </body> </html> 上 記 の 例 は 以 下 のように 表 示 されます 例 4.16 style 属 性 によるスタイルの 指 定 ( 表 示 結 果 ) 題 名 本 文 大 きなテキスト 本 文 style 要 素 はHTMLだけではなく XML 文 書 内 でも 利 用 可 能 です ただし style 要 素 が 名 前 空 間 "http://www.w3.org/1999/xhtml" に 属 するように 名 前 空 間 宣 言 を 行 ってください 例 4.17 style 属 性 によるスタイルの 指 定 (XML) <?xml version="1.0"> <body xmlns:html="http://www.w3.org/1999/xhtml" html:style="border: 1px Black dashed;"> <h1 html:style="font-style: italic;"> 題 名 </h1> <p html:style="text-decoration: underline;"> 本 文 <span html:style="font-size: x-large;"> 大 きなテキスト</span> 本 文 </p> </body> HTMLのstyle 要 素 一 般 的 なブラウザと 同 じくstyle 要 素 内 にスタイルシートを 記 述 することができます 例 4.18 style 要 素 によるスタイルシートの 記 述 <html> <head> <style type="text/css" media="print"> body { border: 1px Black dashed; h1 { font-style: italic; p { text-decoration: underline; 202 4.7 CSSによるドキュメントのレイアウト

4.デザイナーガイド span { font-size: x-large; </style> </head> <body> <h1> 題 名 </h1> <p> 本 文 <span> 大 きなテキスト</span> 本 文 </p> </body> </html> style 要 素 はなるべくhead 要 素 内 に 記 述 してください Copper PDFは 他 の 場 所 のstyle 要 素 も 認 識 しますが ドキュメント 中 でstyle 要 素 が 現 れる 以 前 の 部 分 には 記 述 されたスタ イルが 適 用 されなくなります また XMLドキュメント 中 ではstyle 要 素 によるスタイル 指 定 は 行 わず 次 に 説 明 する jp.cssj.stylesheet 処 理 命 令 を 使 用 するか あるいは 一 般 的 なブラウザでもサポートされて いるxml-stylesheet 処 理 命 令 を 使 用 してください jp.cssj.stylesheet 処 理 命 令 jp.cssj.stylesheet 処 理 命 令 はHTMLのstyle 要 素 に 相 当 する 機 能 を 処 理 命 令 (<?で 始 まり?> で 終 わるHTMLやXML 中 の 特 別 な 記 述 ) によって 実 現 したものです HTML, XMLの 両 方 のドキュメントの 先 頭 で 使 用 することができます style 要 素 のtype, media 属 性 に 相 当 する 部 分 はHTMLの 属 性 と 同 様 の 形 式 で 記 述 し スタ イルシートは'[]'で 囲 みます 例 4.19 jp.cssj.stylesheet 処 理 命 令 によるスタイルシート 記 述 <?jp.cssj.stylesheet type="text/css" media="print" [ body { border: 1px Black dashed; h1 { font-style: italic; p { text-decoration: underline; 4.7 CSSによるドキュメントのレイアウト 203

4.デザイナーガイド span { font-size: x-large; ]?> <html> <body> <h1> 題 名 </h1> <p> 本 文 <span> 大 きなテキスト</span> 本 文 </p> </body> </html> 4.7.4 外 部 のCSSの 使 用 ドキュメントと 外 部 のスタイルシートを 結 びつける 方 法 は 以 下 の3 通 りがあります 1. HTMLのlink 要 素 2. CSSの@import 指 示 子 3. xml-stylesheet 処 理 命 令 HTMLのlink 要 素 一 般 的 なブラウザと 同 様 に link 要 素 によってスタイルシートをドキュメントに 関 連 付 けることができます 例 4.20 linkタグによるスタイルシートの 指 定 <link rel="stylesheet" type="text/css" media="print" href="スタイル シートのURL"> rel 属 性 にキーワードalternateを 加 えることで 1つのドキュメントに 対 して 複 数 の 代 替 スタイルシートを 用 意 することができます title 属 性 は 代 替 スタイルシートの 名 前 で す 例 4.21 alternateスタイル <link rel="alternate stylesheet" title="a" type="text/css" media="print" href="a.css"> <link rel="alternate stylesheet" title="b" type="text/css" media="print" href="b.css"> 代 替 スタイルシートは 通 常 は 適 用 されませんが input.stylesheet.titles [io] に 代 替 スタイルシートのtitleを 設 定 することで 適 用 するスタイルシートを 選 択 すること ができます CSSの@import 指 示 子 これは HTMLのstyle 要 素 とCSSの@importを 組 み 合 わせる 方 法 です 204 4.7 CSSによるドキュメントのレイアウト

4.デザイナーガイド 例 4.22 @import 指 示 子 によるスタイルシートの 指 定 <style type="text/css" media="print"> @import url(スタイルシートのurl); </style> HTMLのstyle 要 素 の 代 わりに jp.cssj.stylesheet 処 理 命 令 を 使 うこともできます 例 4.23 @import 指 示 子 によるスタイルシートの 指 定 (jp.cssj.stylesheet 処 理 命 令 ) <?jp.cssj.stylesheet type="text/css" media="print" [ @import url(スタイルシートのurl); ]?> xml-stylesheet 処 理 命 令 xml-stylesheet 処 理 命 令 を 使 う 方 法 は 一 般 的 なブラウザでXMLとスタイルシートを 結 びつけるために 広 くサポートされている 方 法 です スタイルシートを 適 用 したいドキュメントの 冒 頭 で 以 下 のように 記 述 してください 例 4.24 xml-stylesheet 処 理 命 令 によるスタイルシートの 指 定 <?xml-stylesheet type="text/css" media="print" href="スタイルシートの URL"?> alternate 属 性 はlink 要 素 のrel 属 性 に 対 するalternateの 指 定 に 相 当 するものです xmlstylesheet 処 理 命 令 でalternate="yes"を 指 定 することは link 要 素 にrel="alternate stylesheet" を 設 定 するのと 同 じ 意 味 です 例 4.25 xml-stylesheet 処 理 命 令 による 代 替 スタイルシート <?xml-stylesheet alternate="yes" title="a" type="text/css" media="print" href="a.css"?> <?xml-stylesheet alternate="yes" title="b" type="text/css" media="print" href="b.css"?> xml-stylesheetのtype 属 性 にはCSSだけでなくXSLTスタイルシートを 指 定 することもで きます この 場 合 type 属 性 にtext/xslを 設 定 し href 属 性 にはXSLTファイルの 指 定 して ください 4.7.5 デフォルトのスタイルシート Copper PDFでは ドキュメント 内 の 記 述 に 関 係 なく 特 定 のスタイルシートを 適 用 する 機 能 が 用 意 されています input.default-stylesheet [io] 入 出 力 プロパティで 指 定 されたスタイルシートが 最 初 に 適 用 されます 4.7 CSSによるドキュメントのレイアウト 205

4.デザイナーガイド 4.7.6 長 さの 単 位 CSSでは 絶 対 単 位 としてmm, cm, in, pt, pcが 使 われます 各 絶 対 単 位 は Copper PDFは CSSの 仕 様 どおり 次 の 一 定 の 長 さでレイアウトします PDFではptが 長 さの 単 位 の 基 準 となり Copper PDFでも 内 部 的 な 単 位 としてptを 使 用 しています 以 下 は 各 単 位 の 関 係 です mm cm in pt pc 1mm = 1/25.4in 2.835pt 1cm = 10mm 28.35pt 1in = 72pt = 25.4mm 1pt = 1/72in 0.353mm 1pc = 1/6in = 12pt 4.233mm 相 対 単 位 としてem, ex, pxがあり これは 状 況 によって 変 化 します em, exはそれぞれフォントの 高 さとxの 高 さを 基 準 とした 単 位 です 正 確 には 文 書 中 の 基 準 となる 位 置 で 利 用 可 能 なフォントの 高 さの 最 大 値 と xの 高 さの 最 大 値 を 基 準 とし ます xという 文 字 が 存 在 しないフォントでは exはxの 高 さではない 適 当 な 高 さ と なります pxは output.resolution [io] で 設 定 される 解 像 度 が 基 準 となります デフォルトで は96dpiで この 状 況 では1pt 1.33pxとなり 1pxは1ptより 若 干 小 さくなります この 値 は 一 般 的 なブラウザに 合 わせたものです ラスタ 画 像 として 結 果 を 出 力 する 場 合 デフォルトでは 出 力 結 果 の1ピクセルは 常 に CSSの1pxに 一 致 します 詳 細 は 画 像 の 出 力 (187ページ)を 参 照 してください 206 4.7 CSSによるドキュメントのレイアウト

4.デザイナーガイド 4.8 CSSの 拡 張 機 能 4.8.1 名 前 空 間 Copper PDFはCSSの 名 前 空 間 のための 拡 張 機 能 (CSS Namespace Enhancements) をサ ポートしており 複 数 の 名 前 空 間 が 混 在 するXMLをスタイル 付 けすることができます CSS ス タ イ ル シ ー ト 中 で 名 前 空 間 の 接 頭 辞 (prefix) と URI を 指 定 す る た め に は @namespace 指 示 子 を 使 って 以 下 のように 宣 言 してください 例 4.26 名 前 空 間 の 宣 言 /* デフォルトの 名 前 空 間 のURIをhttp://www.w3.org/1999/xhtmlとする */ @namespace "http://www.w3.org/1999/xhtml"; /* 接 頭 辞 rdfのuriをhttp://www.w3.org/1999/02/22-rdf-syntax-ns#とする */ @namespace rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#"; なお 互 換 性 のためにURIの 部 分 はurl(http://www.w3.org/1999/xhtml) という 書 き 方 も 許 さ れています スタイルシートの 選 択 子 (selector)で 接 頭 辞 を 使 う 場 合 は ' 'で 区 切 ります (':'でないこと に 注 意 してください ) 例 4.27 接 頭 辞 を 含 む 選 択 子 /* <pdf:description> 要 素 のスタイルを 指 定 する */ rdf Description { display: block; /* ref:about 属 性 がhttp://foo.com/barであるitem 要 素 のスタイルを 指 定 する */ item[rdf about=http://foo.com/bar] { color: Red; 選 択 子 の 記 述 方 法 と 意 味 は 次 のとおりです prefix ELEMENT prefixが 指 す 名 前 空 間 に 属 するELEMENT ELEMENT どの 名 前 空 間 にも 属 さないELEMENT * ELEMENT 任 意 の 名 前 空 間 にも 属 すか どの 名 前 空 間 にも 属 さないELEMENT ELEMENT デフォルトの 名 前 空 間 に 属 するELEMENT 4.8 CSSの 拡 張 機 能 207

4.デザイナーガイド 4.8.2 ページカウンタ Copper PDFは ページの 番 号 付 けのためにページの 生 成 ごとに 処 理 されるページカウ ン タ を 用 意 し て い ま す ペ ー ジ カ ウ ン タ は 以 下 の よ う に@page ル ー ル 内 の counter-increment [css] プロパティにより 宣 言 します 例 4.28 ページカウンタ @page { counter-increment: page; ページカウンタの 処 理 は ページの 内 容 が 処 理 される 直 前 に 行 われます また ページ カウンタは 通 常 のカウンタと 同 様 に content [css] プロパティ 内 でcounter 関 数 により 参 照 可 能 です 従 って 上 記 の 宣 言 を 行 った 場 合 最 初 のページで{content: counter (page); という 宣 言 が 処 理 されるとき 1が 出 力 されます 途 中 でページカウンタをリセットする 場 合 ( 例 えば 目 次 が 終 わった 後 本 文 で 改 めて 番 号 を 振 りなおすなど) は 通 常 のカウンタと 同 様 にcounter-reset [css] を 使 うことが できます 例 えば ある 要 素 が 表 示 されるページでpageという 名 前 のカウンタを1に 設 定 しなおす 場 合 は その 要 素 で{counter-reset: page 1; と 宣 言 します 4.8.3 全 角 数 字 と 漢 数 字 による 箇 条 書 き 番 号 Copper PDFは 箇 条 書 きの 先 頭 に 付 けるマーカー 文 字 の 形 式 を 拡 張 しています list-style-type [css] で 次 のキーワードを 利 用 可 能 です -cssj-full-width-decimal[3.0.0] マーカーに 全 角 数 字 を 使 います -cssj-cjk-decimal[3.0.0] マーカーに 位 取 り 漢 数 字 を 使 います -cssj-decimal-full-width[2.1.2] -cssj-full-width-decimalと 同 じです 208 4.8 CSSの 拡 張 機 能

4.デザイナーガイド 例 4.29 マーカーの 形 式 (ソース) <html> <head> <style type="text/css"> #a { list-style-type: -cssj-full-width-decimal; #b { list-style-type: -cssj-cjk-decimal; </style> </head> <body> <ol id="a"> <li> 田 作 り</li> <li> 黒 豆 </li> <li> 栗 きんとん</li> </ol> <ol id="b"> <li>かまぼこ</li> <li> 伊 達 巻 </li> <li> 数 の 子 </li> </ol> </body> </html> 例 4.30 マーカーの 形 式 ( 表 示 結 果 ) 1. 田 作 り 2. 黒 豆 3. 栗 きんとん 一 かまぼこ 二 伊 達 巻 三 数 の 子 content [css] のcounter 関 数 でも 同 じキーワードを 使 うことができます 4.8 CSSの 拡 張 機 能 209

4.デザイナーガイド 1 田 作 り 2 黒 豆 3 栗 きんとん かまぼこ 一 伊 達 巻 二 数 の 子 三 例 4.31 counterの 形 式 (ソース) <html> <head> <style type="text/css"> #a:before { counter-increment: a; content: counter(a, -cssj-full-width-decimal); #b:after { counter-increment: b; content: counter(b, -cssj-cjk-decimal); </style> </head> <body> <div id="a"> 田 作 り</div> <div id="a"> 黒 豆 </div> <div id="a"> 栗 きんとん</div> <div id="b">かまぼこ</div> <div id="b"> 伊 達 巻 </div> <div id="b"> 数 の 子 </div> </body> </html> 例 4.32 counterの 形 式 ( 表 示 結 果 ) 4.8.4 禁 則 処 理 行 頭 禁 則 文 字 ( 直 前 での 折 り 返 しをしない 文 字 )は 全 角 スペースと 次 の 文 字 です ~ ヽヾゝゞ々ーぁぃぅぇぉっゃゅょゎァィゥェォッャュョヮヵヶ, ) ]» さらに UnicodeのEND_PUNCTUATION ( 閉 じ 括 弧 類 ) OTHER_PUNCTUATION (そ の 他 の 括 弧 類 ) MODIFIER_LETTER( 修 飾 文 字 ) MODIFIER_SYMBOL( 修 飾 記 号 )が 行 頭 禁 則 文 字 とされます 行 末 禁 則 文 字 ( 直 後 での 折 り 返 しをしない 文 字 )は 次 の 文 字 です ( [ { «さらに UnicodeのSTART_PUNCTUATION ( 開 き 括 弧 類 )が 行 末 禁 則 文 字 とされます 210 4.8 CSSの 拡 張 機 能

4.デザイナーガイド 半 角 英 数 字 の 間 でも 折 り 返 しが 禁 止 されます ただし 半 角 スペースと 次 の 文 字 の 間 では 折 り 返 しされます -!? また 禁 則 処 理 により 折 り 返 しをできない 区 間 は48 文 字 を 超 えることはできません (Copper PDF 3.0.0からは この 仕 様 はなくなりました 次 のword-wrap [css] を 使 ってく ださい) word-wrap[3.0.0] word-wrap [css] はCSS3 Text の 先 行 実 装 です 仕 様 は 次 のとおりです 値 初 期 値 適 用 対 象 値 の 継 承 normal break-word normal すべて する break-wordを 設 定 すると 内 容 が 行 幅 の 限 界 をはみ 出 さないように 必 要 に 応 じて 禁 則 処 理 されている 部 分 での 折 り 返 しをします 例 4.33 word-wrapの 使 用 例 (ソース) <html> <head> <style type="text/css"> div { width: 6ex; border: 1pt solid Red; #a { word-wrap: normal; 4.8 CSSの 拡 張 機 能 211

4.デザイナーガイド #b { word-wrap: break-word; </style> </head> <body> <div id="a">distance lends enchantment to the view.</div> <div id="b">distance lends enchantment to the view.</div> </body> </html> Distance lends enchantment to the view. Distan ce lends enchan tment to the view. 例 4.34 word-wrapの 使 用 例 ( 表 示 結 果 ) 禁 則 文 字 を 新 た に 追 加 除 外 す る た め に -cssj-no-break-characters [css], -cssj-break-characters [css] という 独 自 CSSプロパティを 用 意 しています -cssj-no-break-characters[3.0.6] 値 初 期 値 適 用 対 象 値 の 継 承 none <string>{1,2 none すべて する 禁 則 文 字 を 追 加 します 1つめの<string>は 行 頭 禁 則 文 字 2つめの<string> 行 末 禁 則 文 字 を 指 定 します <string>が1つだけの 場 合 は 行 頭 禁 則 文 字 だけが 追 加 されます 例 えば 次 の 文 章 があるとします 212 4.8 CSSの 拡 張 機 能

4.デザイナーガイド 今 日 の 相 場 は1 $がロンドンで 98 円 55 銭 - 先 月 と 比 べて2 ハ ーセント 上 昇 し ま し た 例 4.35 -cssj-no-break-characters 適 用 前 (ソース) <div style="border:1px solid; width: 7em;"> 今 日 の 相 場 は1$がロンドンで98 円 55 銭 - 先 月 と 比 べて2ハ ーセント 上 昇 しました </div> 例 4.36 -cssj-no-break-characters 適 用 前 ( 表 示 結 果 ) 'ハ ーセント'と'$'を 行 頭 に 表 示 させたくなく '-'を 行 末 に 表 示 させたくないという 場 合 は 次 の ように 指 定 してください 今 日 の 相 場 は 1$がロンドン で98 円 55 銭 - 先 月 と 比 べて 2ハ ーセント 上 昇 しまし た 例 4.37 -cssj-no-break-characters 適 用 後 (ソース) <div style="border:1px solid; width: 7em; -cssj-no-breakcharacters: 'ハ ーセント$' '-';"> 今 日 の 相 場 は1$がロンドンで98 円 55 銭 - 先 月 と 比 べて2ハ ーセント 上 昇 しました </div> 例 4.38 -cssj-no-break-characters 適 用 後 ( 表 示 結 果 ) -cssj-break-characters[3.0.6] 値 初 期 値 適 用 対 象 値 の 継 承 none <string>{1,2 none すべて する 禁 則 文 字 を 除 外 します 1つめの<string>は 行 頭 禁 則 文 字 2つめの<string> 行 末 禁 則 文 字 を 指 定 します <string>が1つだけの 場 合 は 行 頭 禁 則 文 字 だけが 除 外 されます 例 えば Copper PDFは 次 のように 拗 音 が 行 頭 に 来 ないように 調 整 します 4.8 CSSの 拡 張 機 能 213

4.デザイナーガイド 例 4.39 -cssj-break-characters 適 用 前 (ソース) <div style="border:1px solid; width: 10em;"> トロメライ ロマチックシューマン 作 曲 猫 は 口 を 拭 いて 済 まして 云 いました </div> 例 4.40 -cssj-break-characters 適 用 前 ( 表 示 結 果 ) ト ロ メ ラ イ ロ マ チックシューマン 作 曲 猫 は 口 を 拭 いて 済 まして 云 いました しかし 実 際 に 書 籍 は 拗 音 を 行 頭 禁 則 しないことが 多 いため それに 従 うには 次 のよう にします 例 4.41 -cssj-break-characters 適 用 後 (ソース) <div style="border:1px solid; width: 10em; -cssj-break-characters: 'ァ ィ ゥ ェ ォ ッ ャ ュ ョ ヮ ヵ ヶ ぁ ぃ ぅ ぇ ぉ っ ゃ ゅ ょ ゎ ゕ ゖ ㇰ ㇱ ㇳ ㇲ ㇳ ㇴ ㇵ ㇶ ㇷ ㇸ ㇹ ㇺ ㇻ ㇼ ㇽ ㇾ ㇿ ';"> トロメライ ロマチックシューマン 作 曲 猫 は 口 を 拭 いて 済 まして 云 いました </div> 例 4.42 -cssj-break-characters 適 用 後 ( 表 示 結 果 ) トロメライ ロマチ ッ ク シ ュ ー マ ン 作 曲 猫 は 口 を 拭 いて 済 まして 云 いました 4.8.5 圏 点 [3.0.4] 主 に 日 本 語 の 文 章 の 一 部 を 強 調 するために 使 われる 圏 点 を 打 つことができます 圏 点 の た め に は CSS3 Text の 先 行 実 装 で あ る -cssj-text-emphasis-style [css], -cssj-text-emphasis-color [css], -cssj-text-emphasis [css] というCSSプロパ ティが 使 われます EPUB と の 互 換 性 の た め こ れ ら の プ ロ パ テ ィ は そ れ ぞ れ -epub-text-emphasis-style [css], -epub-text-emphasis-color [css], -epub-text-emphasis [css] という 名 前 も 使 うことができます 圏 点 の 記 号 は 本 文 のフォントを 使 って 表 示 されます より 美 しい 圏 点 を 出 力 するため に は Kenten Generic OpenType Font(http://sourceforge.net/adobe/kentengeneric/home/Home/) を 埋 め 込 みフォントとして 使 用 することを 推 奨 します 本 文 の フォントファミリを {font-family: 'Kenten Generic' 本 文 フォント...; の ように 指 定 してください 214 4.8 CSSの 拡 張 機 能

4.デザイナーガイド -cssj-text-emphasis-style 値 初 期 値 適 用 対 象 値 の 継 承 none [ [ filled open ] [ dot circle double-circle triangle sesame ] ] <string> none すべて する noneが 設 定 された 場 合 圏 点 を 打 ちません その 他 の 値 が 設 定 された 場 合 圏 点 の 種 類 (ユニコード 文 字 )はそれぞれ 次 のとおり になります filled dot open dot filled circle open circle U+2022 U+25E6 U+25CF U+25CB filled double-circle U+25C9 open double-circle U+25CE filled triangle U+25B2 open triangle U+25B3 filled sesame open sesame U+FE45 U+FE46 4.8 CSSの 拡 張 機 能 215

4.デザイナーガイド filledかopenだけが 指 定 された 場 合 は 横 書 きではそれぞれfilled circle, open circle が 指 定 されるのと 同 じになり 縦 書 きではそれぞれfilled sesame, open sesame が 指 定 される のと 同 じになります 文 字 列 が 指 定 された 場 合 文 字 列 の 最 初 の 文 字 が 圏 点 になります 例 4.43 -cssj-text-emphasis-styleの 使 用 例 (ソース) <html> <head> <style type="text/css"> #a { -cssj-text-emphasis-style: filled; #b { -cssj-text-emphasis-style: open triangle; #c { -cssj-text-emphasis-style: ' '; </style> </head> <body> <p><span id="a">ここ</span>に 丸 い 圏 点 を 打 ちます</p> <p><span id="b">ここ</span>に 三 角 の 圏 点 を 打 ちます</p> <p><span id="c">ここ</span>に 米 印 の 圏 点 を 打 ちます</p> </body> </html> 例 4.44 -cssj-text-emphasis-styleの 使 用 例 ( 表 示 結 果 ) こ こに 丸 い 圏 点 を 打 ちます こ こに 三 角 の 圏 点 を 打 ちます こ こに 米 印 の 圏 点 を 打 ちます -cssj-text-emphasis-color 値 初 期 値 適 用 対 象 値 の 継 承 <color> 文 字 の 色 と 同 じ すべて する 216 4.8 CSSの 拡 張 機 能

4.デザイナーガイド 圏 点 の 色 を 指 定 します 色 の 指 定 方 法 はcolor [css] プロパティなどの 場 合 と 同 じです 例 4.45 -cssj-text-emphasis-colorの 使 用 例 (ソース) <html> <head> <style type="text/css"> span { -cssj-text-emphasis-style: filled; #a { -cssj-text-emphasis-color: Red; #b { color: Red; </style> </head> <body> <p><span id="a">この</span> 圏 点 は 赤 いです</p> <p><span id="b">この</span> 圏 点 も 文 字 も 赤 です</p> </body> </html> 例 4.46 -cssj-text-emphasis-colorの 使 用 例 ( 表 示 結 果 ) こ の 圏 点 は 赤 いです こ の 圏 点 も 文 字 も 赤 です -cssj-text-emphasis -cssj-text-emphasis-style [css], -cssj-text-emphasis-color [css] をまとめ て 指 定 するプロパティです 圏 点 のスタイル 色 の 順 に 指 定 します 4.8 CSSの 拡 張 機 能 217

4.デザイナーガイド 例 4.47 -cssj-text-emphasisの 使 用 例 (ソース) <html> <head> <style type="text/css"> #a { -cssj-text-emphasis: filled triangle Red; #b { -cssj-text-emphasis: ' ' Pink; </style> </head> <body> <p><span id="a">この</span> 圏 点 は 赤 い 三 角 です</p> <p><span id="b">この</span> 圏 点 はピンクの 米 印 です</p> </body> </html> 例 4.48 -cssj-text-emphasisの 使 用 例 ( 表 示 結 果 ) こ の 圏 点 は 赤 い 三 角 です こ の 圏 点 はピンクの 米 印 です 4.8.6 文 字 の 影 [3.0.8] Copper PDFは 一 般 的 なブラウザがサポートしている 文 字 の 影 落 とし をサポートし ています ただし 制 約 として 影 の ぼかし には 対 応 していません 常 にぼかしの 半 径 にゼロを 設 定 したのと 同 じになります text-shadow 値 初 期 値 適 用 対 象 値 の 継 承 none [ <length>{2 && <color>? ]# none すべて する text-shadow [css] の 値 は 影 のx 方 向 の 位 置 y 方 向 の 位 置 影 の 色 の 順 に 指 定 します ま た カンマで 区 切 ることにより 複 数 の 影 を 落 とすことができます 1つ 目 の 影 は 文 字 の 後 ろに 作 られ 順 に 背 面 へと 作 られます 218 4.8 CSSの 拡 張 機 能

4.デザイナーガイド 例 4.49 text-shadowの 使 用 例 (ソース) <html> <head> <style type="text/css"> * { font-size: 32pt; #a { text-shadow: 4pt 8pt Gray; #b { text-shadow: 8pt 8pt Gray, 16pt 16pt LightGray; </style> </head> <body> <p id="a"> 灰 色 の 影 のある 文 字 </p> <p id="b"> 灰 色 の 影 の 後 ろにさらに 薄 い 灰 色 の 影 </p> </body> </html> 例 4.50 text-shadowの 使 用 例 ( 表 示 結 果 ) 灰 色 の 影 のある 文 字 灰 色 の 影 の 後 ろにさらに ろにさらに 薄 い 灰 色 の 影 4.8.7 袋 文 字 [3.0.8] レンダリングエンジンとしてWebKitを 利 用 しているブラウザ(Google Chrome, Safari 等 )との 互 換 性 のために テキストの 輪 郭 と 塗 りを 別 々に 指 定 するプロパティを 用 意 し ています これは 袋 文 字 の 効 果 を 実 現 するために 使 うことができます -cssj-text-fill-color [css], -cssj-text-stroke-width [css], -cssj-text-stroke-color [css], -cssj-text-stroke [css] という4つの 独 自 プロ 4.8 CSSの 拡 張 機 能 219

4.デザイナーガイド パ テ ィ を 用 意 し て い ま す こ れ ら は WebKit と の 互 換 性 の た め に そ れ ぞ れ -webkit-text-fill-color [css], -webkit-text-stroke-width [css], -webkit-text-stroke-color [css], -webkit-text-stroke [css] というプロパティ 名 でも 利 用 することができます -cssj-text-fill-color 値 初 期 値 適 用 対 象 値 の 継 承 <color> currentcolor currentcolor すべて する テキストの 塗 りつぶし 色 を 設 定 します なにも 指 定 しない 場 合 は color [css] による 指 定 と 同 じになります -cssj-text-stroke-width 値 初 期 値 適 用 対 象 値 の 継 承 <width> medium thick thin 0 すべて する テキストの 枠 の 幅 をしていします 0 以 外 の 値 を 設 定 すると 枠 が 描 画 されるようにな ります -cssj-text-stroke-color 値 初 期 値 <color> currentcolor currentcolor 220 4.8 CSSの 拡 張 機 能

4.デザイナーガイド 適 用 対 象 値 の 継 承 すべて する テキストの 枠 の 色 を 設 定 します なにも 指 定 しない 場 合 は color [css] による 指 定 と 同 じになります -cssj-text-stroke 値 初 期 値 適 用 対 象 値 の 継 承 <width> <color> none すべて する テキストの 枠 の 幅 と 色 を 一 度 に 設 定 します 例 4.51 袋 文 字 (ソース) <html> <head> <style type="text/css"> * { font-size: 32pt; #a { -cssj-text-stroke-width: 2pt; #b { -cssj-text-stroke: 1pt Black; -cssj-text-fill: White; </style> </head> <body> <p id="a"> 輪 郭 を 太 らせた 文 字 </p> <p>テキストの<span id="b">この 部 分 </span>が 白 抜 き</p> </body> </html> 4.8 CSSの 拡 張 機 能 221

4.デザイナーガイド 例 4.52 袋 文 字 ( 表 示 結 果 ) 輪 郭 を 太 らせた 文 字 文 章 のこの 部 分 が 白 抜 き 4.8.8 透 明 化 [3.0.6] opacity 値 初 期 値 適 用 対 象 値 の 継 承 <alphavalue> 1 すべて しない 要 素 の 不 透 明 度 を 設 定 します 値 は0( 透 明 )から1( 不 透 明 )までの 小 数 値 です 例 えば0.5 に 設 定 すると その 要 素 は50%の 透 明 度 を 持 つことになります 例 4.53 opacityの 使 用 例 (ソース) <html> <head> <style type="text/css"> * { font-size: 32pt; #a { position: relative; top: -32pt; font-size: 32pt; border: 5pt solid Red; 222 4.8 CSSの 拡 張 機 能

4.デザイナーガイド background-color: Yellow; opacity: 0.7; </style> </head> <body> <div> 輪 郭 を 太 らせた 文 字 </div> <div id="a"> 透 明 化 したボックス</div> </body> </html> 例 4.54 opacityの 使 用 例 ( 表 示 結 果 ) 背 景 にある 文 字 半 透 明 化 したボックス 4.8.9 透 明 色 [3.0.8] 前 記 のopacity [css] は 要 素 全 体 を 半 透 明 にするものでしたが これとは 別 に rgba 関 数 により 各 指 定 色 に 透 明 度 を 加 えることができます これにより 例 えば 文 字 境 界 線 に 別 々 の 透 明 度 を 指 定 す る こ と が で き ま す rgba 関 数 は 色 指 定 を す る color [css], background-color [css], border-color [css] 等 のプロパティで 使 用 することができ ます rgba 関 数 内 の 数 値 は それぞれ 赤 緑 青 不 透 明 度 の 順 です 不 透 明 0から1ま 度 は での 小 数 で 指 定 します 例 4.55 rgbaの 使 用 例 (ソース) <html> <head> <style type="text/css"> * { font-size: 32pt; #a { position: relative; top: -32pt; font-size: 32pt; 4.8 CSSの 拡 張 機 能 223

4.デザイナーガイド border: 5pt solid Red; background-color: rgba(255,255,0,0.5); </style> </head> <body> <div> 輪 郭 を 太 らせた 文 字 </div> <div id="a"> 透 明 化 したボックス</div> </body> </html> 例 4.56 rgbaの 使 用 例 ( 表 示 結 果 ) 背 景 にある 文 字 背 景 だけが 半 透 明 4.8.10 角 丸 境 界 [3.0.6] ボックスの 境 界 線 の 四 隅 を 丸 くすることができます Copper PDF 3.0.8からは 背 景 の 四 隅 も 丸 くなります また 既 知 の 問 題 として 4つの 境 界 線 の 色 太 さ スタイル 角 の 半 径 が 異 なる 場 合 背 景 が 境 界 をはみ 出 すことがあり ます 角 の 半 径 を 指 定 するために border-*-*-radius [css] という 形 式 の4つのプロパティ を 使 います これらのプロパティは1つまたは2つの 長 さ % 値 を 指 定 し 1つの 場 合 は 角 の 半 径 2つの 場 合 は 角 を 楕 円 形 の 弧 としそれぞれ 左 右 方 向 と 上 下 方 向 の 半 径 とな ります border-top-left-radius 値 初 期 値 適 用 対 象 値 の 継 承 [ <length> <percentage> ]{1,2 0 すべて しない 224 4.8 CSSの 拡 張 機 能

4.デザイナーガイド border-top-right-radius 値 初 期 値 適 用 対 象 値 の 継 承 [ <length> <percentage> ]{1,2 0 すべて しない border-bottom-left-radius 値 初 期 値 適 用 対 象 値 の 継 承 [ <length> <percentage> ]{1,2 0 すべて しない border-bottom-right-radius 値 初 期 値 適 用 対 象 値 の 継 承 [ <length> <percentage> ]{1,2 0 すべて しない border-radius [css] は 前 記 のプロパティをまとめて 指 定 するためのものです 値 はそ れ ぞ れ border-top-left-radius [css], border-top-right-radius [css], border-bottom-right-radius [css], border-bottom-left-radius [css] の 順 に 指 定 します 4 番 目 の 値 が 省 略 された 場 合 border-bottom-left-radius [css] は 4.8 CSSの 拡 張 機 能 225

4.デザイナーガイド border-top-right-radius [css] と 同 じになります 3 番 目 の 値 が 省 略 された 場 合 border-bottom-right-radius [css] は border-top-left-radius [css] と 同 じにな ります 2 番 めの 値 が 省 略 された 場 合 全 ての 隅 が 同 じ 指 定 になります 左 右 方 向 と 上 下 方 向 の 半 径 は'/'(スラッシュ) 記 号 で 区 切 り それぞれをまとめて 指 定 し ます border-radius 値 適 用 対 象 値 の 継 承 [ <length> <percentage> ]{1,4 [ / [ <length> <percentage> ]{1,4 ]? すべて しない 四 隅 が 丸 いボックス 例 4.57 角 丸 境 界 (ソース) <html> <head> <style type="text/css"> div { border: 1pt solid Red; background-color: Yellow; height: 50pt; #a { border-radius: 5pt; #b { border-radius: 10pt 20pt / 20pt 10pt; border-top-left-radius: 30pt; </style> </head> <body> <div id="a"> 四 隅 が 丸 いボックス</div> <div id="b"> 四 隅 がいびつなボックス</div> </body> </html> 例 4.58 角 丸 境 界 ( 表 示 結 果 ) 四 隅 がいびつなボックス 226 4.8 CSSの 拡 張 機 能

4.デザイナーガイド 4.8.11 回 転 拡 大 変 形 [3.0.8] ボックスに 対 して 二 次 元 変 換 により 回 転 拡 大 変 形 などを 行 うことができます なお 三 次 元 変 換 には 対 応 していません -cssj-transfrom [css], -cssj-transform-origin [css] というプロパティで 変 換 を 行 い ま す WebKit, Firefox と の 互 換 性 の た め に -webkit-transfrom [css], -webkit-transform-origin [css], -moz-transfrom [css], -moz-transform-origin [css] という 名 前 でも 使 用 することができます -cssj-transform 値 初 期 値 適 用 対 象 値 の 継 承 none <transform-function> [ <transform-function> ]* none ブロックレベル 要 素 しない ボックスに 対 する 変 換 行 列 を 指 定 します 値 には noneまたは 複 数 の 変 換 関 数 を 指 定 す ることができます 利 用 できる 変 換 関 数 は 次 のとおりです matrix(a,b,c,d,e,f) 変 換 行 列 を 直 接 指 定 します 変 換 行 列 は 次 のとおりに 指 定 されます 4.8 CSSの 拡 張 機 能 227

4.デザイナーガイド aは 左 右 方 向 の 拡 大 率 bは 上 下 方 向 の 傾 斜 率 cは 左 右 方 向 の 傾 斜 率 dは 上 下 方 向 の 拡 大 率 eは 左 右 方 向 の 移 動 距 離 fは 上 下 方 向 の 移 動 距 離 に 対 応 します e, fにはpt, em 等 の 長 さの 単 位 を 使 用 することができます 単 位 がない 場 合 はpt 単 位 です なお % 値 による 指 定 には 対 応 していません translate(x, y) 左 右 方 向 と 上 下 方 向 の 移 動 距 離 を 指 定 します yを 省 略 した 場 合 は 左 右 方 向 のみが 指 定 されます 長 さの 単 位 を 使 用 することができます 単 位 がない 場 合 はpt 単 位 です translatex(x) 左 右 方 向 の 移 動 距 離 を 指 定 します 長 さの 単 位 を 使 用 することができます 単 位 がな い 場 合 はpt 単 位 です translatey(y) 上 下 方 向 の 移 動 距 離 を 指 定 します 長 さの 単 位 を 使 用 することができます 単 位 がな い 場 合 はpt 単 位 です scale(x, y) scalex(x) scaley(y) 左 右 方 向 と 上 下 方 向 の 拡 大 率 を 指 定 します 左 右 方 向 の 拡 大 率 を 指 定 します 上 下 方 向 の 拡 大 率 を 指 定 します rotate(theta) 回 転 させます thetaは 角 度 で degを 付 けると 度 単 位 単 位 を 省 略 するとラジアン 単 位 と なります skew(xtheta, ytheta) 左 右 方 向 と 上 下 方 向 の 傾 斜 角 度 を 指 定 します それぞれの 値 は 角 度 で degを 付 けると 度 単 位 単 位 を 省 略 するとラジアン 単 位 となります skewx(xtheta) 左 右 方 向 の 傾 斜 角 度 を 指 定 します xthetaは 角 度 で degを 付 けると 度 単 位 単 位 を 省 略 するとラジアン 単 位 となります skewy(ytheta) 上 下 方 向 の 傾 斜 角 度 を 指 定 します ythetaは 角 度 で degを 付 けると 度 単 位 単 位 を 省 略 するとラジアン 単 位 となります -cssj-transform-origin 値 <position> [, <position> ]* 228 4.8 CSSの 拡 張 機 能

4.デザイナーガイド 初 期 値 適 用 対 象 値 の 継 承 50% 50% ブロックレベル 要 素 しない 変 換 の 中 央 点 を 指 定 します デフォルトではボックスの 中 心 になっており 例 えばrotate 関 数 を 使 用 するとボックスの 中 心 を 回 転 の 中 心 とします 例 4.59 transform, transform-originの 使 用 例 (ソース) <html> <head> <style type="text/css"> body { margin: 40pt; div { font-size: 32pt; position: absolute; -cssj-transform-origin: 5pt 5pt; #a { -cssj-transform: rotate(0deg); #b { -cssj-transform: rotate(90deg); #c { -cssj-transform: rotate(180deg); #d { -cssj-transform: rotate(270deg); </style> </head> <body> <div id="a"> </div> <div id="b"> </div> <div id="c"> </div> <div id="d"> </div> </body> </html> 例 4.60 transform, transform-originの 使 用 例 ( 表 示 結 果 ) 4.8 CSSの 拡 張 機 能 229

4.デザイナーガイド 4.9 ページ 処 理 機 能 4.9.1 ページのレイアウト 生 成 されるページは 以 下 の 部 分 から 構 成 されています 用 紙 印 刷 面 マージン トンボ 裁 ち 口 ドブ ドキュメントが 印 刷 される 用 紙 です ドキュメントの 内 容 が 印 刷 される 部 分 です 通 常 は 内 容 がみだすことのない ページの 余 白 部 分 です 製 本 する 際 断 裁 の 目 印 となる 印 です 断 裁 されて 切 り 落 とされる 部 分 です 断 裁 される 可 能 性 のある 範 囲 です 230 4.9 ページ 処 理 機 能

4.デザイナーガイド 図 4.20 ページのレイアウト htrim( 上 下 断 ち 口 ) cross (センタートンボ) ドブ paper-height( 用 紙 高 さ) page-height(ページ 高 さ) crop (コーナートンボ) vtrim ( 左 右 断 ち 口 ) page-width(ページ 幅 ) paper-width( 用 紙 幅 ) 用 紙 のサイズ 印 刷 面 のサイズ ページのレイアウトは 入 出 力 プロパティにより 設 定 されます 対 応 する 入 出 力 プロパ ティは 次 の 通 りです output.paper-width [io], output.paper-height [io] output.page-width [io], output.page-height [io] マージン トンボ 裁 ち 口 output.page-margins [io] output.marks [io] output.htrim [io], output.vtrim [io] 4.9 ページ 処 理 機 能 231

4.デザイナーガイド 用 紙 のサイズの 指 定 がない 場 合 用 紙 の 幅 と 高 さは それぞれページの 幅 と 高 さに 断 ち 口 の 幅 を 足 し た も の に 自 動 的 に 設 定 さ れ ま す 用 紙 の サ イ ズ を 指 定 し た 場 合 output.fit-to-paper [io] がtrueの 場 合 は 用 紙 に 合 わせて 内 容 が 拡 大 され falseの 場 合 は 中 央 に 寄 せられます output.page-margins [io] の 設 定 はページマージンのデフォルト 値 として 使 用 され る も の で す ペ ー ジ の マ ー ジ ン は CSS の margin-top [css], margin-right [css], margin-bottom [css], margin-left [css] プロパティにより@pageルール 内 で 上 書 きす ることができます 4.9.2 ページの 大 きさの 制 約 と 切 り 落 とし Copper PDFのデフォルトの 設 定 では ページの 高 さは297mm ページの 幅 は210mm(A4 サイズ)です 上 下 左 右 のマージンはいずれも12.7mm(3pc)です 用 紙 の 縦 横 の 長 さはいずれも1ptから14400pt(5080mm)の 間 である 必 要 があります 用 紙 サイズがこの 範 囲 を 超 えた 場 合 は 超 えた 部 分 は 切 り 落 とされます このサイズ 制 限 はPDFの 仕 様 によるものです また output.auto-height [io] をtrueに 設 定 することで 用 紙 の 高 さは 固 定 されずに 内 容 に 合 わせて 拡 張 されるようになります この 場 合 改 ページが 発 生 することはあり ませんが 前 記 の 用 紙 サイズの 制 限 により 切 り 落 とされることがあります 用 紙 サ イ ズ を 固 定 し か つ 改 ペ ー ジ が 行 わ れ な い よ う に す る た め に は output.no-page-break [io] をtrueに 設 定 してください [2.0.3] この 場 合 固 定 された 用 紙 サイズをはみ 出 した 部 分 は 切 り 落 とされます 印 刷 内 容 の 切 り 落 としは トンボがある 場 合 デフォルトではドブの 外 側 の 境 界 線 上 で 行 われます トンボのさらに 外 側 まで 内 容 を 印 刷 する 場 合 は output.clip [io] をfalse に 設 定 してください [2.0.3] 4.9.3 2パス 以 上 の 変 換 処 理 Copper PDFには ページ 番 号 による 参 照 を 可 能 にするために 同 じドキュメントを 複 数 回 処 理 する(それぞれの 処 理 を パス と 呼 びます) 機 能 が 用 意 されています 複 数 パス が 必 要 になるのは ドキュメントの 最 後 以 外 の 場 所 に 目 次 を 入 れる 場 合 と -cssj-pageref 関 数 を 使 用 する 場 合 です 文 書 中 にページ 番 号 を 表 示 する 場 合 1 度 目 のパスでアンカーや 見 出 し 等 が 表 示 される ページの 番 号 を 求 めて 2 度 目 のパスで 実 際 に 参 照 のためのページ 番 号 を 挿 入 します また 目 次 と 本 文 を 通 しでページ 番 号 を 振 る 場 合 や 非 常 に 大 きなドキュメントで ページ 番 号 の 挿 入 のためにページ 数 が 増 加 する 場 合 は 3パス 以 上 必 要 になることがあ ります 232 4.9 ページ 処 理 機 能

4.デザイナーガイド パスの 数 は 入 出 力 プロパティ processing.pass-count [io] により 設 定 可 能 です 2パス 以 上 の 変 換 処 理 は processing.middle-pass [io] [3.0.4] により 行 うこともでき ます この 場 合 文 字 通 りドキュメントを 複 数 回 Copper PDFに 送 り 出 す 必 要 がありま す 実 際 に 結 果 を 出 力 しない 最 初 と 中 間 のパスの 時 はprocessing.middle-pass [io] を"true"にしておき 最 後 にprocessing.middle-pass [io] を"false"にしてからドキュ メントを 処 理 してください 4.9.4 ページの 参 照 Copper PDFには 目 次 をつくる 機 能 (cssj:make-toc 要 素 )と ある 内 容 が 印 刷 されるページ 番 号 を 表 示 する 機 能 (-cssj-page-ref 関 数 )があります これらの 機 能 を 利 用 するためには processing.page-references [io] をtrueに 設 定 し ページ 参 照 情 報 を 収 集 する 機 能 を 有 効 にしてください また 必 要 に 応 じて2パス 以 上 の 変 換 処 理 を 行 ってください CSSJ 1.xのcssj:toc 要 素 processing.make-toc-before [io] は 廃 止 され ました 4.9.5 グレイスケール 印 刷 Copper PDFは 原 則 として 結 果 をカラーで 出 力 しますが グレイスケールで 印 刷 した 状 態 をプレビューするために グレイスケールに 変 換 する 機 能 を 持 っています グレイスケールの 出 力 結 果 を 得 るためには output.color [io] をgrayに 設 定 してくだ さい 4.9.6 片 面 印 刷 と 両 面 印 刷 デフォルトではCopper PDFによるページ 生 成 は 横 書 き 両 面 印 刷 として 行 われます 従 って CSSの@pageルールにおいて 最 初 のページは:firstまたは:right 擬 似 要 素 として 扱 われ 以 降 は:left, :right 擬 似 要 素 のページが 交 互 に 現 れます output.print-mode [io] にsingle-sideを 設 定 することにより 片 面 印 刷 に 切 り 替 えるこ とができます 片 面 印 刷 では 最 初 のページは:first 擬 似 要 素 として 扱 われ 以 降 はどの 擬 似 要 素 にも 属 さないページが 生 成 されます 4.9 ページ 処 理 機 能 233

4.デザイナーガイド 4.9.7 ページごとに 生 成 されるコンテンツ Copper PDFは ノンブル のようなページごとに 生 成 されるコンテンツをサポートす るために 独 自 の-cssj-page-content [css] プロパティを 用 意 しています -cssj-page-content [css] は 要 素 をページ 毎 に 生 成 するボックスとして 配 置 するもの です ボックスの 配 置 方 法 は{position: fixed;と 同 じですが ページ 毎 にボック スが 再 生 成 され content [css] プロパティが 処 理 される 点 が 異 なります -cssj-page-content [css] 最 初 の 値 は 生 成 されるコンテンツの 識 別 名 です 2つめの 以 降 の 値 は コンテンツを 最 初 のどちらのページに 再 生 成 するかの 指 定 です first( 最 初 ), left( 左 ページ), right( 右 ページ), single( 片 面 印 刷 のページ)のいずれかです 2つめの 値 を 省 略 すると 全 てのページで 再 生 成 されます 2つめ 以 降 に 複 数 の 値 を 指 定 すると いずれかの 条 件 にマッチする 場 合 にページを 再 生 成 します 例 えばleft singleでは 両 面 印 刷 の 左 か 片 面 印 刷 のページで 再 生 成 します -cssj-page-content [css] が 指 定 されたボックスは それが 空 のインラインボックス であると 仮 定 した 場 合 に 表 示 されるページから 表 示 されます [2.0.8] 識 別 名 は 再 生 成 の 停 止 や 置 き 換 え の た め の も の で す -cssj-page-content-clear [css] により ボックスの 再 生 成 を 止 めることができま す また -cssj-page-content [css] で 指 定 した 名 前 が 既 に 使 われている 場 合 古 い ボックスの 再 生 成 を 止 め 新 しいボックスに 置 き 換 えられます -cssj-page-content-clear [css] は プロパティを 設 定 したオブジェクトが 表 示 され たページから 適 用 されます [2.0.8] 次 の 例 は 再 生 成 ボックスとページカウンタ (208ページ)を 利 用 して ページごとに ノ ンブル を 振 ります 各 ページの 下 部 中 央 にページ 番 号 が 表 示 されます また 本 文 の 前 でページカウンタをリセットし 目 次 と 本 文 は 別 にページを 振 りなおしています 例 4.61 ページ 番 号 の 生 成 <style type="text/css"> @page { margin: 2cm 2cm 5cm 2cm; counter-increment: page; #page-number { -cssj-page-content: footer; bottom: -1cm; text-align: center; width: 100%; #page-number:before { 234 4.9 ページ 処 理 機 能

4.デザイナーガイド content: counter(page); #body { page-break-before: right; counter-reset: page 1; </style> <div id="page-number"></div> <div id="toc">... 目 次... </div> <div id="body">... 本 文... </div> Copper PDF 3.1.4 以 降 では @-cssj-page-content ルールによって CSSだけでページ 番 号 を 表 示 できるようになりました 例 えば 上 記 の 処 理 は 以 下 のように 記 述 することもで きます 例 4.62 ページ 番 号 の 生 成 (@-cssj-page-contentを 使 う) <style type="text/css"> @page { margin: 2cm 2cm 5cm 2cm; counter-increment: page; @-cssj-page-content footer { bottom: -1cm; text-align: center; width: 100%; content: counter(page); #body { page-break-before: right; counter-reset: page 1; </style> <div id="toc">... 目 次... </div> <div id="body">... 本 文... </div> 再 生 成 ボックスどのページに 表 示 するかを 指 定 するには @page :left のように 擬 似 クラ スを 記 述 してから その 中 で@-cssj-page-contentを 記 述 してください 擬 似 クラスは:first, :left, :right, :singleのいずれかです 例 えば 以 下 の 例 では 左 ページだけにページ 番 号 を 表 示 します 4.9 ページ 処 理 機 能 235

4.デザイナーガイド 例 4.63 ページ 番 号 の 生 成 ( 左 ページだけ) <style type="text/css"> @page { margin: 2cm 2cm 5cm 2cm; counter-increment: page; @page :left { @-cssj-page-content footer { bottom: -1cm; text-align: center; width: 100%; content: counter(page); #body { page-break-before: right; counter-reset: page 1; </style> <div id="toc">... 目 次... </div> <div id="body">... 本 文... </div> 現 在 ペ ー ジ / 総 ペ ー ジ 数 の よ う に 表 示 す る に は 入 出 力 プ ロ パ テ ィ processing.pass-count [io] を2 以 上 の 値 にし 総 ページ 数 を 記 録 する 特 殊 なカウン タ 名 pages を 用 いてください [3.1.4] 例 4.64 総 ページ 数 (Copper PDF 3.1.4 以 降 ) <style type="text/css"> @page { margin: 2cm 2cm 5cm 2cm; counter-increment: page; #page-number { -cssj-page-content: footer; bottom: -1cm; text-align: center; width: 100%; #page-number:before { content: counter(page) '/' counter(pages); #body { page-break-before: right; 236 4.9 ページ 処 理 機 能

4.デザイナーガイド counter-reset: page 1; </style> <div id="page-number"></div> <div id="toc">... 目 次... </div> <div id="body">... 本 文... </div> なお バージョン3.1.3 以 前 で 現 在 ページ / 総 ページ 数 のように 表 示 するには 以 下 のように 文 書 の 末 尾 の 要 素 のページ 番 号 を-cssj-page-ref 関 数 で 参 照 してください この 場 合 は 入 出 力 プ ロ パ テ ィprocessing.pass-count [io] を 2 以 上 の 値 に し た 上 processing.page-references [io] をtrueに 設 定 する 必 要 があります 例 4.65 総 ページ 数 (Copper PDF 3.1.3 以 前 ) <style type="text/css"> @page { margin: 2cm 2cm 5cm 2cm; counter-increment: page; #page-number { -cssj-page-content: footer; bottom: -1cm; text-align: center; width: 100%; #page-number:before { content: counter(page) '/' -cssj-page-ref(last,page); #body { page-break-before: right; counter-reset: page 1; </style> <div id="page-number"></div> <div id="toc">... 目 次... </div> <div id="body">... 本 文... </div> <div id="last"></div> 4.9 ページ 処 理 機 能 237

4.デザイナーガイド 左 右 のページでアラインメントを 変 えることにより ページの 外 側 にノンブルを 振 るこ とができます また -cssj-heading 関 数 を 利 用 することで 現 在 ページのセクションの 見 出 しを 一 緒 に 表 示 することができます Copper PDF 3.1.4 以 降 では-cssj-title 識 別 子 によ り 文 書 のタイトルを 表 示 することができます 例 4.66 タイトルと 見 出 しの 表 示 <style type="text/css"> @page { margin: 2cm 2cm 5cm 2cm; counter-increment: page; #nombre-left, #nombre-right { bottom: -1cm; width: 100%; #nombre-left { -cssj-page-content: nombre-left left; text-align: left; #nombre-right { -cssj-page-content: nombre-right right; text-align: right; #nombre-left:before { content: -cssj-title counter(page) ' - ' -cssj-heading(1); #nombre-right:after { content: -cssj-heading(2) ' - ' counter(page); </style> <div id="nombre-left"></div> <div id="nombre-right"></div>... 本 文... CSSJ 1.x 系 の-cssj-regeneratable [css] も 互 換 性 のためサポートされていますが パ フォーマンスの 面 から-cssj-page-content [css] の 使 用 を 推 奨 します 238 4.9 ページ 処 理 機 能

4.デザイナーガイド 4.10 改 ページ 制 御 4.10.1 用 語 の 定 義 絶 対 配 置 ボックス {position: absolute;が 指 定 された 要 素 です {position: fixed;が 指 定 された 要 素 やページごとに 生 成 されるコンテンツも 広 義 の 絶 対 配 置 ボックスです 浮 動 ボックス {float: left;または{float: right; が 指 定 された 要 素 です 通 常 のフローのブロック 何 も 指 定 されていない<p> 要 素 や<div> 要 素 や{display: block;が 指 定 された 要 素 で 絶 対 配 置 ボックスでも 浮 動 ボックスでもないものです テーブルは 次 の 部 分 からなっています テーブルキャプション HTMLのcaptionタグ あるいはdisplayがtable-captionと 指 定 された 部 分 テーブルヘッダ HTMLのtheadタグ あるいはdisplayがtable-header-groupと 指 定 された 部 分 テーブルフッタ HTMLのtfootタグ あるいはdisplayがtable-footer-groupと 指 定 された 部 分 テーブル 行 グループ HTMLのtbodyタグ あるいはdisplayがtable-row-groupと 指 定 された 部 分 ただし tbody やtable-row-groupを 省 略 して テーブルの 中 に 直 接 存 在 する 行 も 行 グループに 属 すると 見 なされます 4.10.2 強 制 改 ページ 強 制 改 ページは 指 定 した 場 所 で 強 制 的 に 改 ページを 発 生 させる 機 能 です 強 制 改 ペー ジを 指 定 できるのは 次 の 場 所 です 通 常 のフローのブロックの 直 前 通 常 のフローのブロックの 直 後 浮 動 ボックスの 直 前 浮 動 ボックスの 直 後 テーブルの 直 前 テーブルの 直 後 テーブル 行 グループの 直 前 テーブル 行 グループの 直 後 テーブル 行 の 直 前 4.10 改 ページ 制 御 239

4.デザイナーガイド テーブル 行 の 直 後 テーブルセルの 直 前 テーブルセルの 直 後 ただし 上 記 の 場 所 であっても 浮 動 ボックス 内 絶 対 配 置 ボックス 内 テーブルセル 内 で は 強 制 改 ページを 発 生 することはできません 要 素 の 直 前 の 強 制 改 ページの 指 定 は{page-break-before: always;です 要 素 の 直 後 の 強 制 改 ページの 指 定 は{page-break-after: always;です 以 下 は 強 制 改 ページを 使 って 表 紙 を 作 る 例 です 例 4.67 強 制 改 ページ <html> <head> <title>ドキュメント</title> </head> <body> <h1 style="page-break-after: always;"> 表 紙 </h1> <p> 本 文...</p> </body> </html> また 単 純 に 改 ページするためではなく 改 ページした 直 後 のページが 右 になるか 左 に なるかを 指 定 することができます この 場 合 調 整 のために 空 白 のページが1つつくら れる 可 能 性 があります 強 制 改 ページの 後 のページが 右 になるか 左 になるかを 指 定 するには page-break-before およびpage-break-afterプロパティの 値 として alwaysの 代 わりに left( 左 ページにする 場 合 )またはright( 右 ページにする 場 合 )を 指 定 します 以 下 の 例 では 必 ず 右 側 になる 中 表 紙 を 生 成 しています 例 4.68 空 ページが 生 じるケース <html> <head> <title>ドキュメント</title> </head> <body> <h1 style="page-break-after: always;"> 表 紙 </h1> <p style="page-break-after: always;"> 本 文 1...</p> <p> 本 文 2...</p> <h1 style="page-break-before: right;"> 中 表 紙 </h1> </body> </html> ただし 強 制 改 ページのleft, rightの 指 定 はテーブル 内 部 では 適 用 されず いずれもalways と 解 釈 されます 240 4.10 改 ページ 制 御

4.デザイナーガイド 4.10.3 orphans [css] とwidows [css] orphans [css] とwidows [css] プロパティは 段 落 (ここでは 通 常 のフローのブロックを 指 し <br>による 空 行 等 は 段 落 の 区 切 りとは 認 識 されません) の 途 中 で 改 ページが 発 生 す る 場 合 必 ず 前 のページに 残 す 行 数 と 後 のページに 表 示 される 行 数 を 指 定 するもので す なお Copper PDFは 実 際 の 行 数 ではなく 行 から 行 までの 長 さを 標 準 的 な 行 の 高 さ( 段 落 に 適 用 されたline-height [css] による 高 さ) で 割 った 値 を 整 数 に 丸 めた 数 値 を 基 準 に 計 算 します そのため 行 内 に 大 きな 画 像 が 存 在 したり インラインに 対 する font-size [css] の 指 定 により 例 えば 通 常 の2 倍 の 高 さに 拡 張 されている 行 が 存 在 すれ ば 2 行 として 計 算 します これはCSS 2.1の 仕 様 にはありませんが より 直 感 的 な 改 ペー ジとするための 仕 様 です orphans [css] ある 段 落 がページの 下 端 にかかっている 場 合 段 落 を 途 中 で 分 割 して 改 ページする 必 要 があります orphans [css] はそのような 場 合 に 改 ページされる 前 のページに 最 低 限 残 さなければならない 行 数 です 例 えば 以 下 の 例 ではorphans [css] が3に 対 して 改 ペー ジ 前 のページに3 行 があるので 条 件 を 満 たしています 例 4.69 orphansが3の 場 合 ( 段 落 1)1 行 目... 2 行 目... 3 行 目... 4 行 目... 5 行 目... 6 行 目... 7 行 目... 8 行 目... ( 段 落 2)1 行 目... 2 行 目... 3 行 目... 1ページ 目 4 行 目... 5 行 目... 2ページ 目 同 じ 文 書 でorphans [css] を4に 指 定 すると そのままではorphans [css] を 満 たすことが できないため 段 落 をまるごと 次 ページに 移 動 してしまいます 4.10 改 ページ 制 御 241

4.デザイナーガイド 例 4.70 orphansが4の 場 合 ( 段 落 1)1 行 目... 2 行 目... 3 行 目... 4 行 目... 5 行 目... 6 行 目... 7 行 目... 8 行 目... 1ページ 目 ( 段 落 2)1 行 目... 2 行 目... 3 行 目... 4 行 目... 5 行 目... 2ページ 目 widows [css] 文 書 の 内 容 の 高 さがページの 高 さよりわずかに 高 い 場 合 次 のページに 文 書 の 内 容 の うち 何 行 かを 先 送 りしなければなりません widows [css] は 改 ページされた 後 のページ に 最 低 限 表 示 されなければならない 行 数 で Copper PDFはwidows [css] を 満 たすように 先 送 りする 行 数 を 調 整 します 例 えば widows [css] が2の 場 合 以 下 の 例 では2ページ 目 に2 行 存 在 するので 条 件 を 満 たしています 例 4.71 widowsが2の 場 合 ( 段 落 1)1 行 目... 2 行 目... 3 行 目... 4 行 目... 5 行 目... 6 行 目... 7 行 目... 8 行 目... ( 段 落 2)1 行 目... 2 行 目... 3 行 目... 1ページ 目 4 行 目... 5 行 目... 2ページ 目 同 じ 文 書 でwidows [css] を3に 指 定 すると 以 下 のように 前 のページから 次 のページへ 行 を 移 動 して widows [css] を 満 たすようにします 242 4.10 改 ページ 制 御

4.デザイナーガイド 例 4.72 widowsが3の 場 合 ( 段 落 1)1 行 目... 2 行 目... 3 行 目... 4 行 目... 5 行 目... 6 行 目... 7 行 目... 8 行 目... ( 段 落 2)1 行 目... 2 行 目... 1ページ 目 3 行 目... 4 行 目... 5 行 目... 2ページ 目 orphans [css] とwidows [css] の 競 合 orphans [css] とwidows [css] の 両 方 の 条 件 を 同 時 に 満 たすことができない 場 合 も orphans [css] を 満 たせなかった 場 合 と 同 様 に 段 落 を 丸 ごと 次 ページに 移 動 します 例 えば 以 下 の 状 況 ではorphans [css] とwindows [css] の 両 方 が 満 たされています 例 4.73 orphansが3でwidowsが2の 場 合 ( 段 落 1)1 行 目... 2 行 目... 3 行 目... 4 行 目... 5 行 目... 6 行 目... 7 行 目... 8 行 目... ( 段 落 2)1 行 目... 2 行 目... 3 行 目... 1ページ 目 4 行 目... 5 行 目... 2ページ 目 この 状 態 でwidows [css] を3に 設 定 すると orphans [css] は 満 たせるがwidows [css] は 満 たせない 状 態 になります 4.10 改 ページ 制 御 243

4.デザイナーガイド 例 4.74 orphansが3でwidowsが3の 場 合 ( 段 落 1)1 行 目... 2 行 目... 3 行 目... 4 行 目... 5 行 目... 6 行 目... 7 行 目... 8 行 目... 1ページ 目 ( 段 落 2)1 行 目... 2 行 目... 3 行 目... 4 行 目... 5 行 目... 2ページ 目 ただし 段 落 がページの 先 頭 にある 場 合 は orphans [css] が 無 視 され 少 なくとも1 行 が 前 ページに 残 されます 4.10.4 改 ページの 抑 制 次 の 場 所 には 改 ページの 抑 制 を 指 定 することができます 通 常 のフローのブロックの 内 部 通 常 のフローのブロックの 直 前 通 常 のフローのブロックの 直 後 浮 動 ボックスの 内 部 テーブルの 内 部 テーブルの 直 前 テーブルの 直 後 テーブル 行 グループの 直 前 テーブル 行 グループの 直 後 テーブル 行 の 内 部 テーブル 行 の 直 前 テーブル 行 の 直 後 テーブルセルの 内 部 テーブルセルの 直 前 テーブルセルの 直 後 内 部 の 改 ページ 抑 制 内 部 での 改 ページを 抑 制 するには {page-break-inside: avoid;という 指 定 を します 改 ページ 抑 制 されたボックスがページをはみ 出 す 場 合 は ボックスが 丸 ごと 次 のページ の 先 頭 に 先 送 りされます ただし ボックスが( 先 送 りの 結 果 か 元 々そこにあるかに 関 わらず)ページの 先 頭 にある 場 合 かつボックスの 高 さがページの 高 さを 超 えてしまう 場 合 は 改 ページの 抑 制 を 無 視 してページ 分 割 されます 244 4.10 改 ページ 制 御

4.デザイナーガイド 前 後 の 改 ページ 抑 制 ボックスの 前 後 での 改 ページを 抑 制 するには {page-break-before: avoid; (ボックスの 前 )あるいは {page-break-after: avoid;(ボックスの 後 )を 指 定 しま す Copper PDFは 改 ページが 抑 制 された 箇 所 での 改 ページを 避 け 前 後 の 何 行 かを 必 ず 1つのページに 含 めるようにします 改 ページが 抑 制 されたポイントの 前 に 入 れる 行 数 はorphans [css] に 依 存 します 強 制 改 ページと 改 ページの 抑 制 が 競 合 する 場 合 は 強 制 改 ページが 優 先 されます 例 え ば {page-break-after: always; と 指 定 さ れ た 段 落 の 直 後 に {pagebreak-before: avoid;と 指 定 された 段 落 がある 場 合 です このような 競 合 が 起 こった 場 合 常 に 強 制 改 ページが 優 先 されます つまり このケースでは{pagebreak-before: avoid;は 無 視 されて 改 ページが 発 生 します なお HTMLのh1 h6 要 素 にはデフォルトで{page-break-before: avoid; が 指 定 されています 4.10.5 自 動 改 ページ Copper PDFは 文 書 の 内 容 がページの 下 端 にさしかかった 部 分 で 自 動 的 に 改 ページし ます 自 動 的 な 改 ページが 発 生 するのは 次 の 場 所 です 通 常 のフローのブロックの 間 画 像 以 外 の 通 常 のフローのブロックの 内 部 画 像 以 外 の 浮 動 ボックスの 内 部 行 の 間 テーブル 行 グループの 間 テーブル 行 グループ 内 の 行 の 間 テーブル 行 グループ 内 の 行 の 内 部 逆 に 以 下 の 場 所 ではどのような 場 合 も 改 ページされることはありません 行 の 内 部 画 像 の 内 部 絶 対 配 置 ボックスの 内 部 テーブルキャプションの 内 部 テーブルキャプションとテーブルの 間 テーブルヘッダの 内 部 テーブルフッタの 内 部 テーブルヘッダと 行 グループの 間 テーブルフッタと 行 グループの 間 4.10 改 ページ 制 御 245

4.デザイナーガイド 通 常 のフローのブロック 通 常 のフローでは orphans [css], widows [css] を 尊 重 して 改 ページが 行 われます ブ ロックに 境 界 線 がある 場 合 に 境 界 線 の 直 後 あるいは 高 さが 指 定 されていて 内 容 がない ブロックの 内 部 では なるべく 改 ページを 避 けますが ブロックがページの 先 頭 ある 場 合 は 改 ページが 発 生 します 浮 動 ボックス 浮 動 ボックスがページの 下 端 をはみ 出 した 場 合 浮 動 ボックスは 分 割 され 次 ページに 送 られた 部 分 は 浮 動 ボックスとして 再 配 置 されます 浮 動 ボックスの 分 割 でも orphans [css], windows [css] の 指 定 は 尊 重 されますが 条 件 を 満 たせない 場 合 であって も 浮 動 ボックスを 丸 ごと 次 ページに 送 られることはなく その 場 合 はorphans [css], widows [css] を 無 視 して 分 割 されます 画 像 および{page-break-inside: avoid;が 指 定 された 浮 動 ボックスは 分 割 され ることはなく ページの 下 端 をはみ 出 した 場 合 は 丸 ごと 次 のページに 持 ち 越 されます た だ し 浮 動 ボ ッ ク ス の 中 に 入 れ 子 に な っ た 浮 動 ボ ッ ク ス で は{page-breakinside: avoid;は 無 効 です 246 4.10 改 ページ 制 御

4.デザイナーガイド 4.11 テーブル 内 での 改 ページ Copper PDFはテーブルの 行 間 テーブルの 行 の 途 中 (セルの 途 中 )での 改 ページが 可 能 で す また テーブルのヘッダとテーブルのフッタは 各 ページで 繰 り 返 し 表 示 されます 4.11.1 改 ページされない 場 所 テーブル 内 の 次 の 場 所 では どのような 場 合 も 改 ページされることはありません テーブルのキャプション 内 テーブルのキャプションとテーブルの 間 テーブルヘッダの 内 部 テーブルフッタの 内 部 テーブルのヘッダと 行 グループの 間 テーブルのフッタと 行 グループの 間 従 って 上 記 の 部 分 に 指 定 されたpage-break-after [css], page-break-before [css], page-break-inside [css] は 無 視 されます また 上 記 の 規 則 が 適 用 された 結 果 テー ブルの 行 グループが 存 在 する 限 り どのように 改 ページが 発 生 する 場 合 も テーブルの 行 グループの 一 部 が 常 に 表 示 され ヘッダかフッタだけのテーブルが 現 れることはあ りません 上 記 の 部 分 がページの 高 さを 超 える 場 合 は テーブルがページの 下 端 をはみ 出 します 従 って 適 切 なレイアウトとなるためには テーブルのキャプションとヘッダとフッタ の 高 さが ページの 高 さに 対 して 十 分 に 小 さいことが 望 ましいです 4.11.2 page-break-xxxの 適 用 改 ページに 関 する 特 性 は 行 の 間 には 通 常 のフローのブロックと 同 様 に 適 用 されます 改 ページに 関 する 特 性 の 指 定 は 行 グループの 間 にも 適 用 されます ただし 強 制 改 ペー ジでleft, rightの 指 定 は 有 効 ではなく 効 果 はalwaysと 同 じになります セルに 対 するpage-break-inside [css] は 行 に 適 用 されます 同 じ 行 内 でautoとavoid が 指 定 されたセルが 競 合 する 場 合 avoidが 優 先 されます すなわち 行 に 属 するセルの うち1つでもavoidが 指 定 された 場 合 行 全 体 の 中 での 改 ページが 禁 止 されます また セルがrowspanで 連 結 されている 場 合 セルが 属 する 全 ての 行 の 内 部 で 改 ページが 抑 制 さ れ る の に 加 え て 行 の 間 で page-break-after [css] お よ び page-break-before [css] にavoidが 指 定 されたものと 見 なされます セルに 対 するpage-break-after [css] および page-break-before [css] は 行 に 適 用 されます この 場 合 の 優 先 順 位 は 次 の 順 になります always > avoid > auto 4.11 テーブル 内 での 改 ページ 247

4.デザイナーガイド テーブルがページの 先 頭 にあり かつ 改 ページ 禁 止 指 定 のために ページの 下 端 までの 間 で 改 ページできない 場 合 は 行 間 の 改 ページ 禁 止 を 無 視 します この 場 合 は 改 ペー ジが 禁 止 された 部 分 であっても 改 ページが 発 生 します 4.11.3 テーブル 行 内 部 (セル 内 部 )での 改 ページ テーブル 行 内 に {page-break-inside: avoid;が 指 定 されたセルがなく テーブ ル 行 がページの 下 端 に 差 し 掛 かっている 場 合 そのテーブル 行 の 分 割 が 試 みられます このとき orphans [css] とwidows [css] が 尊 重 され 行 に 属 する 全 てのセルが 分 割 不 可 能 な 場 合 は 行 全 体 が 次 のページに 先 送 りされます 1つでも 分 割 可 能 なセルがあった 場 合 は 行 が 分 割 されます この 場 合 他 のセルに 対 してはorphans [css] とwidows [css] を 無 視 した 分 割 が 起 こる 可 能 性 があります 分 割 されたセルに 対 してはvertical-align [css] による 垂 直 アラインメ ントの 指 定 が 無 効 となり セルの 内 容 は 全 てセルの 上 端 につけられます 4.11.4 デフォルトの 改 ページ 禁 止 HTMLのtd,th 要 素 は デフォルトで{page-break-inside: avoid; が 設 定 されて います テーブルセル 内 の 改 ページを 有 効 にするには HTMLのtd, th 要 素 に 対 して 明 示 的 に {page-break-inside:: auto; を 指 定 する 必 要 があります (td, th 以 外 の 要 素 に 対 して {display: table-cell; を 指 定 したことによるテーブルセルは この 限 りではありません ) 例 4.75 テーブルセル 内 での 改 ページを 有 効 にするCSS td, th { page-break-inside: auto; 上 のスタイルシートをデフォルトのスタイルシートとして 指 定 しておけば あらゆる ページでテーブルセル 内 での 改 ページがされるようになります 248 4.11 テーブル 内 での 改 ページ

4.デザイナーガイド 4.12 WebFont Copper PDF 3.0.0 からWebFont がサポートされました WebFont は CSSによりファイル システム 上 やネットワーク 上 のフォントを 指 定 し 文 書 をレイアウトする 際 に 読 み 込 むものです Internet Explorer, Safari, Chrome, Firefox 等 の 最 新 のブラウザはWebFontをサ ポートしており これらのブラウザ 向 けに 表 示 環 境 に 関 わらず 同 じフォントが 表 示 さ れるようにした 文 書 はCopper PDFでも 同 じフォントを 表 示 することができます WebFontは 非 常 に 手 軽 に 使 える 反 面 文 書 のレイアウトの 度 にフォントファイルを 読 み 込 むため 処 理 速 度 が 遅 くなります WebFontの 利 用 は 開 発 時 や どうしても 使 用 する 必 要 がある 場 合 にとどめ 可 能 な 限 りシステムのフォント 設 定 (44ページ)で 対 応 するこ とを 推 奨 します 4.12.1 @font-face ルール 文 書 からフォントファイルを 読 み 込 むにはCSSの@font-faceルールを 使 います 以 下 は 欧 文 フォントを 読 み 込 む 例 です 例 4.76 ネットワーク 上 のフォントの 読 み 込 み(ソース) <html> <head> <style type="text/css"> @font-face { font-family: "VeraSerif"; src: url("http://dl.cssj.jp/docs/copper/misc/bitstreamvera/vera.ttf"); @font-face { font-family: "VeraSerif"; font-weight: bold; src: url("http://dl.cssj.jp/docs/copper/misc/bitstreamvera/verabd.ttf"); @font-face { font-family: "VeraSerif"; font-style: italic; src: url("http://dl.cssj.jp/docs/copper/misc/bitstreamvera/verait.ttf"); body { font-family: "VeraSerif".bold { font-weight: bold;.italic { 4.12 WebFont 249

4.デザイナーガイド font-style: italic; </style> </head> <body> <p>this is Bitstream Vera Serif.</p> <p class="bold">this is Bitstream Vera Serif Bold.</p> <p class="italic">this is Bitstream Vera Serif Italic.</p> </body> </html> 図 4.21 ネットワーク 上 のフォントの 読 み 込 み( 表 示 結 果 ) @font-face 内 で は font-family [css], font-style [css], font-weight [css], unicode-range [css], src [css] の 各 プロパティを 設 定 することができます このうち font-family [css], src [css] は 必 須 です font-family [css], font-style [css], font-weight [css] は 読 み 込 まれたフォントの 属 性 となります 文 書 中 で 適 切 なフォントが 選 択 される 際 の 手 がかりとなります Copper PDF がフォントを 選 択 する 方 法 については ドキュメント 中 でのフォントの 利 用 (45ページ) をご 参 照 ください font-family フォントのファミリ 名 です font-style フォントのスタイルです normal, italic, obliqueのいずれかです デフォルトはnormalで す font-weight フォントの 太 さです normal, bold または100から900までの100 刻 みの 値 です デフォル トはnormalです 250 4.12 WebFont

4.デザイナーガイド unicode-range フォントが 利 用 可 能 な 文 字 コードの 範 囲 です ここで 指 定 されたコード 範 囲 にあり か つフォントファイルに 定 義 されている 文 字 が 利 用 可 能 な 文 字 となります デフォルト はU+0-10FFFFです 記 述 例 は 次 のとおりです unicode-range: U+A5; 円 記 号 ( )の 文 字 だけに 適 用 します unicode-range: U+0-7F; ASCII 文 字 ( 文 字 コード0から127)だけに 適 用 します unicode-range: U+30??; ひらがな カタカナ( 文 字 コード16 進 数 で3000 番 台 )だけに 適 用 します unicode-range: U+A5, U+0-7F, U+30??; 前 記 の3つのコード 範 囲 を 合 わせたものです src フォントファイルの 位 置 です 記 述 例 は 次 のとおりです src: url(fonts/ipamincho.otf); fonts/ipamincho.otfというパスにあるフォントファイルを 読 み 込 みます src: local(ms 明 朝 ) (Copper PDFが 動 作 している)OSにインストールされたMS 明 朝 という 名 前 のフォント を 読 み 込 みます src: local(ms 明 朝 ), url(fonts/ipamincho.otf) OS に イ ン ス ト ー ル さ れ た MS 明 朝 が 利 用 可 能 で あ れ ば そ れ を 使 い な け れ ば fonts/ipamincho.otfを 読 み 込 みます 対 応 しているフォントフォーマットは TrueType, OTF, WOFF[3.1.0]です SVGフォント 等 はサポートしていません 次 の 例 は 漢 字 にはIPA Pゴシック ひらがなと 英 数 字 にはきろ 字 を 使 用 します 4.12 WebFont 251

4.デザイナーガイド 例 4.77 複 数 のフォントの 併 用 (ソース) <html> <head> <style type="text/css"> @font-face { font-family: "MyFont"; src: url("http://dl.cssj.jp/docs/copper/misc/ipagp.otf"); unicode-range: U+4E00-9FFF; @font-face { font-family: "MyFont"; src: url("http://dl.cssj.jp/docs/copper/misc/kiloji.ttf"); unicode-range: U+A5, U+0-7F, U+30??; body { font-family: "MyFont"; </style> </head> <body> <p> 目 に 青 葉 / 山 ほととぎす/ 初 がつお</p> </body> </html> 図 4.22 複 数 のフォントの 併 用 ( 表 示 結 果 ) 252 4.12 WebFont

4.デザイナーガイド 4.13 縦 書 き Copper PDF は 縦 書 きを 独 自 にサポートしています[3.0.0] これはドラフト 段 階 のCSS3 Writing Modes(2010 年 12 月 現 在 ) 仕 様 の 一 部 を 先 行 して 実 装 したものです Copper PDFの 現 在 の 実 装 は 将 来 リリースされるW3C 規 格 との 互 換 性 を 保 証 するものではありませ ん またCopper PDFの 将 来 のバージョンでは 仕 様 に 変 更 が 生 ずる 可 能 性 があります 4.13.1 -cssj-writing-mode -cssj-writing-mode [css] は CSS3 Writing Modesのwriting-mode [css] の 先 行 実 装 です 仕 様 は 次 のとおりです 値 初 期 値 適 用 対 象 値 の 継 承 horizontal-tb vertical-rl lr lr-tb rl tb tb-rl horizontal-tb テーブル 行 グループ テーブルカラムグループ テーブル 行 テーブルカラム 以 外 の 要 素 する 要 素 に 対 して horizontal-tbは 横 書 き vertical-rl は 縦 書 きを 適 用 します SVG, Internet Explorerとの 互 換 性 のために 用 意 されている lr, lr-tb, rlはhorizaontal-tbと 同 じ 意 味 であ り 同 様 にtb, tb-rlはvertical-rlと 同 じ 意 味 です テーブルセル(td, th)に-cssj-writing-mode [css] を 指 定 することができますが テー ブルセルの 書 字 方 向 を 変 えることは 推 奨 しません 書 字 方 向 が 変 えられたテーブルセ ル の 途 中 で は 常 に 改 ペ ー ジ で き な く な り ま す 代 わ り に テ ー ブ ル セ ル 内 に -cssj-writing-mode [css] を 設 定 したdivタグを 入 れ 子 にするなどしてください 4.13.2 文 書 の 書 字 方 向 文 書 全 体 の 書 字 方 向 は 文 書 のドキュメント 要 素 (XMLではルート 要 素 HTMLでは BODY 要 素 )に 対 する -cssj-writing-mode [css] の 指 定 によります 文 書 全 体 の 書 字 方 向 は 文 書 の 綴 じ 方 向 に 影 響 します すなわち 横 書 きでは 左 綴 じ 縦 書 きでは 右 綴 じとなります page-break-before [css], page-break-after [css] に 対 するleft, rightによる 強 制 改 ページでは 綴 じ 方 向 が 考 慮 されます 4.13 縦 書 き 253

4.デザイナーガイド 横 書 きの 場 合 は 内 容 が 下 にはみ 出 したところから 改 ページされますが 縦 書 きでは 内 容 が 左 にはみ 出 したところから 改 ページされます 例 4.78 文 書 全 体 を 縦 書 きにする(ソース) <html> <head> <style type="text/css"> body { writing-mode: vertical-rl; </style> </head> <body> <p> 石 炭 をば 早 や 積 み 果 てつ 中 等 室 の 卓 のほとりはいと 靜 にて 熾 熱 燈 の 光 の 晴 れがましきも 徒 なり 今 宵 は 夜 毎 にこゝに 集 ひ 來 る 骨 牌 仲 間 も ホテル に 宿 りて 舟 に 殘 れるは 余 一 人 のみなれ ば </p> </body> </html> 図 4.23 文 書 全 体 を 縦 書 きにする( 表 示 結 果 ) 254 4.13 縦 書 き

4.デザイナーガイド 4.13.3 書 字 方 向 の 混 在 横 書 き 中 に 縦 書 き 指 定 された 要 素 がある あるいは 縦 書 き 中 に 横 書 き 指 定 された 要 素 がある 場 合 書 字 方 向 が 混 在 するものとして 処 理 します 文 書 の 書 字 方 向 と 異 なる 要 素 の 中 では 改 ページすることはできません ブロックの 書 字 方 向 が 異 なる 場 合 そのブロックのページ 進 行 方 向 の 幅 ( 親 要 素 が 横 書 きでは 高 さ 縦 書 きでは 幅 )がautoであれば ページの 高 さとなります しかし 書 字 方 向 の 異 なるブロックを ページ 進 行 方 向 の 幅 をautoで 配 置 することは 推 奨 しません 行 方 向 の 幅 ( 親 要 素 横 書 きでは 幅 縦 書 きでは 高 さ)の 計 算 方 法 は 通 常 の 場 合 と 同 じで す そのため 内 容 が 長 ければ 親 要 素 の 行 方 向 にはみ 出 すことになります あるいは 多 段 組 (ページ)を 活 用 してください 例 4.79 横 書 きの 文 書 の 一 部 を 縦 書 きにする(ソース) <html> <head> <style type="text/css"> body { border: 1pt dashed Red; #a { writing-mode: vertical-rl; height: 6em; border: 1pt solid Red; </style> </head> <body> <p> 石 炭 をば 早 や 積 み 果 てつ 中 等 室 の 卓 のほとりはいと 靜 にて 熾 熱 燈 の 光 の 晴 れがましきも 徒 なり 今 宵 は 夜 毎 にこゝに 集 ひ 來 る 骨 牌 仲 間 も ホテル に 宿 りて 舟 に 殘 れるは 余 一 人 のみなれ ば </p> <div id="a"> 五 年 前 の 事 なりしが 平 生 の 望 足 りて 洋 行 の 官 命 を 蒙 り このセイゴンの 港 まで 來 し 頃 は 目 に 見 るもの 耳 に 聞 くもの 一 つとして 新 ならぬはなく 筆 に 任 せて 書 き 記 しつる 紀 行 文 日 ごとに 幾 千 言 をかなしけむ 當 時 の 新 聞 に 載 せられて 世 の 人 にもてはやされしかど 今 日 に なりておもへば 穉 き 思 想 身 の 程 知 らぬ 放 言 さらぬも 尋 常 の 動 植 金 石 さては 風 俗 などを さへ 珍 しげにしるしゝを 心 ある 人 はいかにか 見 けむ </div> </body> </html> 4.13 縦 書 き 255

4.デザイナーガイド 図 4.24 横 書 きの 文 書 の 一 部 を 縦 書 きにする( 表 示 結 果 ) インラインの 書 字 方 向 が 異 なる 場 合 インラインブロックとして 配 置 します これは 縦 中 横 のために 使 うことができます 例 4.80 縦 中 横 (ソース) <html> <head> <style type="text/css"> body { writing-mode: vertical-rl;.tcy { writing-mode: horizontal-tb; </style> </head> <body> <p> <span class="tcy">2010</span> 年 <span class="tcy">7-9</span> 月 期 の 実 質 <span class="tcy">gdp</span>( 国 内 総 生 産 )の 成 長 率 は 民 間 最 終 消 費 支 出 がプラスに 寄 与 したことなどから 前 期 比 で<span class="tcy">0.9</span>% 増 ( 年 率 <span class="tcy">3.9 </span>% 増 )となった(4 四 半 期 連 続 のプラス) また 名 目 <span class="tcy">gdp</span> 成 長 率 は 前 期 比 で <span class="tcy" >0.7</span>% 増 となった(2 四 半 期 ぶりのプラス) </p> </body> </html> 256 4.13 縦 書 き

4.デザイナーガイド 図 4.25 縦 中 横 ( 表 示 結 果 ) 4.13.4 -cssj-direction-mode margin-top [css], border-left [css], padding-bottom [css] といったマージン 境 界 パディング 等 の 方 向 に 依 存 するプロパティは 書 字 方 向 に 関 わらず 物 理 的 な 方 向 (*- topなら 常 に 上 *-leftなら 常 に 左 のように) に 適 用 されます しかし 横 書 きの 文 書 を 縦 書 きに 切 り 替 えるスタイルシートを 作 成 する 場 合 横 書 きで 上 だったものを 右 右 だっ たものを 下 下 だったものを 左 左 だったものを 上 に それぞれ 回 転 させることで 新 し いスタイルシートの 記 述 が 最 小 限 で 済 む 場 合 があります 特 に style 属 性 によるスタイ ルでマージン 等 が 指 定 された 既 存 の 文 書 の 書 字 方 向 を 変 えるには 方 向 に 依 存 するス タイル 指 定 を 回 転 させるしかありません -cssj-direction-mode [css] は 方 向 に 依 存 するプロパティを 回 転 させます 仕 様 は 次 のとおりです 値 physical logical horizontal-tb[3.0.12] vertical-rl[3.0.12] 初 期 値 適 用 対 象 値 の 継 承 physical 全 ての 要 素 する -cssj-direction-mode [css] がlogicalまたはhorizontal-tbの 場 合 方 向 に 依 存 するプロ パティを 横 書 きを 基 準 として 論 理 的 に 適 用 します topはページ 進 行 方 向 の 前 bottom はページ 進 行 方 向 の 後 leftは 行 頭 rightは 行 末 という 意 味 になります 値 の 継 承 は 変 わ りません 例 えばmargin-top [css] は 常 にmargin-top [css] に 継 承 します 継 承 などに より 得 られた 計 算 値 を 論 理 的 な 方 向 に 読 み 替 えて スタイルを 構 成 する 要 素 に 適 用 しま す 4.13 縦 書 き 257

4.デザイナーガイド page-break-before [css], page-break-after [css] に 対 するleft, right 指 定 は それぞ れ 偶 数 ページ(verso) 奇 数 ページ(recto)として 処 理 します すなわち 全 体 が 縦 書 き( 右 綴 じ)の 文 書 では 左 右 の 指 定 が 逆 になります background-position [css] は yがパーセント 値 の 場 合 は (100%-y) の 値 が 適 用 され そしてx 値 とy 値 が 逆 転 されます background-repeat [css] repeat-xとrepeat-y が 逆 転 されます 縦 書 きでは 次 の 通 りにプロパティの 計 算 値 を 適 用 します 元 の 計 算 値 width height max-width max-height min-width min-height padding-top padding-right padding-bottom padding-left border-top-color border-right-color border-bottom-color border-left-color border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width border-bottom-width 計 算 値 を 適 用 するプロパティ height width max-height max-width min-height min-width padding-right padding-bottom padding-left padding-top border-right-color border-bottom-color border-left-color border-top-color border-right-style border-bottom-style border-left-style border-top-style border-right-width border-bottom-width border-left-width 258 4.13 縦 書 き

4.デザイナーガイド 元 の 計 算 値 border-left-width margin-top margin-right margin-bottom margin-left top right bottom left 計 算 値 を 適 用 するプロパティ border-top-width margin-right margin-bottom margin-left margin-top right bottom left top また width [css] は 行 進 行 方 向 の 幅 height [css] はいずれの 場 合 もページ 進 行 方 向 の 幅 として 処 理 します 最 大 幅 最 小 幅 を 指 定 するプロパティ(max-width [css] など) も 同 様 です しかし 一 般 的 に 画 像 は 初 期 方 向 が 切 り 替 わっても 回 転 させることはないた め 縦 横 の 幅 を 維 持 する 必 要 があります そのため 画 像 の 幅 と 高 さに 対 しては logical またはhorizontal-tb, horizontal-tbの 設 定 は 影 響 しません float [css], clear [css], text-align [css], caption-side [css] は も と も と -cssj-direction-mode [css] の 影 響 を 受 けません 常 に 設 定 値 のleftは 行 頭 rightは 行 末 topはページ 進 行 方 向 の 前 bottomはページ 進 行 方 向 の 後 として 処 理 されます 次 のような 横 書 きの 文 書 があるとします 例 4.81 横 書 きの 文 書 (ソース) <html> <head> <style type="text/css"> p { text-indent: 1em; text-align: justify; </style> </head> <body> <h1 style="border-bottom: 2pt dashed">かっぱ</h1> 4.13 縦 書 き 259

4.デザイナーガイド <img src="kappa.png" width="148" height="199" alt="かっぱ" align="left"/> <p> 河 童 (かっぱ)は 日 本 の 妖 怪 伝 説 上 の 動 物 または 未 確 認 動 物 標 準 和 名 の かっぱ は かわ( 川 ) に わらは( 童 ) の 変 化 形 わっぱ が 複 合 した かわわっぱ が 変 化 したもの 河 太 郎 (かわたろう)とも 言 う ほぼ 日 本 全 国 で 伝 承 され その 呼 び 名 や 形 状 も 各 地 方 によって 異 なる </p> </body> </html> 図 4.26 横 書 きの 文 書 ( 表 示 結 果 ) この 文 書 のbodyに 対 して {writing-mode: vertical-rl; を 適 用 すると 文 書 が 縦 書 きになりますが 見 出 しの 境 界 線 や 画 像 のマージンの 方 向 はそのままになります 図 4.27 縦 書 きに 変 換 ( 表 示 結 果 ) さらにbodyに 対 して {-cssj-direction-mode: logical; を 適 用 すると 見 出 し の 境 界 線 や 画 像 のマージンが 回 転 され より 適 切 な 表 示 になります 260 4.13 縦 書 き

4.デザイナーガイド 図 4.28 論 理 方 向 モードで 縦 書 きに 変 換 ( 表 示 結 果 ) -cssj-direction-mode [css] にvertical-rl を 設 定 した 場 合 は 方 向 に 依 存 するプロパ ティを 縦 書 を 基 準 として 論 理 的 に 適 用 します page-break-before [css], page-break-after [css] に 対 するleft, right 指 定 は それぞ れ 奇 数 ページ(recto) 偶 数 ページ(verso)として 処 理 します すなわち 全 体 が 縦 書 き( 右 綴 じ)の 文 書 では 左 右 の 指 定 が 逆 になります background-position [css] は xがパーセント 値 の 場 合 は (100%-x) の 値 が 適 用 され そしてx 値 とy 値 が 逆 転 されます background-repeat [css] repeat-xとrepeat-y が 逆 転 されます 横 書 きでは 次 の 通 りにプロパティの 計 算 値 を 適 用 します 元 の 計 算 値 width height max-width max-height min-width min-height padding-top padding-right padding-bottom padding-left 計 算 値 を 適 用 するプロパティ height width max-height max-width min-height min-width padding-left padding-top padding-right padding-bottom 4.13 縦 書 き 261

4.デザイナーガイド 元 の 計 算 値 border-top-color border-right-color border-bottom-color border-left-color border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width border-bottom-width border-left-width margin-top margin-right margin-bottom margin-left top right bottom left 計 算 値 を 適 用 するプロパティ border-left-color border-top-color border-right-color border-bottom-color border-left-style border-top-style border-right-style border-bottom-style border-left-width border-top-width border-right-width border-bottom-width margin-left margin-top margin-right margin-bottom left top right bottom その 他 のプロパティの 扱 いに 関 しては {-cssj-direction-mode: logical;の 場 合 と 同 様 です 262 4.13 縦 書 き

4.デザイナーガイド 4.14 多 段 組 Copper PDF は 多 段 組 を 独 自 にサポートしています[3.0.0] これは 勧 告 候 補 段 階 のCSS3 Multi-column Layout(2010 年 12 月 現 在 ) 仕 様 の 一 部 を 先 行 して 実 装 したものです Copper PDFの 現 在 の 実 装 は 将 来 リリースされるW3C 規 格 との 互 換 性 を 保 証 するものではあり ません またCopper PDFの 将 来 のバージョンでは 仕 様 に 変 更 が 生 ずる 可 能 性 がありま す 印 刷 面 の 大 きさに 比 べて 文 字 が 小 さい 場 合 1 行 の 幅 が 大 きくなってしまい 非 常 に 読 み にくいことがあります そんな 時 は 多 段 組 をすると 読 みやすくなります また 空 白 が 少 なくなるため より 紙 面 を 節 約 できます 多 段 組 では 段 数 に 応 じて 行 方 向 の 幅 が 圧 縮 されます % 指 定 で 配 置 された 画 像 やボッ クスの 大 きさは 段 の 幅 に 対 する 比 率 となります 見 出 しなどは ブチ 抜 きで 配 置 することができます 例 4.82 2 段 組 (ソース) <html> <head> <style type="text/css"> div { column-count: 2; column-gap: 2em; column-rule: 1pt solid; h1 { border-bottom: 2pt dashed; column-span: all; img { float: left; width: 50%; p { text-indent: 1em; text-align: justify; margin: 0; </style> </head> <body> <div> <p> 妖 怪 (ようかい)は 日 本 で 伝 承 される 民 間 信 仰 において 人 間 の 理 解 を 超 える 奇 怪 で 異 常 な 現 象 や あるいはそれらを 起 こす 不 可 思 議 な 力 を 持 つ 非 日 常 的 な 存 在 のこと 妖 (あやか し)または 物 の 怪 (もののけ) 魔 物 (まもの)とも 呼 ばれる 4.14 多 段 組 263

4.デザイナーガイド </p> <h1>かっぱ</h1> <img src="kappa.png" alt="かっぱ" /> <p> 河 童 (かっぱ)は 日 本 の 妖 怪 伝 説 上 の 動 物 または 未 確 認 動 物 標 準 和 名 の かっぱ は かわ( 川 ) に わらは( 童 ) の 変 化 形 わっぱ が 複 合 した かわわっぱ が 変 化 したもの 河 太 郎 (かわたろう)とも 言 う ほぼ 日 本 全 国 で 伝 承 され その 呼 び 名 や 形 状 も 各 地 方 によって 異 なる </p> </div> </body> </html> 図 4.29 2 段 組 ( 表 示 結 果 ) column-gap column-count: 2; column-span: all; (ブチ 抜 き) column-rule ( 罫 線 ) 段 組 に 関 する 各 プロパティの 説 明 は 次 のとおりです 4.14.1 -cssj-column-count 値 初 期 値 auto 1 以 上 の 整 数 auto 264 4.14 多 段 組