C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: iTextSharpでpdfのしおりの階層作成


(過去ログ 98 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■58528 / inTopicNo.1)  iTextSharpでpdfのしおりの階層作成
  
□投稿者/ ボルト (3回)-(2011/04/12(Tue) 14:10:06)

分類:[VB.NET/VB2005 以降] 

iTextSharpでpdfの作成を行っています。
No58491に関連して、pdf作成時にしおりをつけています。

iTextSharpのPdfCopyオブジェクトのOutlinesプロパティに、しおりの情報を設定しています。
例えば、1ページ目に"最初のページ"というタイトルでしおりを設定するには、
以下のようにして出来ました。

Dim pw As PdfWriter
Dim lstOutline As New List(Of Dictionary(Of String, Object))

(途中略)

Dim dic As New Dictionary(Of String, Object)
dic.Add("Title", "最初のページ")
dic.Add("Action", "GoTo")
dic.Add("Page", "1 FitH")
lstOutline.Add(dic)
pw.Outlines = lstOutline

ところで、しおりを、例えば以下のような階層化(ツリー表示)にしたいと思います。

分類1
 └最初のページ

しおりの上位に「分類1」があり、その配下に「最初のページ」というしおりがある、という具合です。
iTextSharpでこれを行うには、Outlinesをどのように設定すればよいでしょうか?
開発環境はVB2008です。
よろしくお願いします。

引用返信 編集キー/
■58536 / inTopicNo.2)  Re[1]: iTextSharpでpdfのしおりの階層作成
□投稿者/ ボルト (4回)-(2011/04/12(Tue) 15:42:11)
またまた自己レスです。
iTextSharpで階層しおりのあるpdfを開き、PdfReaderのSimpleBookmarkの中身を調べてみたら、
階層上位のしおりのDictionaryに、キーが"Kids"で値がIList(Of Dictionary(Of String, Object))のものがあったので、
試しに以下のようにしたらうまくいきました。

Dim pw As PdfWriter
Dim lstOutlineTop As New List(Of Dictionary(Of String, Object))
Dim lstOutline As New List(Of Dictionary(Of String, Object))
Dim dic As Dictionary(Of String, Object)

(途中略)

dic = New Dictionary(Of String, Object)
dic.Add("Title", "最初のページ")
dic.Add("Action", "GoTo")
dic.Add("Page", "1 FitH")
lstOutline.Add(dic)

dic = New Dictionary(Of String, Object)
dic.Add("Title", "分類1")
dic.Add("Kids", lstOutline)
lstOutlineTop.Add(dic)

pw.Outlines = lstOutlineTop

これにて解決とします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -