2011-12-29 50 views
2

Acrobat SDKを使用せずにpdf documetにブックマークを追加する必要があります。 私はiTextSharpを使用していますが、Java用に作られており、.netへの移植は完了していません。 無料の代替方法やドキュメントをご存知ですか?c#.netでPDF文書を操作するためのAcrobat SDKのベスト代替無料

+0

"ビールのように自由な"ソリューションが必要ですか? – Bobrovsky

+1

私の意見では、ItextSharpはacrobat sdkに代わる最良の無料代替手段です – Alessandro

+0

問題は:iTextSharpはオープンソースプロジェクトのみで無料です。 – Bobrovsky

答えて

2

あなたはしている主張する「iTextSharpが、Javaのために作られたされ、それを.NETに移植がを完了されていない」かなり間違えです。主な違いはlisted hereです。

iTextsharpでブックマークを追加するのは簡単です。 PdfOutlinePdfDestinationのAPIを参照してください。

using (Document document = new Document()) { 
    PdfWriter writer = PdfWriter.GetInstance(
    document, Response.OutputStream 
); 
    document.Open(); 
    PdfOutline root = writer.RootOutline; 
    string section = "Section {0}"; 
    string paragraph = "Paragraph {0}"; 
    for (int i = 0; i < 10;) { 
    PdfOutline sectionBookmark = new PdfOutline(
     root, 
     new PdfDestination(
     PdfDestination.FITH, writer.GetVerticalPosition(true) 
    ), 
     string.Format(section, ++i) 
    ); 
    document.Add(new Paragraph(string.Format(section, i))); 
    for (int j = 0; j < 4;) { 
     PdfOutline subSectionBookmark = new PdfOutline(
     sectionBookmark, 
     new PdfDestination(
      PdfDestination.FITH, writer.GetVerticalPosition(true) 
     ), 
     string.Format(paragraph, ++j) 
    ); 
     document.Add(new Paragraph(string.Format(paragraph, j))); 
    } 
    document.NewPage(); 
    } 
} 

上記の例は、5.1.3のWeb環境でテストされています。開発環境が異なる場合は、Response.OutputStreamを上記のStreamに置き換えてください。

+0

Thx!私はyor答えを受け入れるつもりですが、beacuse私は既存の文書にブックマークを追加する必要があり、ブックマークにはjavascriptが必要です。私のpuroposeはあなたのコードとは少し異なります。私の質問は、PDFstamper.setOutlineメソッドのJavaに存在し、C#では存在しないのは何ですか? – Alessandro

+0

これはC#=> 'stamper.Outlines = outlines;'のプロパティです。 C#で何かを見つけることができないときはいつでも、Javaメソッド名から 'set'が削除されたプロパティを探します。申し訳ありませんが、あなたのコメントを読んだので、あなたは既存のPDFを使用しているはずです。あなたは[本](http://itextpdf.com/book/)を持っていますか?あなたがいなくても、[この7つの例](http://kuujinbo.info/iTextInAction2Ed /index.aspx?ch=Chapter07&ex=BookmarkedTimeTable)。それは助けになるはずです。 – kuujinbo

関連する問題