Как создавать и применять редактирование?

Есть ли способ реализовать редактирование 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);
                }

        }

Ответы на вопрос(1)

Ваш ответ на вопрос