developer's diary

最近はc#のエントリが多いです

C# (dotnetcore) iText7でスキャンした電子書籍に目次(しおり)をつけてみた(The Art of UNIX Programming)

The Art of UNIX Programmingの目次をつける

この本をスキャンしてPDFにしました。

The Art of UNIX Programming

The Art of UNIX Programming

結果

こんな感じに目次ができました。

f:id:mitsugi-bb:20200926085341p:plain
目次がついた様子

NuGetでiText7をインストール

f:id:mitsugi-bb:20200926085130p:plain
iText7をインストール

ソース

ゴリゴリに記述しました。またどこかで解説します。

using System;
using System.Collections.Generic;
using System.IO;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Navigation;

namespace iTextBookMarkAdd
{
    public class ChangeBookmarks
    {
        /// <summary>出力先ファイル名</summary>
        public static readonly String DEST = "/Users/mitsugi/Desktop/u_add.pdf";

        /// <summary>出力元ファイル名</summary>
        public static readonly String SRC = "/Users/mitsugi/Desktop/u.pdf";

        /// <summary>メイン処理</summary>
        public static void Main(String[] args)
        {
            //ファイルを新規作成
            FileInfo file = new FileInfo(DEST);
            file.Directory.Create();

            //PDFドキュメント作成(複製)
            PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(DEST));

            //アウトライン取得
            PdfOutline outline = pdfDoc.GetOutlines(true);

            //アウトラインの項目を全て、listに一旦掘り込む
            List<PdfOutline> list = new List<PdfOutline>();
            foreach (var item in outline.GetAllChildren())
            {
                list.Add(item);
            }

            //アウトライン項目を全て削除する
            foreach (var item in list)
            {
                item.RemoveOutline();
            }

            //アウトラインを作成
            PdfOutline outline0 = pdfDoc.GetOutlines(true).AddOutline("序章");
            outline0.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(8), 1, 1, 1));
            outline0.AddOutline("誰がこの本を読むべきか").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(9), 1, 1, 1));
            outline0.AddOutline("この本の使い方").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(10), 1, 1, 1));
            outline0.AddOutline("関連する参考文献").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(11), 1, 1, 1));
            outline0.AddOutline("ケーススタディについて").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(13), 1, 1, 1));
            outline0.AddOutline("著者の謝辞").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(14), 1, 1, 1));

            pdfDoc.GetOutlines(true).AddOutline("目次").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(17), 1, 1, 1));

            PdfOutline outline1 = pdfDoc.GetOutlines(true).AddOutline("第1部 コンテキスト");
            outline1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(30), 1, 1, 1));
            PdfOutline outline1_1 = outline1.AddOutline("第1章 思想 :大切なのは思想だ");
            outline1_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(32), 1, 1, 1));
            outline1_1.AddOutline("1.1 文化? なんのこと?").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(32), 1, 1, 1));
            outline1_1.AddOutline("1.2 Unixの生命力").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(33), 1, 1, 1));
            outline1_1.AddOutline("1.3 Unix文化の学習に対する反対論").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(34), 1, 1, 1));
            outline1_1.AddOutline("1.4 Unixの短所").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(35), 1, 1, 1));
            PdfOutline outline1_1_5 = outline1_1.AddOutline("1.5 Unixの長所");
            outline1_1_5.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(37), 1, 250, 1));
            outline1_1_5.AddOutline("1.5.1 オープンソースソフトウエア").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(37), 1, 1, 1));
            outline1_1_5.AddOutline("1.5.2 プラツトフォームを越えた移植性とオープンな標準").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(37), 1, 1, 1));
            outline1_1_5.AddOutline("1.5.3 インターネットとWeb").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(37), 1, 1, 1));
            outline1_1_5.AddOutline("1.5.4 オープンソースコミュニティ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(38), 1, 1, 1));
            outline1_1_5.AddOutline("1.5.5 あらゆる面での柔軟性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(39), 1, 1, 1));
            outline1_1_5.AddOutline("1.5.6 ハックして楽しい Unix").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(39), 1, 1, 1));
            outline1_1_5.AddOutline("1.5.7 他の場面にも応用できる Unixの 教訓").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(40), 1, 1, 1));
            PdfOutline outline1_1_6 = outline1_1.AddOutline("1.6 Unix思想の基礎");
            outline1_1_6.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(41), 1, 250, 1));
            outline1_1_6.AddOutline("1.6.1 モジュール化の原則 :クリーンなインターフエイスで結合される単純な部品を作れ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(44), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.2 明確性の原則 :巧妙になるより明確であれ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(44), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.3 組み立て部品の原則 :他のプログラムと組み合わせられるように作れ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(45), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.4 分離の原則 :メカニズムからポリシーを切り離せ。エンジンからインターフェイスを切り離せ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(46), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.5 単純性の原則 :単純になるように設計せよ。複雑な部分を追加").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(47), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.6 倹約の原則 :他のものでは代えられないことが明確に実証されない限り、大きなプログラムを書くな").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(48), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.7 透明性の原則 :デバッグや調査が簡単になるように、わかりやすさを目指して設計せよ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(48), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.8 安定性の原則 :安定性は,透明性と単純性から生まれる").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(49), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.9 表現性の原則 :知識をデータのなかに固め、プログラムロジックが楽で安定したものになるようにせよ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(50), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.10 驚き最小の原則 :インターフェイスは、驚きが最小になるように設計せよ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(50), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.11 沈黙の原則 :どうしてもいわなければならない想定外なことがないのなら.プログラムは何もいうな").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(51), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.12 修復の原則 :エラーを起こさなければならないときには、できる限り早い段階でけたたましくエラーを起こせ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(52), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.13 経済性の原則 :プログラマの時間は高価だ。マシンの時間よりもプログラマの時間を節約せよ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(52), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.14 生成の原則 :手作業のハツクを避けよ。可能なら、プログラムを書くためのプログラムを書け").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(53), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.15 最適化の原則 :磨 く前にプロトタイプを作れ。最適化する前にプロトタイプが動くようにせよ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(54), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.16 多様性の原則 :「唯一の正しい方法」とする全ての主張を信用するな").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(55), 1, 1, 1));
            outline1_1_6.AddOutline("1.6.17 拡張性の原則 :未来は予想外に早くやつてくる。未来を見すえ て設計せよ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(55), 1, 1, 1));
            outline1_1.AddOutline("1.7 Unix思想を一言でまとめると").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(56), 1, 250, 1));
            outline1_1.AddOutline("1.8 Unix思想の応用").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(57), 1, 250, 1));
            outline1_1.AddOutline("1.9 姿勢も大切").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(57), 1, 250, 1));

            PdfOutline outline1_2 = outline1.AddOutline("第2章 歴史 :2つの文化の物語");
            outline1_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(60), 1, 1, 1));
            PdfOutline outline1_2_1 = outline1_2.AddOutline("2.1 Unixの起源と屈画史 :1969-1995");
            outline1_2_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(60), 1, 1, 1));
            outline1_2_1.AddOutline("2.1.1 創世記 :1969-1971").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(61), 1, 1, 1));
            outline1_2_1.AddOutline("2.1.2 出エジプト記 :1971-1980").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(63), 1, 1, 1));
            outline1_2_1.AddOutline("2.1.3 TCP/1PとUnix戦争 :1980-1990").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(66), 1, 1, 1));
            outline1_2_1.AddOutline("2.1.4 帝国への反撃 :1991-1995").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(66), 1, 1, 1));
            PdfOutline outline1_2_2 = outline1_2.AddOutline("2.2 ハッカーの起源と歴史 :1961-1995");
            outline1_2_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(74), 1, 1, 1));
            outline1_2_2.AddOutline("2.2.1 象牙の塔のなかでの遊び :1961-1980").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(75), 1, 1, 1));
            outline1_2_2.AddOutline("2.2.2 インターネットによる融合とフリーソフトウエア運動:1981-1991").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(76), 1, 1, 1));
            outline1_2_2.AddOutline("2.2.3 Linuxとプラグマティストの反応:1991-1998").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(79), 1, 1, 1));
            outline1_2.AddOutline("2.3 オープンソース運動 :1998年から現在まで").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(81), 1, 1, 1));
            outline1_2.AddOutline("2.4 Unixの歴史が示す教訓").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(83), 1, 1, 1));

            PdfOutline outline1_3 = outline1.AddOutline("第3章 対比 :Unix思想と他のOS");
            outline1_3.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(84), 1, 1, 1));
            PdfOutline outline1_3_1 = outline1_3.AddOutline("3.1 オペレーテイングシステムのスタイルを構成する要素");
            outline1_3_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(84), 1, 1, 1));
            outline1_3_1.AddOutline("3.1.1 オペレーテイングシステム基本思想").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(85), 1, 1, 1));
            outline1_3_1.AddOutline("3.1.2 マルチタスク機能").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(85), 1, 1, 1));
            outline1_3_1.AddOutline("3.1.3 プロセスの共同作業").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(86), 1, 1, 1));
            outline1_3_1.AddOutline("3.1.4 内部区分").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(87), 1, 1, 1));
            outline1_3_1.AddOutline("3.1.5 ファイル属性とレコード構造").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(88), 1, 1, 1));
            outline1_3_1.AddOutline("3.1.6 バイナリフアイルフオーマツト").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(89), 1, 1, 1));
            outline1_3_1.AddOutline("3.1.7 ユーザーインターフェイススタイル").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(89), 1, 1, 1));
            outline1_3_1.AddOutline("3.1.8 対象とするユーザー").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(90), 1, 1, 1));
            outline1_3_1.AddOutline("3.1.9 プログラマになるための障壁").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(91), 1, 1, 1));
            PdfOutline outline1_3_2 = outline1_3.AddOutline("3.2 オペレーティングシステムの比較");
            outline1_3_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(92), 1, 1, 1));
            outline1_3_2.AddOutline("3.2.1 VMS").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(94), 1, 1, 1));
            outline1_3_2.AddOutline("3.2.2 MacOS").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(95), 1, 1, 1));
            outline1_3_2.AddOutline("3.2.3 OS/2").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(97), 1, 1, 1));
            outline1_3_2.AddOutline("3.2.4 Windows NT").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(99), 1, 1, 1));
            outline1_3_2.AddOutline("3.2.5 BeOS").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(102), 1, 1, 1));
            outline1_3_2.AddOutline("3.2.6 MVS").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(104), 1, 1, 1));
            outline1_3_2.AddOutline("3.2.7 VM/CMS").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(106), 1, 1, 1));
            outline1_3_2.AddOutline("3.2.8 Linux").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(108), 1, 1, 1));
            outline1_3.AddOutline("3.3 死んだものと残つたもの、その理由").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(110), 1, 1, 1));

            PdfOutline outline2 = pdfDoc.GetOutlines(true).AddOutline("第2部 設計");
            outline2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(114), 1, 1, 1));

            PdfOutline outline4 = outline2.AddOutline("第4章 モジュール化 :簡潔に、単純に");
            outline4.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(116), 1, 1, 1));
            PdfOutline outline4_1 = outline4.AddOutline("4.1 カプセル化と最適なモジュールサイズ");
            outline4_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(118), 1, 1, 1));
            PdfOutline outline4_2 = outline4.AddOutline("4.2 簡潔性と直交性");
            outline4_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(118), 1, 1, 1));
            outline4_2.AddOutline("4.2.1 簡潔性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(120), 1, 1, 1));
            outline4_2.AddOutline("4.2.2 直交性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(122), 1, 1, 1));
            outline4_2.AddOutline("4.2.3 SPOT原則").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(124), 1, 1, 1));
            outline4_2.AddOutline("4.2.4 簡潔性と強力な単純の中心にあるもの").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(125), 1, 1, 1));
            outline4_2.AddOutline("4.2.5 独立性の価値").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(127), 1, 1, 1));
            PdfOutline outline4_3 = outline4.AddOutline("4.3 ソフトウェアにはたくさんの階層がある");
            outline4_3.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(128), 1, 1, 1));
            outline4_3.AddOutline("4.3.1 トップダウン対ボトムアップ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(128), 1, 1, 1));
            outline4_3.AddOutline("4.3.2 グルーレイヤ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(130), 1, 1, 1));
            outline4_3.AddOutline("4.3.3 ケーススタディ:薄いグルーとしてのC").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(131), 1, 1, 1));
            PdfOutline outline4_4 = outline4.AddOutline("4.4 ライブラリ");
            outline4_4.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(133), 1, 1, 1));
            outline4_4.AddOutline("4.4.1 ケーススタデイ:GIMPプラグイン").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(134), 1, 1, 1));
            PdfOutline outline4_5 = outline4.AddOutline("4.5 Unixとオブジエクト指向言語");
            outline4_5.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(135), 1, 1, 1));
            PdfOutline outline4_6 = outline4.AddOutline("4.6 モジュール化を実現するコーデイング");
            outline4_6.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(137), 1, 1, 1));

            PdfOutline outline5 = outline2.AddOutline("第5章 テキスト形式 :優れたプロトコルが優れた実践を生む");
            outline5.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(140), 1, 1, 1));
            PdfOutline outline5_1 = outline5.AddOutline("5.1 テキストであることの重要性");
            outline5_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(142), 1, 1, 1));
            outline5_1.AddOutline("5.1.1 ケーススタディ :Unixバスワードファイルフォーマット").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(144), 1, 1, 1));
            outline5_1.AddOutline("5.1.2 ケーススタディ :.newsrc フォーマット").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(145), 1, 1, 1));
            outline5_1.AddOutline("5.1.3 ケーススタディ :PNGグラフィックスファイルフォーマット").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(146), 1, 1, 1));
            PdfOutline outline5_2 = outline5.AddOutline("5.2 データファイルメタフォーマット");
            outline5_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(147), 1, 1, 1));
            outline5_2.AddOutline("5.2.1 DSVスタイル").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(148), 1, 1, 1));
            outline5_2.AddOutline("5.2.2 RFC 822フォーマット").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(149), 1, 1, 1));
            outline5_2.AddOutline("5.2.3 クッキージャーフォーマット").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(150), 1, 1, 1));
            outline5_2.AddOutline("5.2.4 レコードジャーフォーマット").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(151), 1, 1, 1));
            outline5_2.AddOutline("5.2.5 XML").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(152), 1, 1, 1));
            outline5_2.AddOutline("5.2.6 Windows INIフォーマット").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(154), 1, 1, 1));
            outline5_2.AddOutline("5.2.7 Unixのテキストファイルフォーマットに見られる慣習").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(155), 1, 1, 1));
            outline5_2.AddOutline("5.2.8 ファイル圧縮のメリットとデメリット").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(157), 1, 1, 1));
            PdfOutline outline5_3 = outline5.AddOutline("5.3 アプリケーションプロトコルの設計");
            outline5_3.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(158), 1, 1, 1));
            outline5_3.AddOutline("5.3.1 ケーススタディ:SMTP〔Simple Mail Transfer Protocol)").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(159), 1, 1, 1));
            outline5_3.AddOutline("5.3.2 ケーススタディ:POP3 (Post Office Protocol)").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(160), 1, 1, 1));
            outline5_3.AddOutline("5.3.3 ケーススタディ:IMAP (Internet Message Access Protocol)").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(161), 1, 1, 1));
            PdfOutline outline5_4 = outline5.AddOutline("5.4 アプリケーションプロトコルメタフォーマット");
            outline5_4.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(162), 1, 1, 1));
            outline5_4.AddOutline("5.4.1 古典的なインターネットアプリケーションのメタプロトコル").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(163), 1, 1, 1));
            PdfOutline outline5_4_2 = outline5_4.AddOutline("5.4.2 普遍的なアプリケーションプロトコルとしてのHTTP");
            outline5_4_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(163), 1, 1, 1));
            outline5_4_2.AddOutline("5.4.2.1 ケーススタディ :CDDB/freedb.org データベース").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(164), 1, 1, 1));
            outline5_4_2.AddOutline("5.4.2.2 ケーススタディ :IPP (Internet Printing Protocol)").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(165), 1, 1, 1));
            outline5_4.AddOutline("5.4.3 BEEP (Blocks Extensible Exchange Protocol)").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(166), 1, 1, 1));
            outline5_4.AddOutline("5.4.4 XML-RPC、SOAP、Jabber").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(166), 1, 1, 1));

            PdfOutline outline6 = outline2.AddOutline("第6章 透明性 :光あれ");
            outline6.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(168), 1, 1, 1));
            PdfOutline outline6_1 = outline6.AddOutline("6.1 ケーススタディ");
            outline6_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(169), 1, 1, 1));
            outline6_1.AddOutline("6.1.1 ケーススタディ :audacity").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(170), 1, 1, 1));
            outline6_1.AddOutline("6.1.2 ケーススタディ :fetchmallの-vオプション").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(171), 1, 1, 1));
            outline6_1.AddOutline("6.1.3 ケーススタディ :GCC").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(173), 1, 1, 1));
            outline6_1.AddOutline("6.1.4 ケーススタディ :kmail").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(174), 1, 1, 1));
            outline6_1.AddOutline("6.1.5 ケーススタディ :SNG").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(176), 1, 1, 1));
            outline6_1.AddOutline("6.1.6 terminfoデータベース").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(178), 1, 1, 1));
            outline6_1.AddOutline("6.1.7 Freecivデータファイル").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(180), 1, 1, 1));
            PdfOutline outline6_2 = outline6.AddOutline("6.2 透明性と開示性が得られる設計");
            outline6_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(182), 1, 1, 1));
            outline6_2.AddOutline("6.2.1 透明性の禅").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(183), 1, 1, 1));
            outline6_2.AddOutline("6.2.2 透明性と開示性を実現するコーディング").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(184), 1, 1, 1));
            outline6_2.AddOutline("6.2.3 透明性と過剰防衛の回避").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(185), 1, 1, 1));
            outline6_2.AddOutline("6.2.4 透明性と編集可能な表現").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(186), 1, 1, 1));
            outline6_2.AddOutline("6.2.5 透明性、誤りの診断と修復").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(187), 1, 1, 1));
            PdfOutline outline6_3 = outline6.AddOutline("6.3 メンテナンス性を実現する設計");
            outline6_3.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(188), 1, 1, 1));


            PdfOutline outline7 = outline2.AddOutline("第7章 マルチプログラミング :プロセスを機能別に分割する");
            outline7.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(192), 1, 1, 1));
            PdfOutline outline7_1 = outline7.AddOutline("7.1 複雑さの支配とパフォーマンスのチューニングの分割");
            outline7_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(194), 1, 1, 1));
            PdfOutline outline7_2 = outline7.AddOutline("7.2 Unix IPCメソッドの分類学");
            outline7_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(195), 1, 1, 1));
            PdfOutline outline7_2_1 = outline7_2.AddOutline("7.2.1 専用プログラムに処理を委ねる");
            outline7_2_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(195), 1, 1, 1));
            outline7_2_1.AddOutline("7.2.1.1 ケーススタディ :muttメールユーザーエージェント").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(196), 1, 1, 1));
            PdfOutline outline7_2_2 = outline7_2.AddOutline("7.2.2 パイプ、リダイレクト、フィルタ");
            outline7_2_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(196), 1, 1, 1));
            outline7_2_2.AddOutline("7.2.2.1 ケーススタディ :ページャーへのパイプ出力").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(198), 1, 1, 1));
            outline7_2_2.AddOutline("7.2.2.3 ケーススタディ :pic2graph").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(199), 1, 1, 1));
            outline7_2_2.AddOutline("7.2.2.4 ケーススタディ :bc(1)とdc(1)").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(200), 1, 1, 1));
            outline7_2_2.AddOutline("7.2.2.5 反ケーススタディ :fetchmailはなぜパイプラインではないのか").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(200), 1, 1, 1));
            PdfOutline outline7_2_3 = outline7_2.AddOutline("7.2.3 ラッパー");
            outline7_2_3.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(201), 1, 1, 1));
            outline7_2_3.AddOutline("7.2.3.1 ケーススタディ:パックアップスクリプト").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(198), 1, 1, 1));
            PdfOutline outline7_2_4 = outline7_2.AddOutline("7.2.4 ラッパー");
            outline7_2_4.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(202), 1, 1, 1));
            PdfOutline outline7_2_5 = outline7_2.AddOutline("7.2.5 スレーブプロセス");
            outline7_2_5.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(203), 1, 1, 1));
            outline7_2_5.AddOutline("7.2.5.1 ケーススタディ:scpとssh").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(204), 1, 1, 1));
            PdfOutline outline7_2_6 = outline7_2.AddOutline("7.2.6 ビアツービアのプロセス間通信 (IPC)");
            outline7_2_6.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(204), 1, 1, 1));
            outline7_2_6.AddOutline("7.2.6.1 一時ファイル").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(204), 1, 1, 1));
            outline7_2_6.AddOutline("7.2.6.2 シグナル").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(205), 1, 1, 1));
            outline7_2_6.AddOutline("7.2.6.3 システムデーモンとシグナル").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(207), 1, 1, 1));
            outline7_2_6.AddOutline("7.2.6.4 fetchmailのシグナルの使い方").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(207), 1, 1, 1));
            PdfOutline outline7_2_6_5 = outline7_2_6.AddOutline("7.2.6.5 ソケット");
            outline7_2_6_5.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(208), 1, 1, 1));
            outline7_2_6_5.AddOutline("7.2.6.5.1 PostgreSQL").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(209), 1, 1, 1));
            outline7_2_6_5.AddOutline("7.2.6.5.2 Freeciv").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(210), 1, 1, 1));
            outline7_2_6.AddOutline("7.2.6.6 共有メモリ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(210), 1, 1, 1));
            PdfOutline outline7_3 = outline7.AddOutline("7.3 問題点や避けるべき方法");
            outline7_3.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(212), 1, 1, 1));
            PdfOutline outline7_3_1 = outline7_3.AddOutline("7.3.1 時代遅れになつた Unixの IPCメソッド");
            outline7_3_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(212), 1, 1, 1));
            outline7_3_1.AddOutline("7.3.1.1 System V IPC").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(212), 1, 1, 1));
            outline7_3_1.AddOutline("7.3.1.2 Streams").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(212), 1, 1, 1));
            outline7_3.AddOutline("7.3.2 リモートプロシージャ呼び出し").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(212), 1, 1, 1));
            outline7_3.AddOutline("7.3.3 マルチスレッド---脅威それとも厄介者").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(212), 1, 1, 1));
            outline7.AddOutline("7.4 設計レベルでのプロセス分割").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(217), 1, 1, 1));



            PdfOutline outline8 = outline2.AddOutline("第8章 ミニ言語 :歌いだす記法を探す");
            outline8.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(220), 1, 1, 1));
            outline8.AddOutline("8.1 言語の分類学").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(222), 1, 1, 1));
            PdfOutline outline8_2 = outline8.AddOutline("8.2 ミニ言語の応用");
            outline8_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(224), 1, 1, 1));
            outline8_2.AddOutline("8.2.1 ケーススタディ :sng").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(224), 1, 1, 1));
            outline8_2.AddOutline("8.2.2 ケーススタディ :正規表現").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(224), 1, 1, 1));
            outline8_2.AddOutline("8.2.3 ケーススタディ :Glade").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(227), 1, 1, 1));
            outline8_2.AddOutline("8.2.4 ケーススタディ :m4").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(229), 1, 1, 1));
            outline8_2.AddOutline("8.2.5 ケーススタディ :XSLT").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(230), 1, 1, 1));
            outline8_2.AddOutline("8.2.6 ケーススタディ :DWB").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(231), 1, 1, 1));
            outline8_2.AddOutline("8.2.7 ケーススタディ :fetchmailの実行制御ファイルの構文").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(126), 1, 1, 1));
            outline8_2.AddOutline("8.2.8 ケーススタディ :awk").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(237), 1, 1, 1));
            outline8_2.AddOutline("8.2.9 ケーススタディ :PostScript").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(238), 1, 1, 1));
            outline8_2.AddOutline("8.2.10 ケーススタディ :bcとdc").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(240), 1, 1, 1));
            outline8_2.AddOutline("8.2.11 ケーススタディ :Emacs Lisp").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(241), 1, 1, 1));
            outline8_2.AddOutline("8.2.12 ケーススタディ :Javascript").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(242), 1, 1, 1));
            PdfOutline outline8_3 = outline8.AddOutline("8.3 ミニ言語の設計");
            outline8_3.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(243), 1, 1, 1));
            outline8_3.AddOutline("8.3.1 適切な複雑度の選択").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(243), 1, 1, 1));
            outline8_3.AddOutline("8.3.2 言語の拡張と組み込みの言語").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(245), 1, 1, 1));
            outline8_3.AddOutline("8.3.3 カスタム文法の作成").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(246), 1, 1, 1));
            outline8_3.AddOutline("8.3.4 マクロには注意").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(246), 1, 1, 1));
            outline8_3.AddOutline("8.3.5 言語かアプリケーションプロトコルか").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(248), 1, 1, 1));


            PdfOutline outline9 = outline2.AddOutline("第9章 コード生成 :高い水準で規定する");
            outline9.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(250), 1, 1, 1));
            PdfOutline outline9_1 = outline9.AddOutline("9.1 データ駆動プログラミング");
            outline9_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(251), 1, 1, 1));
            outline9_1.AddOutline("9.1.1 ケーススタディ :ascii").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(252), 1, 1, 1));
            outline9_1.AddOutline("9.1.2 ケーススタディ :統計的SPAMフィルタ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(253), 1, 1, 1));
            outline9_1.AddOutline("9.1.3 ケーススタディ :fetchmailconfのメタクラスハック").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(254), 1, 1, 1));
            PdfOutline outline9_2 = outline9.AddOutline("9.2 その場限りのコード生成");
            outline9_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(259), 1, 1, 1));
            outline9_2.AddOutline("9.2.1 ケーススタディ :asciiの表示の為のコード生成").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(259), 1, 1, 1));
            outline9_2.AddOutline("9.2.2 ケーススタディ :表形式のリストに対応するHTMLコードの生成").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(262), 1, 1, 1));

            PdfOutline outline10 = outline2.AddOutline("第10章 設定 :気持ちよくスタートしよう");
            outline10.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(266), 1, 1, 1));
            outline10.AddOutline("10.1 何を設定可能にすべきか").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(251), 1, 1, 1));
            outline10.AddOutline("10.2 設定のありか").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(268), 1, 1, 1));
            PdfOutline outline10_3 = outline10.AddOutline("10.3 実行制御ファイル");
            outline10_3.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(269), 1, 1, 1));
            outline10_3.AddOutline("10.3.1 ケーススタディ:.netrcファイル").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(271), 1, 1, 1));
            outline10_3.AddOutline("10.3.2 他のオペレーティングシステムに対する移植性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(273), 1, 1, 1));
            PdfOutline outline10_4 = outline10.AddOutline("10.4 環境変数");
            outline10_4.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(273), 1, 1, 1));
            outline10_4.AddOutline("10.4.1 システム環境変数").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(273), 1, 1, 1));
            outline10_4.AddOutline("10.4.2 ユーザー環境変数").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(274), 1, 1, 1));
            outline10_4.AddOutline("10.4.3 環境変数をいつ使うべきか").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(275), 1, 1, 1));
            outline10_4.AddOutline("10.4.4 他のオペレーションシステムへの移植性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(276), 1, 1, 1));
            PdfOutline outline10_5 = outline10.AddOutline("10.5 コマンドライン行オプション");
            outline10_5.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(277), 1, 1, 1));
            outline10_5.AddOutline("10.5.1 コマンド行オプション-aから-zまで").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(278), 1, 1, 1));
            outline10_5.AddOutline("10.5.2 他のオペレーションシステムへの移植性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(282), 1, 1, 1));
            PdfOutline outline10_6 = outline10.AddOutline("10.6 どの方法を選ぶか");
            outline10_6.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(283), 1, 1, 1));
            outline10_6.AddOutline("10.6.1 ケーススタディ:fetchmail").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(283), 1, 1, 1));
            outline10_6.AddOutline("10.6.2 ケーススタディ:XFree86サーバ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(285), 1, 1, 1));
            PdfOutline outline10_7 = outline10.AddOutline("10.7 これらのルールを破ると");
            outline10_7.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(287), 1, 1, 1));

            PdfOutline outline11 = outline2.AddOutline("第11章 ユーザーインターフェイス :Unix環境におけるユーザーインターフェイス設計");
            outline11.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(288), 1, 1, 1));
            outline11.AddOutline("11.1 驚き最小の原則をあてはめる").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(289), 1, 1, 1));
            outline11.AddOutline("11.2 Unixのインターフェイスの設計の歴史").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(291), 1, 1, 1));
            outline11.AddOutline("11.3 インターフェイス設計の評価方法").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(292), 1, 1, 1));
            PdfOutline outline11_4 = outline11.AddOutline("11.4 CLIとビジュアルンターフェイスのトレードオフ");
            outline11_4.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(294), 1, 1, 1));
            outline11_4.AddOutline("11.4.1 ケーススタディ:電卓プログラムを書くための2つの方法").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(298), 1, 1, 1));
            outline11.AddOutline("11.5 透明性、表現性、設定可能性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(299), 1, 1, 1));
            PdfOutline outline11_6 = outline11.AddOutline("11.6 Unixのインターフェイス設計パターン");
            outline11_6.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(301), 1, 1, 1));
            outline11_6.AddOutline("11.6.1 フィルタパターン").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(302), 1, 1, 1));
            outline11_6.AddOutline("11.6.2 キャントリップパターン").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(303), 1, 1, 1));
            outline11_6.AddOutline("11.6.3 ソースパターン").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(304), 1, 1, 1));
            outline11_6.AddOutline("11.6.4 シンクパターン").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(304), 1, 1, 1));
            outline11_6.AddOutline("11.6.5 コンパイラパターン").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(305), 1, 1, 1));
            outline11_6.AddOutline("11.6.6 edパターン").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(305), 1, 1, 1));
            outline11_6.AddOutline("11.6.7 rogue風パターン").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(306), 1, 1, 1));
            PdfOutline outline11_6_8 = outline11_6.AddOutline("11.6.8 「エンジンとインターフェイスの分離」パターン");
            outline11_6_8.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(309), 1, 1, 1));
            outline11_6_8.AddOutline("11.6.8.1 コンフィギュレーター/アクタペア").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(310), 1, 1, 1));
            outline11_6_8.AddOutline("11.6.8.2 スプーラ/デーモンペア").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(310), 1, 1, 1));
            outline11_6_8.AddOutline("11.6.8.3 ドライバ/エンジンペア").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(311), 1, 1, 1));
            outline11_6_8.AddOutline("11.6.8.4 クライアント/サーバペア").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(313), 1, 1, 1));
            outline11_6.AddOutline("11.6.9 CLIパターン").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(314), 1, 1, 1));
            outline11_6.AddOutline("11.6.10 言語ベースのインターフェイスパターン").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(315), 1, 1, 1));
            PdfOutline outline11_7 = outline11.AddOutline("11.7 Unixインターフェイス設計パターンの使い方");
            outline11_7.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(316), 1, 1, 1));
            outline11_7.AddOutline("11.7.1 ポリバレントプログラムパターン").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(317), 1, 1, 1));
            outline11.AddOutline("11.8 普遍的なフロントエンドとしてのWebブラウザ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(318), 1, 1, 1));
            outline11.AddOutline("11.9 沈黙は金なり").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(320), 1, 1, 1));

            PdfOutline outline12 = outline2.AddOutline("第12章 最適化");
            outline12.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(322), 1, 1, 1));
            outline12.AddOutline("12.1 何かしなくちゃ、じゃない。じっとしていろ!").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(322), 1, 1, 1));
            outline12.AddOutline("12.2 最適化する前に計測せよ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(323), 1, 1, 1));
            outline12.AddOutline("12.3 局所化できていないことの害").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(325), 1, 1, 1));
            PdfOutline outline12_4 = outline12.AddOutline("12.4 スループットとレイテンシ");
            outline12_4.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(326), 1, 1, 1));
            outline12_4.AddOutline("12.4.1 バッチ処理").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(328), 1, 1, 1));
            outline12_4.AddOutline("12.4.2 処理のオーバーラップ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(328), 1, 1, 1));
            outline12_4.AddOutline("12.4.3 処理結果のキャッシュ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(329), 1, 1, 1));
            PdfOutline outline13 = outline2.AddOutline("第13章 複雑さ :できる限り単純に、それよりも単純でなく");
            outline13.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(332), 1, 1, 1));
            PdfOutline outline13_1 = outline13.AddOutline("13.1 複雑さとは何か");
            outline13_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(332), 1, 1, 1));
            outline13_1.AddOutline("13.1.1 複雑さを生む3つの源泉").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(333), 1, 1, 1));
            outline13_1.AddOutline("13.1.2 インターフェイスの複雑さと実装の複雑さのトレードオフ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(335), 1, 1, 1));
            outline13_1.AddOutline("13.1.3 本質的な複雑さ、選択上の複雑さ、付随的な複雑さ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(336), 1, 1, 1));
            outline13_1.AddOutline("13.1.4 複雑さの見取り図").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(337), 1, 1, 1));
            outline13_1.AddOutline("13.1.5 単純なだけでは十分でない場合").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(339), 1, 1, 1));
            PdfOutline outline13_2 = outline13.AddOutline("13.2 5エディタ物語");
            outline13_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(339), 1, 1, 1));
            outline13_2.AddOutline("13.2.1 ed").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(340), 1, 1, 1));
            outline13_2.AddOutline("13.2.2 vi").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(342), 1, 1, 1));
            outline13_2.AddOutline("13.2.3 Sam").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(343), 1, 1, 1));
            outline13_2.AddOutline("13.2.4 Emacs").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(344), 1, 1, 1));
            outline13_2.AddOutline("13.2.5 Wily").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(345), 1, 1, 1));
            PdfOutline outline13_3 = outline13.AddOutline("13.3 エディタの適性サイズ");
            outline13_3.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(346), 1, 1, 1));
            outline13_3.AddOutline("13.3.1 複雑さが問題となる場所").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(346), 1, 1, 1));
            outline13_3.AddOutline("13.3.2 妥協はつまづく").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(350), 1, 1, 1));
            outline13_3.AddOutline("13.3.3 Emacsは Unixの伝続に対する反証になるか").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(351), 1, 1, 1));
            PdfOutline outline13_4 = outline13.AddOutline("13.4 ソフトウェアの適正なサイズ");
            outline13_4.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(353), 1, 1, 1));


            PdfOutline outline3 = pdfDoc.GetOutlines(true).AddOutline("第3部 実装");
            outline3.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(356), 1, 1, 1));

            PdfOutline outline14 = outline3.AddOutline("第14章 言語 :CすべきかCせざるべきか?");
            outline14.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(358), 1, 1, 1));
            outline14.AddOutline("14.1 Unixの言語の打出の小槌").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(358), 1, 1, 1));
            outline14.AddOutline("14.2 なぜCではないのか").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(359), 1, 1, 1));
            outline14.AddOutline("14.3 インタープリタ言語と言語併用戦略").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(361), 1, 1, 1));
            PdfOutline outline14_4 = outline14.AddOutline("14.4 言語の評価");
            outline14_4.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(362), 1, 1, 1));
            PdfOutline outline14_4_1 = outline14_4.AddOutline("14.4.1 C");
            outline14_4_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(362), 1, 1, 1));
            outline14_4_1.AddOutline("14.4.1.1 Cケーススタディ:fetchmail").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(363), 1, 1, 1));
            PdfOutline outline14_4_2 = outline14_4.AddOutline("14.4.2 C++");
            outline14_4_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(364), 1, 1, 1));
            outline14_4_2.AddOutline("14.4.2.1 C++ケーススタディ:Qtツールキット").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(366), 1, 1, 1));
            PdfOutline outline14_4_3 = outline14_4.AddOutline("14.4.3 シェル");
            outline14_4_3.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(367), 1, 1, 1));
            outline14_4_3.AddOutline("14.4.3.1 ケーススタディ:xmlto").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(368), 1, 1, 1));
            outline14_4_3.AddOutline("14.4.3.2 ケーススタディ:Sorcery Linux").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(369), 1, 1, 1));
            PdfOutline outline14_4_4 = outline14_4.AddOutline("14.4.4 Perl");
            outline14_4_4.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(369), 1, 1, 1));
            outline14_4_4.AddOutline("14.4.4.1 小規模perlプログラムのケーススタデイ:blq").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(370), 1, 1, 1));
            outline14_4_4.AddOutline("14.4.4.2 大規模perlプログラムのケーススタデイ:keeper").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(371), 1, 1, 1));

            PdfOutline outline14_4_5 = outline14_4.AddOutline("14.4.5 Tcl");
            outline14_4_5.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(371), 1, 1, 1));
            outline14_4_5.AddOutline("14.4.5.1 ケーススタデイ:TkMan").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(373), 1, 1, 1));
            outline14_4_5.AddOutline("14.4.5.2 大規模 Tclプログラムのケーススタディ:Moodss").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(373), 1, 1, 1));

            PdfOutline outline14_4_6 = outline14_4.AddOutline("14.4.6 Python");
            outline14_4_6.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(373), 1, 1, 1));
            outline14_4_6.AddOutline("14.4.6.1 小規模 Pythonプログラムのケーススタデイ:imgsizer").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(375), 1, 1, 1));
            outline14_4_6.AddOutline("14.4.6.2 中規模 Pythonプログラムのケーススタデイ:fetchma‖ conf").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(375), 1, 1, 1));
            outline14_4_6.AddOutline("14.4.6.3 大規模 Pythonプログラムのケーススタディ:PIL").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(376), 1, 1, 1));

            PdfOutline outline14_4_7 = outline14_4.AddOutline("14.4.7 Java");
            outline14_4_7.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(377), 1, 1, 1));
            outline14_4_7.AddOutline("14.4.7.1 ケーススタディ:FreeNet").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(379), 1, 1, 1));


            outline14_4.AddOutline("14.4.8 Emacs Lisp").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(380), 1, 1, 1));
            outline14.AddOutline("14.5 未来に向けての流れ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(381), 1, 1, 1));
            outline14.AddOutline("14.6 Xツールキットの選び方").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(383), 1, 1, 1));


            PdfOutline outline15 = outline3.AddOutline("第15章 ツール :開発の戦略");
            outline15.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(386), 1, 1, 1));
            outline15.AddOutline("15.1 デベロッパフレンドリなオペレーテイングシステム").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(386), 1, 1, 1));
            PdfOutline outline15_2 = outline15.AddOutline("15.2 エデイタの選び方");
            outline15_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(387), 1, 1, 1));
            outline15_2.AddOutline("15.2.1 viについて知つていると便利なこと").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(388), 1, 1, 1));
            outline15_2.AddOutline("15.2.2 Emacsについて知つていると便利なこと").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(388), 1, 1, 1));
            outline15_2.AddOutline("15.2.3 新興宗教の信者的でない選び方 :両方を使う").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(389), 1, 1, 1));
            PdfOutline outline15_3 = outline15.AddOutline("15.3 専用コードジェネレータ");
            outline15_3.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(390), 1, 1, 1));
            PdfOutline outline15_3_1 = outline15_3.AddOutline("15.3.1 yaccとlex");
            outline15_3_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(390), 1, 1, 1));
            outline15_3_1.AddOutline("15.3.1.1 ケーススタディ:fetchmailrcの文法").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(393), 1, 1, 1));
            outline15_3.AddOutline("15.3.2 ケーススタディ:Glade").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(390), 1, 1, 1));
            PdfOutline outline15_4 = outline15.AddOutline("15.4 make:レシピの自動化");
            outline15_4.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(394), 1, 1, 1));
            outline15_4.AddOutline("15.4.1 makeの基本理論").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(395), 1, 1, 1));
            PdfOutline outline15_4_2 = outline15_4.AddOutline("15.4.2 C/C++以外の開発でのmake");
            outline15_4_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(397), 1, 1, 1));
            outline15_4_2.AddOutline("15.4.2.1 ケーススタディ:ドキュメントファイルの変換の為のmake").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(397), 1, 1, 1));
            outline15_4.AddOutline("15.4.3 ユーティリティプロダクション").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(397), 1, 1, 1));
            PdfOutline outline15_4_4 = outline15_4.AddOutline("15.4.4 メイクファイルの生成の生成");
            outline15_4_4.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(399), 1, 1, 1));
            outline15_4_4.AddOutline("15.4.4.1 makedepend").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(400), 1, 1, 1));
            outline15_4_4.AddOutline("15.4.4.2 Imake").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(400), 1, 1, 1));
            outline15_4_4.AddOutline("15.4.4.3 autoconf").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(401), 1, 1, 1));
            outline15_4_4.AddOutline("15.4.4.4 automake").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(402), 1, 1, 1));
            PdfOutline outline15_5 = outline15.AddOutline("15.5 バージョン管理システム");
            outline15_5.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(402), 1, 1, 1));
            outline15_5.AddOutline("15.5.1 なぜパージョン管理か").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(402), 1, 1, 1));
            outline15_5.AddOutline("15.5.2 手作業によるパージョン管理").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(403), 1, 1, 1));
            outline15_5.AddOutline("15.5.3 自動化されたバージョン管理").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(404), 1, 1, 1));
            PdfOutline outline15_5_4 = outline15_5.AddOutline("15.5.4 バージョン管理の為のUnixツール");
            outline15_5_4.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(405), 1, 1, 1));
            outline15_5_4.AddOutline("15.5.4.1 SCCS(Source Code Control System)").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(405), 1, 1, 1));
            outline15_5_4.AddOutline("15.5.4.2 RCS(Revision Control System)").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(405), 1, 1, 1));
            outline15_5_4.AddOutline("15.5.4.3 CVS(Control Version System)").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(406), 1, 1, 1));
            outline15_5_4.AddOutline("15.5.4.4 その他のバージョン管理システム").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(407), 1, 1, 1));
            outline15.AddOutline("15.6 実行時のデバッグ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(407), 1, 1, 1));
            outline15.AddOutline("15.7 プロファイリング").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(408), 1, 1, 1));
            PdfOutline outline15_8 = outline15.AddOutline("15.8 Emacsとツールの組み合わせ");
            outline15_8.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(409), 1, 1, 1));
            outline15_8.AddOutline("15.8.1 Emacsとmake").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(409), 1, 1, 1));
            outline15_8.AddOutline("15.8.2 Emacsと実行時デバッグ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(410), 1, 1, 1));
            outline15_8.AddOutline("15.8.3 Emacsとバージョン管理").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(410), 1, 1, 1));
            outline15_8.AddOutline("15.8.4 Emacsとプロファイリング").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(411), 1, 1, 1));
            outline15_8.AddOutline("15.8.5 IDEと同じかそれ以上").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(411), 1, 1, 1));


            PdfOutline outline16 = outline3.AddOutline("第16章 再利用 :やり直しを避けること");
            outline16.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(414), 1, 1, 1));
            outline16.AddOutline("16.1 J.Randam Newbleの物語").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(415), 1, 1, 1));
            outline16.AddOutline("16.2 再利用の鍵としての透明性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(418), 1, 1, 1));
            outline16.AddOutline("16.3 再利用からオープンソースへ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(420), 1, 1, 1));
            outline16.AddOutline("16.4 もっとも優れたものはオープンだ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(421), 1, 1, 1));
            outline16.AddOutline("16.5 どこで探すか").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(423), 1, 1, 1));
            outline16.AddOutline("16.6 オープンソースソフトウェアを使ううえでの問題点").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(425), 1, 1, 1));
            PdfOutline outline16_7 = outline16.AddOutline("16.7 ライセンスの問題");
            outline16_7.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(426), 1, 1, 1));
            outline16_7.AddOutline("16.7.1 オープンソースと呼ばれる為の資格").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(427), 1, 1, 1));
            outline16_7.AddOutline("16.7.2 標準的なオープンソースライセンス").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(428), 1, 1, 1));
            outline16_7.AddOutline("16.7.3 法律家が必要になるとき").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(430), 1, 1, 1));


            PdfOutline outline_4 = pdfDoc.GetOutlines(true).AddOutline("第4部 コミュニティ");
            outline_4.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(432), 1, 1, 1));

            PdfOutline outline17 = outline_4.AddOutline("第17章 移植性 :ソフトウェアの移植性と標準の維持");
            outline17.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(434), 1, 1, 1));
            PdfOutline outline17_1 = outline17.AddOutline("17.1 Cの発達");
            outline17_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(435), 1, 1, 1));
            outline17_1.AddOutline("17.1.1 Cの初期の歴史").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(435), 1, 1, 1));
            outline17_1.AddOutline("17.1.2 C標準").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(437), 1, 1, 1));

            PdfOutline outline17_2 = outline17.AddOutline("17.2 Unix標準");
            outline17_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(438), 1, 1, 1));
            outline17_2.AddOutline("17.2.1 標準規格とUnix戦争").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(439), 1, 1, 1));
            outline17_2.AddOutline("17.2.2 勝利の宴に現れた亡霊").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(442), 1, 1, 1));
            outline17_2.AddOutline("17.2.3 オープンソースの世界におけるUnix標準").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(442), 1, 1, 1));


            outline17.AddOutline("17.4 DNAとしての仕様とRNAとしてのコード").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(444), 1, 1, 1));
            PdfOutline outline17_5 = outline17.AddOutline("17.5 移植性を確保するプログラミング");
            outline17_5.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(450), 1, 1, 1));

            PdfOutline outline17_5_1 = outline17_5.AddOutline("17.5.1 言語の選択と移植性");
            outline17_5_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(450), 1, 1, 1));
            outline17_5_1.AddOutline("17.5.1.1 Cの移植性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(450), 1, 1, 1));
            outline17_5_1.AddOutline("17.5.1.2 C++の移植性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(451), 1, 1, 1));
            outline17_5_1.AddOutline("17.5.1.3 シェルの移植性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(451), 1, 1, 1));
            outline17_5_1.AddOutline("17.5.1.4 Perlの移植性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(451), 1, 1, 1));
            outline17_5_1.AddOutline("17.5.1.5 Pythonの移植性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(451), 1, 1, 1));
            outline17_5_1.AddOutline("17.5.1.6 TCLの移植性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(452), 1, 1, 1));
            outline17_5_1.AddOutline("17.5.1.7 Javaの移植性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(452), 1, 1, 1));
            outline17_5_1.AddOutline("17.5.1.8 Emacs Lispの移植性").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(453), 1, 1, 1));
            outline17_5.AddOutline("17.5.2 システムヘの依存を通けるには").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(453), 1, 1, 1));
            outline17_5.AddOutline("17.5.3 移植性を確保するためのツール").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(454), 1, 1, 1));


            outline17.AddOutline("17.6 国際化").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(454), 1, 1, 1));
            outline17.AddOutline("17.7 移植性、オープン標準、オープンソース").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(455), 1, 1, 1));



            PdfOutline outline18 = outline_4.AddOutline("第18章 ドキュメント:Web中心の世界でコードの説明をする");
            outline18.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(458), 1, 1, 1));
            outline18.AddOutline("18.1 ドキュメントの概念").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(459), 1, 1, 1));
            PdfOutline outline18_2 = outline18.AddOutline("18.2 Unixスタイル");
            outline18_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(461), 1, 1, 1));
            outline18_2.AddOutline("18.2.1 大規模ドキュメントへの偏り").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(461), 1, 1, 1));
            outline18_2.AddOutline("18.2.2 文化的なスタイル").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(462), 1, 1, 1));
            PdfOutline outline18_3 = outline18.AddOutline("18.3 Unixドキュメントフォーマット");
            outline18_3.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(463), 1, 1, 1));
            outline18_3.AddOutline("18.3.1 troffとDWBツール").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(463), 1, 1, 1));
            outline18_3.AddOutline("18.3.2 TEX").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(465), 1, 1, 1));
            outline18_3.AddOutline("18.3.3 Texinfo").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(466), 1, 1, 1));
            outline18_3.AddOutline("18.3.4 POD").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(467), 1, 1, 1));
            outline18_3.AddOutline("18.3.5 HTML").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(467), 1, 1, 1));
            outline18_3.AddOutline("18.3.6 DocBook").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(467), 1, 1, 1));
            outline18.AddOutline("18.4 現在の混沌と脱出口").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(468), 1, 1, 1));
            PdfOutline outline18_5 = outline18.AddOutline("18.5 DocBook");
            outline18_5.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(468), 1, 1, 1));
            outline18_5.AddOutline("18.5.1 DTD").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(469), 1, 1, 1));
            outline18_5.AddOutline("18.5.2 その他のDTD").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(470), 1, 1, 1));
            outline18_5.AddOutline("18.5.3 DocBookツールチェーン").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(470), 1, 1, 1));
            outline18_5.AddOutline("18.5.4 移植ツール").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(472), 1, 1, 1));
            outline18_5.AddOutline("18.5.5 編集ツール").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(474), 1, 1, 1));
            outline18_5.AddOutline("18.5.6 関連する標準と実績").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(475), 1, 1, 1));
            outline18_5.AddOutline("18.5.7 SGML").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(475), 1, 1, 1));
            outline18_5.AddOutline("18.5.7 XML-DocBookの参考文献").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(475), 1, 1, 1));
            outline18.AddOutline("18.6 Unixでドキュメント書く為の最良の方法").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(475), 1, 1, 1));


            PdfOutline outline19 = outline_4.AddOutline("第19章 オープンソース:新しいUnixコミュニティでのプログラミング");
            outline19.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(478), 1, 1, 1));
            outline19.AddOutline("19.1 Unixとオープンソース").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(478), 1, 1, 1));
            PdfOutline outline19_2 = outline19.AddOutline("19.2 オープンソースデベロッパたちと共同作業するための最良の方法");
            outline19_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(481), 1, 1, 1));
            PdfOutline outline19_2_1 = outline19_2.AddOutline("19.2.1 パッチの優れた方法");
            outline19_2_1.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(481), 1, 1, 1));
            outline19_2_1.AddOutline("19.2.1.1 パッチを送り、アーカイブ全体やファイルを送らないようにしよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(482), 1, 1, 1));
            outline19_2_1.AddOutline("19.2.1.2 コードの最新パージョンに対するパッチを送るようにしよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(482), 1, 1, 1));
            outline19_2_1.AddOutline("19.2.1.3 生成したファイルのパッチを入れないようにしよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(482), 1, 1, 1));
            outline19_2_1.AddOutline("19.2.1.4 RCSや SCCSの$シンボルを書き換えただけのパッチを送らないようにしよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(483), 1, 1, 1));
            outline19_2_1.AddOutline("19.2.1.5 デフォルト(-e)フォーマットではなく、-cまたは-uフォーマットを使おう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(483), 1, 1, 1));
            outline19_2_1.AddOutline("19.2.1.6 パッチのドキュメントを組み込もう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(483), 1, 1, 1));
            outline19_2_1.AddOutline("19.2.1.7 パッチの説明を組み込もう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(484), 1, 1, 1));
            outline19_2_1.AddOutline("19.2.1.8 コードに役立つコメントを入れよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(484), 1, 1, 1));
            outline19_2_1.AddOutline("19.2.1.9 パッチが受け入れられなくても人格的な問題だと考え込まないようにしよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(485), 1, 1, 1));
            PdfOutline outline19_2_2 = outline19_2.AddOutline("19.2.2 プロジェクトとアーカイブの優れた命名方法");
            outline19_2_2.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(485), 1, 1, 1));
            outline19_2_2.AddOutline("19.2.2.1 プレフイツクスとメジャー.マイナー.パッチ番号という形式の GNU スタイルの名前を使おう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(485), 1, 1, 1));
            outline19_2_2.AddOutline("19.2.2.2 しかし、通切な場合には、ローカルな習慣を尊重しよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(487), 1, 1, 1));
            outline19_2_2.AddOutline("19.2.2.3 ファイル名プレフィックスとしてユニークで入力しやすいものを選ぶことを心がけよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(488), 1, 1, 1));
            PdfOutline outline19_2_3 = outline19_2.AddOutline("19.2.3 開発の優れた方法");
            outline19_2_3.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(488), 1, 1, 1));
            outline19_2_3.AddOutline("19.2.3.1 プロプライエタリコードに依存しないようにしよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(488), 1, 1, 1));
            outline19_2_3.AddOutline("19.2.3.2 GNU autotoolsを 使おう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(489), 1, 1, 1));
            outline19_2_3.AddOutline("19.2.3.3 リリースするまえにコードをテストしよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(489), 1, 1, 1));
            outline19_2_3.AddOutline("19.2.3.4 リリースするまえにコードに健全性チェックをかけよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(490), 1, 1, 1));
            outline19_2_3.AddOutline("19.2.3.5 リリース前にドキュメントとREADMEの スベルをチェックしよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(490), 1, 1, 1));
            outline19_2_3.AddOutline("19.2.3.6 C/C++の移植性を確保するためのよい方法").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(490), 1, 1, 1));
            PdfOutline outline19_2_4 = outline19_2.AddOutline("19.2.4 ディストリピューション作成のためのよい方法");
            outline19_2_4.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(492), 1, 1, 1));
            outline19_2_4.AddOutline("19.2.4.1 tarボールがかならず1つの新しいディレクトリに解凍されるように作ろう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(492), 1, 1, 1));
            outline19_2_4.AddOutline("19.2.4.2 READMEファイルを入れよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(493), 1, 1, 1));
            outline19_2_4.AddOutline("19.2.4.3 標準的なファイル名の慣習を尊重して従おう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(493), 1, 1, 1));
            outline19_2_4.AddOutline("19.2.4.4 アップグレード").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(494), 1, 1, 1));
            outline19_2_4.AddOutline("19.2.4.5 LinuxのもとではRPMを用意せよ").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(495), 1, 1, 1));
            outline19_2_4.AddOutline("19.2.4.6 チェックサムを提供しよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(496), 1, 1, 1));
            PdfOutline outline19_2_5 = outline19_2.AddOutline("19.2.5 コミュニケーションの優れた方法");
            outline19_2_5.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(496), 1, 1, 1));
            outline19_2_5.AddOutline("19.2.5.1 Freshmeatで発表しよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(496), 1, 1, 1));
            outline19_2_5.AddOutline("19.2.5.2 関連ニュースグループに発表しよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(496), 1, 1, 1));
            outline19_2_5.AddOutline("19.2.5.3 Webサイトを用意しよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(497), 1, 1, 1));
            outline19_2_5.AddOutline("19.2.5.4 プロジエクトメーリングリストを作ろう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(497), 1, 1, 1));
            outline19_2_5.AddOutline("19.2.5.5 メジヤーなアーカイブでリリースしよう").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(498), 1, 1, 1));
            outline19.AddOutline("19.3 ライセンスの論理 :どれを選ぶか").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(498), 1, 1, 1));
            outline19.AddOutline("19.4 標準ライセンスを使つたほうがよい理由").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(498), 1, 1, 1));
            PdfOutline outline19_5 = outline19.AddOutline("19.5 さまざまなオープンソーススライセンス");
            outline19_5.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(499), 1, 1, 1));
            outline19_5.AddOutline("19.5.1 MITまたはXコンソーシアムライセンス").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(499), 1, 1, 1));
            outline19_5.AddOutline("19.5.2 BSD Classlc License").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(499), 1, 1, 1));
            outline19_5.AddOutline("19.5.3 Artlstlc License").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(500), 1, 1, 1));
            outline19_5.AddOutline("19.5.4 GPL").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(500), 1, 1, 1));
            outline19_5.AddOutline("19.5.5 MPL").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(501), 1, 1, 1));
            
            PdfOutline outline20 = outline_4.AddOutline("第20章 未来:危険と可能性");
            outline19.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(502), 1, 1, 1));
            outline19.AddOutline("20.1 Unixの伝統における本質と偶然").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(502), 1, 1, 1));
            outline19.AddOutline("20.2 Plan 9:未来はかつてどうだつたか").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(505), 1, 1, 1));
            PdfOutline outline20_3 = outline19.AddOutline("20.3 Unixの設計の問題点");
            outline20_3.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(507), 1, 1, 1));
            outline20_3.AddOutline("20.3.1 Unixフアイルはパイトを集めた大きな袋に過ぎない").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(508), 1, 1, 1));
            outline20_3.AddOutline("20.3.2 Unixの GUlサポートは弱い").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(509), 1, 1, 1));
            outline20_3.AddOutline("20.3.3 ファイルを削除すると復活できない").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(510), 1, 1, 1));
            outline20_3.AddOutline("20.3.4 Unixは静的なファイルシステムを前提としている").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(510), 1, 1, 1));
            outline20_3.AddOutline("20.3.5 ジョブ制御の設計がお粗末だつた").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(511), 1, 1, 1));
            outline20_3.AddOutline("20.3.6 Unix APIは例外を使わない").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(512), 1, 1, 1));
            outline20_3.AddOutline("20.3.7 iocti(2)と fcnti(2)がごちゃごちゃしている").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(513), 1, 1, 1));
            outline20_3.AddOutline("20.3.8 Unixのセキュリテイモデルが原始的過ぎる").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(513), 1, 1, 1));
            outline20_3.AddOutline("20.3.9 Unixは異なる種類の名前が多すぎる").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(514), 1, 1, 1));
            outline20_3.AddOutline("20.3.10 ファイルシステムはまちがっているかもしれない").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(514), 1, 1, 1));
            outline20_3.AddOutline("20.3.11 グローバルなインターネットアドレス空間に向かって").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(514), 1, 1, 1));
            outline19.AddOutline("20.4 Unixの環境の問題点").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(515), 1, 1, 1));
            outline19.AddOutline("20.5 Unix文化の問題点").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(517), 1, 1, 1));
            outline19.AddOutline("20.6 言じる理由").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(520), 1, 1, 1));

            PdfOutline outlineA = pdfDoc.GetOutlines(true).AddOutline("付録A 略語集");
            outlineA.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(522), 1, 1, 1));

            PdfOutline outlineB = pdfDoc.GetOutlines(true).AddOutline("付録B 参考文献");
            outlineB.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(526), 1, 1, 1));

            PdfOutline outlineC = pdfDoc.GetOutlines(true).AddOutline("付録C 寄稿者紹介");
            outlineC.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(538), 1, 1, 1));

            PdfOutline outlineD = pdfDoc.GetOutlines(true).AddOutline("付録D 無根的根 :不宇先生の Unix公案");
            outlineD.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(542), 1, 1, 1));
            outlineD.AddOutline("D.1 エディタのイントロダクション").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(542), 1, 1, 1));
            outlineD.AddOutline("D.2 不宇先生と 1万行").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(543), 1, 1, 1));
            outlineD.AddOutline("D.3 不宇先生とスクリプト").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(544), 1, 1, 1));
            outlineD.AddOutline("D.4 不宇先生が 2つの道を説く").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(545), 1, 1, 1));
            outlineD.AddOutline("D.5 不宇先生と方法論者").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(546), 1, 1, 1));
            outlineD.AddOutline("D.6 不宇先生がグラフイカルユーザーインターフェイスを説く").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(547), 1, 1, 1));
            outlineD.AddOutline("D.7 不宇先生とUnixの熱心な支持者").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(548), 1, 1, 1));
            outlineD.AddOutline("D.8 不宇先生がUnix相を説く").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(548), 1, 1, 1));
            outlineD.AddOutline("D.9 不宇先生とエンドユーザー").AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(549), 1, 1, 1));

            PdfOutline outlineE = pdfDoc.GetOutlines(true).AddOutline("索引");
            outlineE.AddDestination(PdfExplicitDestination.CreateXYZ(pdfDoc.GetPage(552), 1, 1, 1));

            //PDFを閉じる
            pdfDoc.Close();
        }
    }
}