在 ASP.NET 应用程序中,我使用 iText7 创建带有书签的新 pdf。使用以下代码,我可以创建一个包含多个页面和书签的 pdf,但是当我单击书签时没有任何反应。如何让读者在单击书签时导航到相关页面。
public ActionResult CreatePdf()
{
byte[] pdfBytes;
using (var stream = new MemoryStream())
using (var wri = new PdfWriter(stream))
using (var pdf = new PdfDocument(wri))
using (var doc = new Document(pdf))
{
doc.Add(new Paragraph("Working with iText7"));
doc.Add(new AreaBreak(AreaBreakType.NEXT_PAGE));
PdfOutline root = pdf.GetOutlines(false);
foreach (var item in col1)
{
doc.Add(new Paragraph(item.Name));
root.AddOutline(item.Name);
doc.Add(new AreaBreak());
}
doc.Close();
doc.Flush();
pdfBytes = stream.ToArray();
}
return File(pdfBytes, "application/pdf", "test.pdf");
}
public ActionResult CreatePdf()
{
byte[] pdfBytes;
using (var stream = new MemoryStream())
using (var wri = new PdfWriter(stream))
using (var pdf = new PdfDocument(wri))
using (var doc = new Document(pdf))
{
List<Destination> destinations = new List<Destination>();
doc.Add(new Paragraph("Working with iText7"));
// Iterate through your collection (col1) and add content and destinations
for (int i = 0; i < col1.Count; i++)
{
var item = col1[i];
Destination destination = PdfExplicitDestination.CreateFitH(i + 1, doc.GetPdfDocument().GetPage(i + 1));
destinations.Add(destination);
doc.Add(new Paragraph(item.Name));
doc.Add(new AreaBreak());
}
PdfOutline root = pdf.GetOutlines(false);
for (int i = 0; i < col1.Count; i++)
{
var item = col1[i];
root.AddOutline(item.Name).AddDestination(destinations[i]);
}
doc.Close();
doc.Flush();
pdfBytes = stream.ToArray();
}
return File(pdfBytes, "application/pdf", "test.pdf");
}
检查此代码。祝你好运!