[英]How to add Bookmarks to PDF when Merging in Itext7
我正在嘗試創建一個合並多個pdf的程序,並為每個pdf都有一個書簽。
我的開始方法是:
private Byte[] MergePdfForms(Dictionary<string, Stream> files)
{
var dest = new MemoryStream();
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfMerger merger = new PdfMerger(pdf);
foreach (var keyValuePair in files)
{
//TODO add bookmark to this page
PdfDocument firstSourcePdf = new PdfDocument(new PdfReader(keyValuePair.Value));
merger.Merge(firstSourcePdf, 1, firstSourcePdf.GetNumberOfPages());
firstSourcePdf.Close();
}
pdf.Close();
return dest.ToArray();
}
我嘗試過類似的東西
pdf.InitializeOutlines();
pdf.AddNamedDestination("Test Bookmark", pdf.GetLastPage().GetPdfObject());
哪個不會創建任何書簽。
看一下這里的例子: http : //developers.itextpdf.com/examples/merging-pdf-documents/clone-merging-documents-bookmarks
private byte[] MergePdfForms(Dictionary<string, Stream> files)
{
var dest = new MemoryStream();
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfMerger merger = new PdfMerger(pdf);
PdfOutline rootOutline = pdf.GetOutlines(false);
PdfOutline helloWorld = rootOutline.AddOutline("Root");
int pages = 1;
foreach (var keyValuePair in files)
{
var firstSourcePdf = new PdfDocument(new PdfReader(keyValuePair.Value));
var subPages = firstSourcePdf.GetNumberOfPages();
merger.Merge(firstSourcePdf, 1, subPages);
firstSourcePdf.Close();
var link1 = helloWorld.AddOutline(keyValuePair.Key);
link1.AddDestination(PdfExplicitDestination.CreateFit(pdf.GetPage(pages)));
pages += subPages;
}
pdf.Close();
return dest.ToArray();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.