Я написал программу C#
для удаления аннотаций без каких-либо действий из файлов PDF. Я использую iTextSharp
. Однако в одном из моих файлов удаляется одна непустая аннотация (это действие JavaScript), в то время как другие непустые не удаляются. Это так? Это из-за моего кода или неисправен PDF file?Удаление пустых аннотаций из PDF
using System;
using System.IO;
using iTextSharp.text.pdf;
namespace removeEmpty
{
class Program
{
public static void Main()
{
//Bytes will hold our final PDFs
byte[] bytes;
using (var ms = new MemoryStream()) {
using (var reader = new PdfReader("sandri6.pdf")) {
using (var stamper = new PdfStamper(reader, ms)) {
for (int i = 1; i <= reader.NumberOfPages; i++) {
// get a page a PDF page
PdfDictionary page = reader.GetPageN(i);
// get all the annotations of page i
PdfArray annotationsArray = page.GetAsArray(PdfName.ANNOTS);
// if page does not have annotations
if (annotationsArray == null) {
continue;
}
// for each annotation
for (int j = 0; j < annotationsArray.Size; j++) {
// for current annotation
PdfDictionary currentAnnotation = annotationsArray.GetAsDict(j);
PdfDictionary annotationAction = currentAnnotation.GetAsDict(PdfName.AA);
if (annotationAction == null) {
annotationsArray.Remove(j);
Console.Write("Removed annotation {0} with no action from page {1}\n", j, i);
}
}
}
}
}
//grab the bytes before closing things out
bytes = ms.ToArray();
}
//write thebytes to disk
File.WriteAllBytes("output.pdf", bytes);
Console.ReadKey();
}
}
}
Благодарим за ответ. Означает ли это, что ** AA ** запись в JavaScript хранит во второй аннотации. Я озадачен тем, что в другом [файле] (https://www.upload.ee/files/6680430/sandri6.pdf.html), где аннотации пусты (Adobe Acrobat так говорит), они не удаляются кодом. Как это исправить? – menteith
@menteith * «Значит ли это, что запись в АА хранит JavaScript во второй аннотации». - Нет. Как вы видите на скриншоте, во второй аннотации нет ни ** ** **, ни ** ** ** **. – mkl
@menteith Относительно другого файла: Я не могу воспроизвести ваше наблюдение. Именно эти аннотации без действия (которые, как представляется, являются аннотациями ссылок вокруг имен авторов) удаляются. И я проверил оба, осмотрев объекты PDF и щелкнув в Acrobat. – mkl