Как создавать и применять редактирование?
Есть ли способ реализовать редактирование PDF с помощью iText? Работая с Acrobat SDK API, я обнаружил, что редактирование также похоже на аннотации с подтипом «Редактирование». Так что мне было интересно, возможно ли создать их в iTextSharp?
С помощью Acrobat SDK код выглядит так:
AcroPDAnnot annot = page.AddNewAnnot(-1, "Redact", rect) as AcroPDAnnot;
(Я не смог применить их, хотя какannot.Perform(avDoc)
не похоже на работу. Идеи?)
В iTextSharp я могу создавать простые текстовые аннотации, как это
PdfAnnotation annotation = PdfAnnotation.CreateText(stamper.Writer, rect, "Title", "Content", false, null);
Единственным другим вариантом, который я нашел, было создание черных прямоугольников, как объяснено.Вот, но это не удаляет текст (он все еще может быть выделен). Я хочу создавать аннотации редактирования и в конечном итоге применить редактирование.
// Обновить:
Когда я наконец нашел способ создать рабочий пример, я хотел бы поделиться им здесь. Он не применяет изменения в конце, но создает действительные изменения, которые правильно отображаются в Acrobat и могут быть применены вручную.
using (Stream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
PdfReader pdfReader = new PdfReader(stream);
// Create a stamper
using (PdfStamper stamper = new PdfStamper(pdfReader, new FileStream(newFileName, FileMode.OpenOrCreate)))
{
// Add the annotations
int page = 1;
iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(500, 50, 200, 300);
PdfAnnotation annotation = new PdfAnnotation(stamper.Writer, rect);
annotation.Put(PdfName.SUBTYPE, new PdfName("Redact"));
annotation.Title = "My Author"; // Title = author
annotation.Put(new PdfName("Subj"), new PdfName("Redact")); // Redaction "Subject". When created in Acrobat, this is always set to "Redact"
float[] fillColor = { 0, 0, 0 }; // Black
annotation.Put(new PdfName("IC"), new PdfArray(fillColor)); // Interior color
float[] fillColorRed = { 1, 0, 0 }; // Red
annotation.Put(new PdfName("OC"), new PdfArray(fillColorRed)); // Outline color
stamper.AddAnnotation(annotation, page);
}
}