Как сохранить документ используя IText7

Я добавил в документ гиперссылку:

using Kernel = iText.Kernel;
using Pdf = iText.Kernel.Pdf;


Pdf.PdfReader reader = new Pdf.PdfReader(fileName);
Pdf.PdfDocument document = new Pdf.PdfDocument(reader);

// Creating a PdfLinkAnnotation object 
Kernel.Geom.Rectangle rect = new Kernel.Geom.Rectangle(0, 0, 0, 0);
Pdf.Annot.PdfLinkAnnotation annotation = new Pdf.Annot.PdfLinkAnnotation(rect);
// Setting action of the annotation 
Pdf.Action.PdfAction action = Pdf.Action.PdfAction.CreateURI("http://www.mail.ru/");
annotation.SetAction(action);
annotation.SetHighlightMode(Pdf.Annot.PdfAnnotation.HIGHLIGHT_INVERT);
annotation.SetBorder(new Pdf.PdfArray(new int[] { 0, 0, 1 }));
document.GetPage(1).AddAnnotation(annotation);
document.Close();

Как можно сохранить документ?


Ответы (2 шт):

Автор решения: Борис_56

Похоже просто перезаписать файл в IText7 нельзя. Можно открыть файл в stamping mode. Записать в документ гиперссылку, а затем заменить старый документ на новый.

→ Ссылка
Автор решения: Борис_56

using Kernel = iText.Kernel; using Pdf = iText.Kernel.Pdf;

Pdf.PdfReader reader = new Pdf.PdfReader(fileName); string curDir = Directory.GetCurrentDirectory(); string workFile = curDir + "\work.pdf"; Pdf.PdfWriter writer = new Pdf.PdfWriter(workFile); Pdf.PdfDocument document = new Pdf.PdfDocument(reader, writer);

// Creating a PdfLinkAnnotation object Kernel.Geom.Rectangle rect = new Kernel.Geom.Rectangle(0, 0, 0, 0); Pdf.Annot.PdfLinkAnnotation annotation = new Pdf.Annot.PdfLinkAnnotation(rect); // Setting action of the annotation Pdf.Action.PdfAction action = Pdf.Action.PdfAction.CreateURI("http://www.mail.ru/"); annotation.SetAction(action); annotation.SetHighlightMode(Pdf.Annot.PdfAnnotation.HIGHLIGHT_INVERT); annotation.SetBorder(new Pdf.PdfArray(new int[] { 0, 0, 1 })); document.GetPage(1).AddAnnotation(annotation); document.Close();

// Заменяю старый документ на новый string newPath = fileName.Substring(0, fileName.Length - 4) + "_old.pdf"; File.Move(fileName, newPath); File.Move(workFile, fileName);

→ Ссылка