Copper PDF 3.0 説明書 2015-6-21



Similar documents
Copper PDF 3.0 説明書

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

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

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

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

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

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

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

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

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

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

PowerPoint プレゼンテーション

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

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

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

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

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

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

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

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

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

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

スライド 1

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

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

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

Acrobat早分かりガイド

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

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

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

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

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

R4財務対応障害一覧

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

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

アドイン翻訳について

スライド 1

富士山チェックリスト

<4D F736F F D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A B E A2E646F63>

Copper PDF 3.2 説明書

贈与税 faq

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

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

SchITコモンズ【活用編】

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

PowerPoint Presentation

MapDK3のインストール

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

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

PowerPoint プレゼンテーション

研究者情報データベース


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

CSV_Backup_Guide

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

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

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

スライド 1

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

表紙

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

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

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

<4D F736F F D F B B838082F090DD927582B782E995FB96405F E646F6378>

Microsoft Word - Active.doc

■ユーザ

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

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

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

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

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

Untitled

ThinkBoard Free60 Manual

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

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

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

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

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

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

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

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

CubePDF ユーザーズマニュアル

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


変 更 履 歴 版 日 付 区 分 変 更 内 容 変 更 個 所 /11/30 新 規 初 版 作 成 /12/10 修 正 資 料 カバー 画 像 設 定 の 操 作 内 容 を 追 加 資 料 カバー 画 像 設 定 i

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

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

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

(Microsoft Word - FileZillaServer_\212\310\210\325FTP\203T\201[\203o_\216g\227p\203K\203C\203h_\216Q\215l\227p__JE DOC)

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

■コンテンツ

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

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

Microsoft Word - 311Tools_END

Gmail 利用者ガイド

1-2 新 規 CPD 会 員 登 録 の 申 請 から 登 録 までの 手 順 当 協 会 CPDシステムを 利 用 するためには 当 協 会 ホームページトップ 画 面 より CPD 事 務 局 へ のCPD 会 員 登 録 が 必 要 です CPD 会 員 登 録 が 完 了 すると 登 録

Microsoft Word - セキュアMyNUMBER_詳細マニュアル_ docx

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

Office365 ProPlus 利用方法について

<4D F736F F D C97F195CF8AB DEC90E096BE8F912091E6312E313294C52E646F63>

Transcription:

HTML PDF変換サーバー Copper PDF バージョン 3.0 説明書 発売元 株式会社 GNN 2015-6-21

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 ラスター(ビットマップ) 画 像 データ 7 1.3.2 PDF 出 力 8 1.3.3 画 像 出 力 8 1.3.4 フォント 関 連 機 能 8 1.3.5 HTTP 接 続 9 1.3.6 印 刷 サポート 9 1.3.7 目 次 ページ 参 照 9 1.3.8 プログラムインターフェース 9 Copper PDF 2.0 以 前 9 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) 4/5/6 21 Copper PDFサーバーの 起 動 停 止 22 2.1.5 Debian 22 Copper PDFサーバーの 起 動 停 止 23 2.1.6 その 他 の 環 境 23 2.1.7 ディレクトリ 構 成 24 アーカイブ 内 のディレクトリ 構 成 24 RPMまたはDebianパッケージの 構 成 25 2.1.8 ライセンスキー ファイルの 配 置 25 2.1.9 旧 バージョンからのアップデート 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) 41 2.3.6 profilesディレクトリ 42 2.3.7 デフォルトの 入 出 力 プロパティ(default.properties) 42 2.3.8 fontsディレクトリ 42 2.4 フォントの 設 定 43 2.4.1 フォント 設 定 の 反 映 44 2.4.2 ドキュメント 中 でのフォントの 利 用 44 2.4.3 デフォルトのフォント 45 2.4.4 フォントの 種 類 45 2.4.5 コアフォント 46 2.4.6 CIDフォント 49 埋 め 込 みフォント 50 CID Identity 50 iv

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

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

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

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

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

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

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

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

浮 動 ボックス 243 4.11 テーブル 内 での 改 ページ 244 4.11.1 改 ページされない 場 所 244 4.11.2 page-break-xxxの 適 用 244 4.11.3 テーブル 行 内 部 (セル 内 部 )での 改 ページ 245 4.11.4 デフォルトの 改 ページ 禁 止 245 4.12 WebFont 246 4.12.1 @font-face ルール 246 font-family 247 font-style 247 font-weight 247 unicode-range 248 src 248 4.13 縦 書 き 250 4.13.1 -cssj-writing-mode 250 4.13.2 文 書 の 書 字 方 向 250 4.13.3 書 字 方 向 の 混 在 252 4.13.4 -cssj-direction-mode 254 4.14 多 段 組 260 4.14.1 -cssj-column-count 261 4.14.2 -cssj-column-width 262 4.14.3 -cssj-columns 262 4.14.4 -cssj-column-gap 262 4.14.5 -cssj-column-rule-color 263 4.14.6 -cssj-column-rule-style 263 4.14.7 -cssj-column-rule-width 263 4.14.8 -cssj-column-rule 264 4.14.9 -cssj-column-fill 264 4.14.10 -cssj-column-span 264 4.14.11 改 段 と 改 ページ 265 自 動 的 な 改 段 と 改 ページ 265 強 制 的 な 改 段 と 改 ページ 265 5. 資 料 集 266 5.1 入 出 力 プロパティ 一 覧 266 5.1.1 文 書 中 で 設 定 できないプロパティ 277 5.1.2 機 能 限 定 版 278 5.2 メッセージハンドラから 取 得 できる 情 報 279 5.2.1 Copper PDF 2.0 以 前 (CTIP 1.0) 279 5.2.2 Copper PDF 2.1 以 降 (CTIP 2.0) 279 メッセージコードのフィルタリング[3.0.0] 281 5.3 CSSプロパティのサポート 状 況 282 5.4 HTMLの 各 要 素 属 性 のサポート 状 況 286 5.5 拡 張 機 能 291 5.5.1 処 理 命 令 の 拡 張 291 5.5.2 CSSプロパティの 拡 張 291 CSSプロパティ 291 CSS 関 数 296 CSS 識 別 子 296 5.5.3 XMLの 拡 張 297 XML 要 素 297 XML 属 性 297 xiii

1.Copper PDF 入 門 Copper PDF 3.0 説 明 書 2015-6-21 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.1 Copper PDFの 概 要

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に 変 換 することができます 1.1 Copper PDFの 概 要 2

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

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 以 降 1.2 動 作 環 境 4

1.Copper PDF 入 門 Copper PDF 3.0 説 明 書 2015-6-21 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 接 続 をする 場 合 ) 5 1.2 動 作 環 境

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

1.Copper PDF 入 門 Copper PDF 3.0 説 明 書 2015-6-21 1.3 機 能 一 覧 1.3.1 入 力 データ 形 式 ドキュメント HTML/XHTML (173ページ) - HTML/XHTML 文 書 をレイアウトします XML (173ページ) - XML 文 書 をレイアウトします スタイルシート CSS 2.1 (200ページ) - HTML/XHTML/XML 文 書 をCSSでスタイル 付 けします XSLT (175ページ) - XML 文 書 をXSLTで 変 換 します メディアタイプの 設 定 (200ページ) - 印 刷 向 け 以 外 のスタイルシートを 適 用 します ユーザーのCSSスタイルシート (204ページ) ユーザーのXSLTスタイルシート (175ページ) WebFont(@font-face) (246ページ)[3.0.0] - ネットワーク 上 からTrueType フォント OTF を 読 み 込 めます 縦 書 き (250ページ)[3.0.0] - 縦 書 きレイアウトをサポートしています 段 組 み (260ページ)[3.0.0] - 多 段 組 をサポートしています ルビ (198ページ)[3.0.0] 禁 則 文 字 の 追 加 除 外 (209ページ)[3.0.6] 圏 点 (213ページ)[3.0.4] 文 字 の 影 (217ページ)[3.0.8] 袋 文 字 (218ページ)[3.0.8] 透 明 化 (221ページ)[3.0.6] 角 丸 境 界 (223ページ)[3.0.6] 回 転 拡 大 変 形 (226ページ)[3.0.8] ベクター 画 像 データ SVG (176ページ) - SVGを 直 接 PDF 等 のデータ 形 式 に 変 換 します[2.1.0] または 文 書 中 にSVG 形 式 の 絵 図 を 埋 め 込 みます ラスター(ビットマップ) 画 像 データ 画 像 を 直 接 PDF 等 のデータ 形 式 に 変 換 します[2.1.0] または 文 書 中 に 画 像 を 埋 め 込 みま す GIF/PNG (175ページ) JPEG (176ページ) - JPEGをそのままPDF 中 に 埋 め 込 むことができます 7 1.3 機 能 一 覧

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

1.Copper PDF 入 門 Copper PDF 3.0 説 明 書 2015-6-21 埋 め 込 みフォント (43ページ) - 環 境 に 依 存 しないPDFを 出 力 するために TrueType, OpenType 等 のフォントを 埋 め 込 みます デフォルトのフォントの 設 定 (45ページ) フォント 幅 情 報 MSフォントの 使 用 (52ページ) 1.3.5 HTTP 接 続 Copper PDFが 外 部 のサーバーからHTTP 接 続 で 文 書 を 取 得 する 機 能 です タイムアウトの 設 定 (168ページ) ヘッダ(Referer, User-Agent 等 )の 変 更 (166ページ) - 参 照 元 やUser-Agentを 偽 装 するこ とができます プロクシを 介 した 接 続 (166ページ) BASIC 認 証 /Digest 認 証 (165ページ) クッキー (167ページ) 1.3.6 印 刷 サポート 用 紙 サイズ 出 力 サイズの 設 定 (229ページ) ページの 拡 大 縮 小 変 形 (229ページ) トンボの 出 力 (229ページ) - 断 裁 して 製 本 するためのトンボを 表 示 します 欄 外 の 描 画 (231ページ) ページのマージン (229ページ) 片 面 印 刷 両 面 印 刷 の 切 り 替 え (232ページ) グレイスケール 変 換 (232ページ) - カラーの 文 書 をモノトーンに 変 換 します 1.3.7 目 次 ページ 参 照 2パス 以 上 の 処 理 (231ページ) - 目 次 やページ 参 照 のために 文 書 を 複 数 回 処 理 できま す 欄 外 のページ 番 号 見 出 し(233ページ) - 欄 外 にページ 番 号 や 見 出 しを 出 力 します 目 次 の 生 成 (194ページ) - HTMLの 見 出 し(H1~H6)から 目 次 を 生 成 します ページの 参 照 (232ページ) - 文 書 中 の 指 定 した 部 分 のページ 番 号 を 出 力 できます 1.3.8 プログラムインターフェース Copper PDF 2.0 以 前 Java (73ページ) PHP (82ページ) Perl (78ページ) Ant (86ページ) 処 理 中 のページ 内 容 の 取 得 (64ページ) 9 1.3 機 能 一 覧

1.Copper PDF 入 門 処 理 状 況 の 取 得 (64ページ) Copper PDF 2.1 以 降 Java (JRuby, Jython) (93ページ) PHP (118ページ) Perl (111ページ).NET (C# / VB.NET) (124ページ) Ruby (134ページ) Python (140ページ) Ant (147ページ) 処 理 中 のページ 内 容 の 取 得 (ページ) 処 理 状 況 の 取 得 (ページ) サーバーからリソースを 要 求 (ページ) HTTP/REST (151ページ) (Apache 経 由 での 接 続 (40ページ) / Ruby (154ページ) / Python (156ページ) / C# (157ページ) / ASP.NET (C# / VB.NET) (159ページ) / 4th Dimension (161 ページ)) 1.3.9 その 他 の 機 能 改 ページをせずに 文 書 を 出 力 する (231ページ) 解 像 度 (pxの 大 きさ)の 設 定 (205ページ) IE 互 換 モード (ページ) - InternetExplorerの 表 示 に 近 いレイアウトモードです 出 力 データサイズ 制 限 (169ページ) - DoS 攻 撃 対 策 等 のため 出 力 サイズを 制 限 できま す ページ 数 制 限 (169ページ) - DoS 攻 撃 対 策 等 のため 出 力 ページ 数 を 制 限 できます 実 行 経 過 情 報 取 得 (279ページ) - リアルタイムで 文 書 の 変 換 状 況 をアプリケーション が 取 得 できます 1.3 機 能 一 覧 10

1.Copper PDF 入 門 Copper PDF 3.0 説 明 書 2015-6-21 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が 無 事 に 動 作 しました 11 1.4 とりあえず 使 ってみよう

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

1.Copper PDF 入 門 Copper PDF 3.0 説 明 書 2015-6-21 図 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 13 1.4 とりあえず 使 ってみよう

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

1.Copper PDF 入 門 Copper PDF 3.0 説 明 書 2015-6-21 図 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 15 1.4 とりあえず 使 ってみよう

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というファイルができれば 成 功 で す 1.4 とりあえず 使 ってみよう 16

1.Copper PDF 入 門 Copper PDF 3.0 説 明 書 2015-6-21 図 1.7 出 力 結 果 17 1.4 とりあえず 使 ってみよう

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ディレクトリを 削 除 するだけです 2.1 セットアップ 18

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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 19 2.1 セットアップ

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オプションによりサービスの 状 態 を 確 認 することができます 2.1 セットアップ 20

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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) 4/5/6 RHEL 向 けにはRPMパッケージを 配 布 しています RHELでは Java 実 行 環 境 としてjava-(バージョン)-sun が 必 要 です Red Hat Networks のSupplementaryチャンネルからyumでインストールするか Supplement CDに 収 録 されているものをインストールしてください java-(バージョン)-gcj-compatでは 動 作 しません alternatives --config java コマンドでjava-(バージョン)-sunに 切 り 替 えてくだ さい RHELの 代 替 としてCentOSを 使 用 する 場 合 は JPackage によりJava をインストールしてく ださい 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 21 2.1 セットアップ

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 2.1 セットアップ 22

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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 その 他 の 環 境 その 他 の 環 境 では tar.gzアーカイブを 使 用 してください copper-pdf-3.x.x.tar.gzを 適 当 なディレクトリに 展 開 してください 23 2.1 セットアップ

2. 管 理 者 ガイド LinuxあるいはUNIX 系 のOSの 場 合 展 開 してできたCopperPDFディレクトリ 内 のシェル スクリプト (copper, copperd, copper-webapp)を 使 用 してください また デーモンをセッ トアップするにはextras/redhat/copperdを 編 集 し 16 行 目 でCOPPER_HOME 環 境 変 数 に CopperPDFの 配 置 ディレクトリを 設 定 するようにし 適 切 な 場 所 に 配 置 してください 例 2.20 JAVA_HOME の 設 定 COPPER_HOME=[CopperPDFの 配 置 ディレクトリ] Copper PDFに 付 属 のシェルスクリプトは 環 境 変 数 JAVA_HOME により Javaのインス トールディレクトリを 判 別 します /etc/profile 等 で JAVA_HOME を 適 切 に 設 定 してく ださい 例 2.21 JAVA_HOME の 設 定 export JAVA_HOME=/usr/local/jdk1.6.0_05 JAVA_HOME が 設 定 されていない 場 合 PATH に 加 えられているjavaコマンドが 実 行 さ れます 各 ツールの 実 行 方 法 の 詳 細 はCopper PDFのツール (27ページ)の 解 説 を 参 照 してくださ い アンインストールは 単 にCopperPDFディレクトリを 削 除 するだけです 2.1.7 ディレクトリ 構 成 アーカイブ 内 のディレクトリ 構 成 ZIPまたはtar.gzアーカイブを 展 開 すると copper-pdf-3_x_xというディレクトリができま す 各 ツールの 実 行 ファイルは このディレクトリの 直 下 にあります その 他 のディレ クトリ 構 成 は 次 の 通 りです 2.1 セットアップ 24

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 図 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 jetty webapp logs 配 置 場 所 /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 系 以 前 では 実 ファイルとシンボリックリンクが 逆 転 しています /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.8 ライセンスキー ファイルの 配 置 Copper PDFは そのままでは 機 能 限 定 版 (278ページ)として 動 作 します 25 2.1 セットアップ

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

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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.24 JAVA_OPTS の 設 定 export JAVA_OPTS="-Xmx1024m -server" Javaコマンドで 直 接 ツールを 実 行 する 方 法 については 各 ツールの 説 明 を 参 照 してくだ さい copper コマンドラインアプリケーションです コマンドラインからCopper PDFの 機 能 を 直 接 利 用 することができます copper-webapp ウェブアプリケーションです ウェブブラウザからローカルマシン 上 のファイルや ウェブ 上 のコンテンツを 変 換 する 簡 単 なウェブアプリケーションが 起 動 します copperd Copper PDFサーバーを 起 動 停 止 あるいは 状 態 を 確 認 します プログラムインター フェースからアクセスするためのパスワードの 設 定 もこのコマンドで 行 います 27 2.2 Copper PDFのツール

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:" を 直 接 使 用 します 2.2 Copper PDFのツール 28

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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の 記 述 方 法 は 接 続 情 報 (90ページ) を 参 照 してください 入 力 について -inオプションが 省 略 された 場 合 は 標 準 入 力 を 使 用 します -inオプションと-uriオプションが 両 方 指 定 された 場 合 -inで 指 定 されたファイルの データが 使 われ ドキュメントのURIは-uriで 指 定 されたものと 見 なします -inオプションだけ 指 定 された 場 合 -inで 指 定 されたファイルのデータが 使 われ ド キュメントのURIはそのファイルのシステムURIとします -uriオプションだけが 指 定 された 場 合 そのURIから 取 得 できるデータが 使 われ ド キュメントのURIも 同 じURIとします このとき-ie, -ifオプションは 無 視 されます 出 力 について -outオプションが 省 略 された 場 合 は 標 準 出 力 を 使 用 します -outオプションが 指 定 された 場 合 は 指 定 されたファイルに 出 力 します 29 2.2 Copper PDFのツール

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の ウェブアプリケーションが 利 用 できます なお ブラウザが 実 行 可 能 な 環 境 では プロ グラムの 起 動 後 に 自 動 的 にブラウザが 開 きます 2.2 Copper PDFのツール 30

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 図 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ファイルのパスを 設 定 してください 31 2.2 Copper PDFのツール

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サーバーのバージョンを 表 示 します サーバーを 起 動 します サーバーを 停 止 します 2.2 Copper PDFのツール 32

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 -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] 33 2.2 Copper PDFのツール

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"を 設 定 してください 2.2 Copper PDFのツール 34

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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ディレクトリのパスを 設 定 してください 35 2.2 Copper PDFのツール

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 使 用 するフォントの 設 定 です 2.3 設 定 ファイル 36

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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.25 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 以 外 からのアクセスはブ ロックされます 制 御 用 コマンドです 制 御 用 ポートからアクセスする 場 合 の 合 言 葉 のようなものです 通 常 は 変 更 する 必 要 はありません 接 続 タイムアウト( 秒 数 )です プログラムインターフェースとの 間 で 指 定 された 時 間 データがや りとりされなかった 場 合 接 続 を 切 断 します 最 小 スレッド 数 です プログラムインターフェースの 接 続 を 待 ち 受 けるために 準 備 して おく 最 小 限 のスレッド 数 です 高 負 荷 が 予 想 される 状 況 では 大 き めの 値 を 設 定 しておくと 処 理 が 効 率 化 しますが 使 用 するメモリ は 増 大 します 37 2.3 設 定 ファイル

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による 暗 号 化 された 高 速 な 接 続 をサポートしました 2.3 設 定 ファイル 38

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

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.31 mod_proxy_ajpの 設 定 <Proxy *> Order deny,allow Allow from all </Proxy> <Location /cti/> ProxyPass ajp://127.0.0.1:8095/ </Location> 例 2.32 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のログプロパティファイル の 形 式 で 記 述 してください 2.3 設 定 ファイル 40

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 例 2.33 ログの 設 定 例 # Logging levels by categories. jp.cssj.handlers = jp.cssj.logging.filehandler, \ java.util.logging.consolehandler jp.cssj.level = INFO # File java.util.logging.filehandler.level = INFO java.util.logging.filehandler.formatter = java.util.logging.simpleformatter java.util.logging.filehandler.encoding = UTF-8 # 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 のプロパティ 名 前 デフォルト 説 明 directory copperdの 標 準 のlogsディレクトリ ログの 出 力 先 ディレクトリ prefix copperd. ログファイル 名 の 先 頭 の 文 字 列 suffix.log ログファイル 名 の 末 尾 の 文 字 列 level ALL ログレベル filter N/A ログのフィルタ formatter java.util.logging.simpleformatter ログのフォーマッタ encoding UTF-8 ログファイルのキャラクタエンコーディング 2.3.5 アクセス 制 御 の 設 定 (access.txt) access.txtはipアドレスでアクセスできるクライアントを 制 限 する 設 定 です このファイ ルの 変 更 は 自 動 的 に 検 出 されるため 変 更 後 にCopper PDFサーバーを 再 起 動 する 必 要 は ありません 各 行 のルールを [allow deny] IPアドレス という 形 式 で 記 述 します IPアドレスはIPv4, IPv6のどちらの 形 式 も 使 用 可 能 です 41 2.3 設 定 ファイル

2. 管 理 者 ガイド allowは 指 定 されたアドレスのアクセスを 許 可 し denyはアクセスを 拒 否 するルールで す クライアントからのアクセスがあった 場 合 は 先 頭 から 順 に 検 索 し 最 初 に 一 致 し たルールが 適 用 されます IPアドレスを * にすると 全 てのクライアントにルールを 適 用 します 例 2.34 アクセス 制 御 の 設 定 例 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サーバーを 再 起 動 する 必 要 はありません ファイルの 形 式 は Javaのプロパティファイル です 各 プロパティは 入 出 力 プロパティ の 節 で 解 説 されていますが 1つだけsystem.fontsという 特 別 なプロパティがあります system.fontsは 後 で 次 に 説 明 するフォント 設 定 ファイルをdefault.propertiesファイルから の 相 対 パスで 指 定 したものです 2.3.8 fontsディレクトリ フォント 関 連 の 設 定 です 詳 細 はフォントの 設 定 の 章 で 解 説 します 2.3 設 定 ファイル 42

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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)フォントにも 対 応 しています CID-Keydフォントを 使 用 するために 既 定 のフォントの 幅 情 報 が 配 置 されています CID-KeydフォントのためのCMapファイルが 配 置 されています コアフォントのフォントメトリックス 情 報 がAFM 形 式 で 配 置 されています 43 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 フォントの 設 定 44

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 条 件 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, cid-embeddedを 指 定 することで それぞれCID-Keyedフォント CID Identityフォ ント 埋 め 込 みフォントを 切 り 替 えることができます コアフォントは 常 に 使 用 されま すが "-core"を 指 定 することで 除 外 することができます[3.0.0] またスペース 区 切 で 複 数 指 定 することも 可 能 です[2.0.1] "embedded cid-keyed"のようにスペース 区 切 りで 複 数 指 定 された 場 合 は 最 初 に 指 定 されたものから 優 先 的 に 使 用 されます[2.0.9] ただし コ アフォントの 優 先 度 は 常 に 最 低 となります PDF/A-1を 出 力 する 場 合 は 上 記 の 設 定 に 関 わらず 埋 め 込 みフォントだけが 使 われま す[2.1.0] 45 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 フォントの 設 定 46

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 各 文 字 と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 ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ 47 2.4 フォントの 設 定

2. 管 理 者 ガイド 以 下 はSymbolで 使 用 できる 文 字 の 一 覧 です 文 字 の 下 の 数 字 は16 進 ユニコードです 表 2.7 Symbolの 文 字 一 覧 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 フォントの 設 定 48

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 以 下 は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] の 設 定 によります 49 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 フォントの 設 定 50

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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.35 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.36 抽 出 されたフォント 情 報 の 例... 略 '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 コードの 仕 様 です 51 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.37 幅 情 報 の 抽 出 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 フォントの 設 定 52

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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 属 性 の 指 定 を 変 更 することで 切 り 替 えることができます 53 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 フォントの 設 定 54

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 表 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 カンマで 区 切 ったユニコード 範 囲 ( 詳 細 は 後 述 ) 55 2.4 フォントの 設 定

2. 管 理 者 ガイド unicode-rangeはu+に 続 く16 進 数 によるユニコードとハイフンを 用 います 例 えば 日 本 語 のかなを 含 める 文 字 範 囲 の 指 定 は 次 の 通 りです 例 2.38 ハイフンによる 文 字 範 囲 <include unicode-range="u+3030-30ff" /> また 下 位 の 桁 をワイルドカードに 置 き 換 えることもできます 以 下 の 記 述 は U+1F00-1FFFと 書 くのと 等 価 です 例 2.39 ワイルドカードによる 文 字 範 囲 <include unicode-range="u+1f??" /> 複 数 の 文 字 範 囲 はカンマで 区 切 ってください 例 2.40 複 数 の 文 字 範 囲 <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 フォントの 設 定 56

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 属 性 必 須 説 明 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 名 です 57 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 フォントの 設 定 58

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 属 性 必 須 説 明 フォントのタイプをスペース 区 切 りで 記 述 します 値 は 次 のいず れかです 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フォント 59 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 フォントの 設 定 60

2. 管 理 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 表 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.41 例 のタイトル <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> 61 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 (71ページ) Copper PDFの 前 の 製 品 (CSSJ)から 使 われている 高 速 で 信 頼 性 の 高 い 通 信 方 式 です CTIP 2.0 (90ページ)[2.1.0] CTIP 1.0の 高 速 高 信 頼 性 をそのままに 機 能 を 強 化 した 通 信 方 式 です 3.1 プログラムインターフェースの 概 要 62

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 HTTP/REST (151ページ)[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ページ) 63 3.1 プログラムインターフェースの 概 要

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

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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にアクセスするのではなく 事 前 に 送 ったデータ を 使 用 します 65 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 プログラムインターフェースの 概 要 66

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 デフォルトの 状 態 では サーバーから 全 てのリソースへのアクセスが 禁 止 されていま す 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] 67 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 プログラムインターフェースの 概 要 68

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

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

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

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 3.3 Java ドライバ1 Copper PDF 2.1.0からは より 強 力 なJavaドライバ バージョン2 が 利 用 可 能 です 従 来 のドライバもサポートされていますが 新 しいドライバの 使 用 を 検 討 してください Javaドライバ バージョン2の 説 明 (93ページ) 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) 73 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 74

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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", 75 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 76

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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 以 降 でコンパイルすることができます 77 3.3 Java ドライバ1

3. 開 発 者 ガイド 3.4 Perlドライバ1 Copper PDF 2.1.0からは より 強 力 なPerlドライバ バージョン2 が 利 用 可 能 です 従 来 のドライバもサポートされていますが 新 しいドライバの 使 用 を 検 討 してください Perlドライバ バージョン2の 説 明 (111ページ) 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 78

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 リソースの 送 信 アクセス 許 可 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ヘッダの 送 信 79 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 80

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 例 3.5 content.pl $session->start_main(stdout, 'file:/test.html', 'text/html', 'EUC- JP', 1); require 'program.cgi'; $session->end_main(stdout); 81 3.4 Perlドライバ1

3. 開 発 者 ガイド 3.5 PHPドライバ1 Copper PDF 2.1.0からは より 強 力 なPHPドライバ バージョン2 が 利 用 可 能 です 従 来 のドライバもサポートされていますが 新 しいドライバの 使 用 を 検 討 してください PHPドライバ バージョン2の 説 明 (118ページ) 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 82

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 プロパティの 設 定 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(); 83 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 84

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 // 変 換 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プラグインで 表 示 されない 場 合 がありますのでご 注 意 ください 85 3.5 PHPドライバ1

3. 開 発 者 ガイド 3.6 copper Antタスク Copper PDF 2.1.0からは より 強 力 なtranscode Antタスク が 利 用 可 能 です 従 来 の Antタスク もサポートされていますが 新 しいAntタスク の 使 用 を 検 討 してください transcode Antタスク (147ページ) 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タスク 86

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 属 性 名 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では 以 下 のようなエラーが 発 生 することがあります 87 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タスク 88

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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> 89 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 処 理 情 報 文 書 のタイトル 出 力 したページの 番 号 等 です 警 告 メッセージ 通 常 の 運 用 でも 発 生 する 可 能 性 のある 軽 微 なエラーを 示 すもので 処 理 が 続 行 されます エラーメッセージ アプリケーション 等 の 問 題 によるエラーで 処 理 が 中 断 されます 深 刻 なエラー サーバープログラムのバグやシステムの 障 害 によるもので 処 理 が 中 断 されます 全 てのメッセージコードの 一 覧 は 資 料 集 (279ページ)を 参 照 してください 3.7.3 サーバー 情 報 ドライバによりCopper PDFサーバーの 環 境 に 関 する 情 報 を 得 ることができます 情 報 の 種 類 はURIで 指 定 します 3.7 CTIP 2.0 インターフェースの 概 要 90

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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です 91 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 インターフェースの 概 要 92

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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による 接 続 にも 対 応 しています (90ページ) 93 3.8 Java ドライバ2

3. 開 発 者 ガイド 3.8.3 APIの 概 要 ここではAPIによるアクセスの 概 要 で 説 明 した 各 手 順 に 対 応 する 関 数 を 列 挙 します 各 関 数 の 詳 細 はドライバのapidocディレクトリ 内 のJavadocか オンラインのAPIドキュメ ントを 参 照 してください 3.8.4 タイムアウトの 設 定 Java 版 ドライバ2.1.4 以 降 から 一 定 時 間 通 信 がない 状 態 で 自 動 的 に 通 信 を 切 断 するタイ ムアウトに 対 応 しています 以 下 のようにURLパラメータで timeoutをミリ 秒 単 位 で 指 定 できます ctip://127.0.0.1:8099/?timeout=10000 ctips, http 等 他 のプロトコルではタイムアウトは 無 効 です サーバーへの 接 続 認 証 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 94

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 ソースリゾルバの 設 定 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; 95 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 96

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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, 97 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 98

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 繰 り 返 し 処 理 出 力 先 を 変 え 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の 実 装 が 返 されます 99 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 100

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 出 力 中 に 処 理 を 中 断 して 途 中 までの 出 力 結 果 を 見 たい 場 合 に 有 用 です ただし 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> 101 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 102

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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 { /** 接 続 先 */ 103 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 104

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 前 記 の 例 では 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からアクセスするのがよいでしょう 105 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 106

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 しかし 当 然 ながらプログラムの 実 行 時 には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に 変 換 してファイル に 保 存 します 107 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 108

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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> 109 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 110

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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 111 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 112

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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に 変 換 しま す 113 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 114

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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が 相 対 パスであるという 前 提 で ローカルのファイルがあればサーバーに 送 信 します 115 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 116

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 3.9.6 ソースコード ドライバのソースコードはSourceForge.JPに 公 開 しています ドライバのソースコード が 必 要 な 方 は 以 下 の ガ イ ド を 参 考 にSVN か ら 取 得 し て く だ さ い http://sourceforge.jp/projects/copper/cvs/ CTI Perl の ソ ー ス コ ー ド の タ ー ゲ ッ ト パ ス は 以 下 の 通 り で す http://svn.sourceforge.jp/svnroot/copper/drivers/perl/trunk/ 117 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 118

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 メッセージハンドラ プログレスリスナの 設 定 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() 119 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 120

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 次 の 例 は サーバー 側 からネットワーク 上 のウェブページアクセスして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というプログラムの 出 力 を 変 換 します 121 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 122

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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/ 123 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 APIの 概 要 ここではAPIによるアクセスの 概 要 で 説 明 した 各 手 順 に 対 応 する 関 数 を 列 挙 します 各 関 数 の 詳 細 はドライバのapidoc/htmlディレクトリ 内 のAPIドキュメントか オンライン のAPIドキュメントを 参 照 してください 3.11.NETドライバ 124

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 サーバーへの 接 続 認 証 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) 複 数 の 結 果 の 結 合 bool Continuous { set; } public void Join() 125 3.11.NETドライバ

3. 開 発 者 ガイド 処 理 の 中 断 リセット 通 信 の 終 了 public void Abort(AbortMode mode) public void Reset() public void Close() 3.11.4 サンプル 次 の 例 は サーバー 側 からネットワーク 上 のウェブページアクセスして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"); を 許 可 する session.property("input.include", "http://copperpdf.com/**"); // http://copper-pdf.com/ 以 下 にあるリソースへのアクセス } } } } // ウェブページを 変 換 session.transcode("http://copper-pdf.com/"); 3.11.NETドライバ 126

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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 出 力 のためのテンプレートとして 利 用 でき るようになることです 前 準 備 として 以 下 のクラスを 用 意 しておきます 例 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) 127 3.11.NETドライバ

3. 開 発 者 ガイド { } : 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) 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)を 得 ています 3.11.NETドライバ 128

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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ディレクトリに 収 められています 3.11.5 プログラミングのポイント 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");... 129 3.11.NETドライバ

3. 開 発 者 ガイド 例 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.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 を 使 ってストリームやファイルにデータを 出 力 してくださ い 3.11.NETドライバ 130

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 サーバーから 要 求 されたリソースの 送 信 (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") { 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; } } 131 3.11.NETドライバ

3. 開 発 者 ガイド 例 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.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.11.NETドライバ 132

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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 ページ 目 を 出 力 される 前 に 中 断 してしまった 場 合 など 読 み 込 み 可 能 なデータが 出 力 で きないことも 起 こり 得 ます 133 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ドライバ 134

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 メッセージハンドラ プログレスリスナの 設 定 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 135 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ドライバ 136

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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) 137 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ドライバ 138

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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/ 139 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ドライバ 140

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 サーバーへの 接 続 認 証 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() 141 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ドライバ 142

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 <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に 収 められています 143 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ドライバ 144

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 サーバーから 要 求 されたリソースの 送 信 サーバーから 要 求 されたリソースを 送 る 場 合 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: 145 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ドライバ 146

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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ファイルなどが 格 納 されたディレクトリです 省 略 した 場 合 カレント ディレクトリとなります 147 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タスク 148

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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システムプロパティで 指 定 することもできます 149 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タスク 150

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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." で 始 ま ら な い パ ラ メータ セッションの 開 始 サーバーの 情 報 (セッションの 開 始 と 終 了 を 兼 ねる) プロパティ 設 定 151 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インターフェース 152

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 式 のファイルとフォームフィールドとして 送 る 方 法 があります (さらに ファイルその ものをリクエストボディとして 送 る 方 法 があります 詳 細 は 仕 様 書 を 参 照 してくださ い) 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アクションのレスポンスを 保 留 する 場 合 の 最 大 待 ち 時 間 (ミリ 秒 )です 153 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インターフェース 154

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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) 155 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インターフェース 156

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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を 変 換 します 157 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インターフェース 158

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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 画 像 等 の 取 得 のためにアクセスを 許 可 するアドレス のパターンです 159 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インターフェース 160

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 ' ローカルマシンの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" 161 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インターフェース 162

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 `ヘッダの 除 去 $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) 163 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インターフェース 164

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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 認 証 かを 自 動 判 別 します 165 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クライアント 機 能 166

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 で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ク ライアントに 引 き 継 ぐ 例 です 167 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クライアント 機 能 168

3. 開 発 者 ガイド Copper PDF 3.0 説 明 書 2015-6-21 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] に 最 大 データサイズをバイト 単 位 で 設 定 してください デ フォルトではデータサイズの 制 限 はありません 169 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による 文 書 のレイアウト 170

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 4.2 入 出 力 プロパティ Copper PDF 独 自 の 機 能 や 一 般 的 なブラウザの 環 境 設 定 やオプションに 相 当 する 部 分 を 設 定 するためには 名 前 と 値 の 組 み 合 わせである 入 出 力 プロパティ を 設 定 します 入 出 力 プロパティの 一 覧 は 資 料 集 の 入 出 力 プロパティ (266ページ)を 参 照 してくださ い 入 出 力 プロパティは プログラマによりプログラムにより 設 定 (64ページ) されるか シ ステム 管 理 者 により デフォルトの 入 出 力 プロパティの 設 定 ファイル (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> 171 4.2 入 出 力 プロパティ

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

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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] によるエンコーディング 173 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 対 応 する 入 力 ファイル 174

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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は 画 像 形 式 での 出 力 (186ページ)にも 利 用 することができます[2.0.3] ラスター(ビットマップ/ピクセルマップ) 画 像 GIF / PNG 画 像 GIFおよびPNG 画 像 の 透 明 化 効 果 はPDF 内 でも 有 効 です ただし PDF 1.3 以 前 のバー ジョンのPDFを 出 力 する 場 合 PNG 画 像 の 半 透 明 化 効 果 が 正 確 に 表 現 されず 透 明 不 透 明 だけとなります 175 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 対 応 する 入 力 ファイル 176

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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)ことができます 177 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)に 対 応 したファイルを 出 力 することがで きます (185ページ) 暗 号 化 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 出 力 するファイル 形 式 178

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 も 開 く こ と が で き る 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に 対 する 該 当 する 操 作 が 行 われないことを 保 証 するものではありません 179 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 出 力 するファイル 形 式 180

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 デフォルトでは 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] 181 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 出 力 するファイル 形 式 182

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 図 4.17 背 面 にすかしを 配 置 以 下 の 出 力 例 は output.pdf.watermark.uri [io] に SVG 画 像 を 指 定 し output.pdf.watermark.mode [io] に "front" を 指 定 し output.pdf.watermark.opacity [io] に0.5を 指 定 しています 183 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 出 力 するファイル 形 式 184

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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)を 参 照 してください 185 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 実 行 環 境 に 拡 張 ライブラリを 導 入 することにより 出 力 できる 画 像 を 増 やすことができます 拡 張 方 法 については 他 の 画 像 形 式 の 利 用 を 参 照 してください 画 像 出 力 の 制 約 コアフォント (46ページ) とCID-Keyedフォント (50ページ)を 描 画 できないという 制 約 があります フォントを 正 しく 表 示 するためには 埋 め 込 みフォント (50ページ)を 利 用 する 必 要 があります フォントの 設 定 方 法 はフォントの 種 類 (45ページ)を 参 照 してく ださい 画 像 出 力 の 解 像 度 出 力 される 画 像 の 解 像 度 は 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 出 力 するファイル 形 式 186

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 4.5 一 般 的 なブラウザとの 互 換 性 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モードでは 有 効 で す 例 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 { 187 4.5 一 般 的 なブラウザとの 互 換 性

4.デザイナーガイド } 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> CSSの 色 指 定 で#を 省 略 しても 認 識 される msieモードではrgbコードで 色 を 指 定 する 場 合 #を 省 略 できます 4.5 一 般 的 なブラウザとの 互 換 性 188

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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%を 指 定 すると ボックスが 外 側 のボックスの 内 部 からはみ 出 します msieモードでは100% 指 定 された 場 合 にボックスの 外 側 の 幅 が 外 側 のボックスの 内 側 の 幅 に 一 致 し 0% 指 定 された 場 合 にボックスの 内 側 の 幅 がゼロになるように 計 算 します 189 4.5 一 般 的 なブラウザとの 互 換 性

4.デザイナーガイド 絶 対 位 置 指 定 ボックス 浮 動 ボックスの 大 きさが 内 容 により 拡 張 される 絶 対 位 置 指 定 ボックス 浮 動 ボックスに{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 一 般 的 なブラウザとの 互 換 性 190

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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 属 性 と 同 様 の 挙 動 をします 191 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 一 般 的 なブラウザとの 互 換 性 192

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 サポートしていない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;}が 指 定 されたーブル)を 使 用 する 自 動 レイアウトテーブルで 横 方 向 に 連 結 されたセルが 存 在 する 場 合 は %による 幅 指 定 をしない 193 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の 拡 張 機 能 194

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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; 195 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の 拡 張 機 能 196

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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の 拡 張 の 章 を 参 照 してください 197 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の 拡 張 機 能 198

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 例 4.14 ルビの 幅 を 行 幅 に 合 わせるCSS body { writing-mode: vertical-rl; line-height: 1.5; } ruby { line-height: 1.5; } 199 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によるドキュメントのレイアウト 200

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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; } 201 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によるドキュメントのレイアウト 202

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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を 組 み 合 わせる 方 法 です 203 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によるドキュメントのレイアウト 204

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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に 一 致 します 詳 細 は 画 像 の 出 力 (186ページ)を 参 照 してください 205 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の 拡 張 機 能 206

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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と 同 じです 207 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の 拡 張 機 能 208

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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 ( 開 き 括 弧 類 )が 行 末 禁 則 文 字 とされます 209 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の 拡 張 機 能 210

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 #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つだけの 場 合 は 行 頭 禁 則 文 字 だけが 追 加 されます 例 えば 次 の 文 章 があるとします 211 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の 拡 張 機 能 212

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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' 本 文 フォント...;} の ように 指 定 してください 213 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の 拡 張 機 能 214

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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> 文 字 の 色 と 同 じ すべて する 215 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の 拡 張 機 能 216

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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つ 目 の 影 は 文 字 の 後 ろに 作 られ 順 に 背 面 へと 作 られます 217 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の 拡 張 機 能 218

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 パ テ ィ を 用 意 し て い ま す こ れ ら は 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 219 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の 拡 張 機 能 220

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 例 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; 221 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の 拡 張 機 能 222

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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 すべて しない 223 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の 拡 張 機 能 224

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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 角 丸 境 界 ( 表 示 結 果 ) 四 隅 がいびつなボックス 225 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の 拡 張 機 能 226

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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> ]* 227 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の 拡 張 機 能 228

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

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 用 紙 のサイズの 指 定 がない 場 合 用 紙 の 幅 と 高 さは それぞれページの 幅 と 高 さに 断 ち 口 の 幅 を 足 し た も の に 自 動 的 に 設 定 さ れ ま す 用 紙 の サ イ ズ を 指 定 し た 場 合 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パス 以 上 必 要 になることがあ ります 231 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 ページ 処 理 機 能 232

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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] 次 の 例 は 再 生 成 ボックスとページカウンタ (207ページ)を 利 用 して ページごとに ノ ンブル を 振 ります 各 ページの 下 部 中 央 にページ 番 号 が 表 示 されます また 本 文 の 前 でページカウンタをリセットし 目 次 と 本 文 は 別 にページを 振 りなおしています 例 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 { 233 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> 左 右 のページでアラインメントを 変 えることにより ページの 外 側 にノンブルを 振 るこ とができます また -cssj-heading 関 数 を 利 用 することで 現 在 ページのセクションの 見 出 しを 一 緒 に 表 示 することができます 例 4.62 見 出 しの 表 示 <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: 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>... 本 文... 4.9 ページ 処 理 機 能 234

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 CSSJ 1.x 系 の-cssj-regeneratable [css] も 互 換 性 のためサポートされていますが パ フォーマンスの 面 から-cssj-page-content [css] の 使 用 を 推 奨 します 235 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 改 ページ 制 御 236

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 テーブル 行 の 直 後 テーブルセルの 直 前 テーブルセルの 直 後 ただし 上 記 の 場 所 であっても 浮 動 ボックス 内 絶 対 配 置 ボックス 内 テーブルセル 内 で は 強 制 改 ページを 発 生 することはできません 要 素 の 直 前 の 強 制 改 ページの 指 定 は{page-break-before: always;}です 要 素 の 直 後 の 強 制 改 ページの 指 定 は{page-break-after: always;}です 以 下 は 強 制 改 ページを 使 って 表 紙 を 作 る 例 です 例 4.63 強 制 改 ページ <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.64 空 ページが 生 じるケース <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 と 解 釈 されます 237 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.65 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 改 ページ 制 御 238

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 例 4.66 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.67 widowsが2の 場 合 ( 段 落 1)1 行 目... 2 行 目... 3 行 目... 4 行 目... 5 行 目... 6 行 目... 7 行 目... 8 行 目... ( 段 落 2)1 行 目... 2 行 目... 3 行 目... 1ページ 目 4 行 目... 5 行 目... 2ページ 目 同 じ 文 書 でwidows [css] を3に 指 定 すると 以 下 のように 前 のページから 次 のページへ 行 を 移 動 して widows [css] を 満 たすようにします 239 4.10 改 ページ 制 御

4.デザイナーガイド 例 4.68 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.69 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 改 ページ 制 御 240

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 例 4.70 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;}という 指 定 を します 改 ページ 抑 制 されたボックスがページをはみ 出 す 場 合 は ボックスが 丸 ごと 次 のページ の 先 頭 に 先 送 りされます ただし ボックスが( 先 送 りの 結 果 か 元 々そこにあるかに 関 わらず)ページの 先 頭 にある 場 合 かつボックスの 高 さがページの 高 さを 超 えてしまう 場 合 は 改 ページの 抑 制 を 無 視 してページ 分 割 されます 241 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 改 ページ 制 御 242

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

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 テーブルがページの 先 頭 にあり かつ 改 ページ 禁 止 指 定 のために ページの 下 端 までの 間 で 改 ページできない 場 合 は 行 間 の 改 ページ 禁 止 を 無 視 します この 場 合 は 改 ペー ジが 禁 止 された 部 分 であっても 改 ページが 発 生 します 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.71 テーブルセル 内 での 改 ページを 有 効 にするCSS td, th { page-break-inside: auto; } 上 のスタイルシートをデフォルトのスタイルシートとして 指 定 しておけば あらゆる ページでテーブルセル 内 での 改 ページがされるようになります 245 4.11 テーブル 内 での 改 ページ

4.デザイナーガイド 4.12 WebFont Copper PDF 3.0.0 からWebFont がサポートされました WebFont は CSSによりファイル システム 上 やネットワーク 上 のフォントを 指 定 し 文 書 をレイアウトする 際 に 読 み 込 むものです Internet Explorer, Safari, Chrome, Firefox 等 の 最 新 のブラウザはWebFontをサ ポートしており これらのブラウザ 向 けに 表 示 環 境 に 関 わらず 同 じフォントが 表 示 さ れるようにした 文 書 はCopper PDFでも 同 じフォントを 表 示 することができます WebFontは 非 常 に 手 軽 に 使 える 反 面 文 書 のレイアウトの 度 にフォントファイルを 読 み 込 むため 処 理 速 度 が 遅 くなります WebFontの 利 用 は 開 発 時 や どうしても 使 用 する 必 要 がある 場 合 にとどめ 可 能 な 限 りシステムのフォント 設 定 (43ページ)で 対 応 するこ とを 推 奨 します 4.12.1 @font-face ルール 文 書 からフォントファイルを 読 み 込 むにはCSSの@font-faceルールを 使 います 以 下 は 欧 文 フォントを 読 み 込 む 例 です 例 4.72 ネットワーク 上 のフォントの 読 み 込 み(ソース) <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 246

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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 がフォントを 選 択 する 方 法 については ドキュメント 中 でのフォントの 利 用 (44ページ) をご 参 照 ください font-family フォントのファミリ 名 です font-style フォントのスタイルです normal, italic, obliqueのいずれかです デフォルトはnormalで す font-weight フォントの 太 さです normal, bold または100から900までの100 刻 みの 値 です デフォル トはnormalです 247 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, SVGフォント 等 は サポートしていません 次 の 例 は 漢 字 にはIPA Pゴシック ひらがなと 英 数 字 にはきろ 字 を 使 用 します 4.12 WebFont 248

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 例 4.73 複 数 のフォントの 併 用 (ソース) <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 複 数 のフォントの 併 用 ( 表 示 結 果 ) 249 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 縦 書 き 250

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

4.デザイナーガイド 4.13.3 書 字 方 向 の 混 在 横 書 き 中 に 縦 書 き 指 定 された 要 素 がある あるいは 縦 書 き 中 に 横 書 き 指 定 された 要 素 がある 場 合 書 字 方 向 が 混 在 するものとして 処 理 します 文 書 の 書 字 方 向 と 異 なる 要 素 の 中 では 改 ページすることはできません ブロックの 書 字 方 向 が 異 なる 場 合 そのブロックのページ 進 行 方 向 の 幅 ( 親 要 素 が 横 書 きでは 高 さ 縦 書 きでは 幅 )がautoであれば 10emに 固 定 します しかし 書 字 方 向 の 異 なるブロックを ページ 進 行 方 向 の 幅 をautoで 配 置 することは 推 奨 しません 行 方 向 の 幅 ( 親 要 素 横 書 きでは 幅 縦 書 きでは 高 さ)の 計 算 方 法 は 通 常 の 場 合 と 同 じです そ のため 内 容 が 長 ければ 親 要 素 の 行 方 向 にはみ 出 すことになります あるいは 多 段 組 (ページ)を 活 用 してください 例 4.75 横 書 きの 文 書 の 一 部 を 縦 書 きにする(ソース) <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 縦 書 き 252

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 図 4.24 横 書 きの 文 書 の 一 部 を 縦 書 きにする( 表 示 結 果 ) インラインの 書 字 方 向 が 異 なる 場 合 インラインブロックとして 配 置 します これは 縦 中 横 のために 使 うことができます 例 4.76 縦 中 横 (ソース) <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> 253 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 縦 書 き 254

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 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 255 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.77 横 書 きの 文 書 (ソース) <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 縦 書 き 256

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 <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;} を 適 用 すると 見 出 し の 境 界 線 や 画 像 のマージンが 回 転 され より 適 切 な 表 示 になります 257 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 縦 書 き 258

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 元 の 計 算 値 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;}の 場 合 と 同 様 です 259 4.13 縦 書 き

4.デザイナーガイド 4.14 多 段 組 Copper PDF は 多 段 組 を 独 自 にサポートしています[3.0.0] これは 勧 告 候 補 段 階 のCSS3 Multi-column Layout(2010 年 12 月 現 在 ) 仕 様 の 一 部 を 先 行 して 実 装 したものです Copper PDFの 現 在 の 実 装 は 将 来 リリースされるW3C 規 格 との 互 換 性 を 保 証 するものではあり ません またCopper PDFの 将 来 のバージョンでは 仕 様 に 変 更 が 生 ずる 可 能 性 がありま す 印 刷 面 の 大 きさに 比 べて 文 字 が 小 さい 場 合 1 行 の 幅 が 大 きくなってしまい 非 常 に 読 み にくいことがあります そんな 時 は 多 段 組 をすると 読 みやすくなります また 空 白 が 少 なくなるため より 紙 面 を 節 約 できます 多 段 組 では 段 数 に 応 じて 行 方 向 の 幅 が 圧 縮 されます % 指 定 で 配 置 された 画 像 やボッ クスの 大 きさは 段 の 幅 に 対 する 比 率 となります 見 出 しなどは ブチ 抜 きで 配 置 することができます 例 4.78 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 多 段 組 260

4.デザイナーガイド Copper PDF 3.0 説 明 書 2015-6-21 </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 261 4.14 多 段 組