Применение изменений с помощью iTextSharp по-прежнему приводит к выбору / анализу текста

В настоящее время я пытаюсь удалить некоторую информацию из PDF-файла с помощью библиотеки iTextSharp. Проблема, с которой я сталкиваюсь, заключается в том, что контент в "отредактированной" области все еще можно выбрать и прочитать, что является проблемой.

Я использовал два способа, во-первых, когда я добавлял редактирование вручную, используя функцию аннотации iTextSharp, а затем применял ее.

`PdfStamper stamper = new PdfStamper(reader, new FileStream(fileName.Replace(oldFileName, replacementFileName), FileMode.Create, FileAccess.Write));
iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(500, 50, 200, 300); 
PdfAnnotation annotation = new PdfAnnotation(stamper.Writer, rect);
annotation.Title = "WORK PLEASE";
annotation.Put(PdfName.SUBTYPE, new PdfName("Redact"));
annotation.Put(PdfName.IC, new PdfArray(new[] { 0f, 0f, 0f }));
annotation.Put(PdfName.OPEN, PdfBoolean.PDFFALSE);
annotation.Put(PdfName.OC, new PdfArray(new[] { 1f, 0f, 0f }));
annotation.Put(PdfName.CONTENTS, new PdfString(string.Format("Icon: {0}", text)));
annotation.Put(PdfName.QUADPOINTS, new PdfArray (new [] {200,50,500,50,200,300,500,300}));
annotation.Put(PdfName.NAME, new PdfName(text));
stamper.AddAnnotation(annotation, 1);
//Applying the annotations here
DirectoryInfo outDir = new DirectoryInfo(destinationFolder);
if (!outDir.Exists) { 
    outDir.Create(); 
} 
PdfReader Reader = new PdfReader(destinationFolder + "\\WORK.pdf");
string output = destinationFolder + "\\hello.pdf";
Stream fos = new FileStream(output, FileMode.Create);
PdfStamper StamperWork = new PdfStamper(Reader, fos);
PdfCleanUpProcessor cleaner = new PdfCleanUpProcessor(StamperWork);
cleaner.CleanUp();
StamperWork.Close();
fos.Close();
Reader.Close();`

Другой способ, которым я пользовался, это использовать список мест для очистки:

PdfStamper stamper = new PdfStamper(reader, new FileStream(file.Replace(oldchar, repChar), FileMode.Create, FileAccess.Write));
    List<PdfCleanUpLocation> cleanUpLocations = new List<PdfCleanUpLocation>();
    cleanUpLocations.Add(new PdfCleanUpLocation(1, new iTextSharp.text.Rectangle(0f, 0f, 600f, 115f), iTextSharp.text.BaseColor.WHITE));
    PdfCleanUpProcessor cleaner = new PdfCleanUpProcessor(cleanUpLocations, stamper);
    cleaner.CleanUp();
    stamper.Close();
    reader.Close();

Но это все равно приводит к выделению текста в PDF. Похоже, что над областью, которую я хочу, есть белые прямоугольники. Странно то, что если я просто делаю аннотации в PDF с помощью первого метода, открываю его и вручную применяю изменения в Adobe Acrobat, это работает.

Кроме того, когда я пытаюсь очистить pdf-файл, в котором уже отмечены отредактированные области, в "отредактированных" областях все еще остается текст, который можно выбирать / разбирать. Это может быть проблема, связанная с библиотекой.

У кого-нибудь есть понимание этого вопроса?

0 ответов

Другие вопросы по тегам