#javascript #pdf #annotations #itext
#javascript #PDF #аннотации #itext
Вопрос:
Я использовал iTextSharp для успешного добавления аннотации штампа в файл PDF:
PdfReader reader1 = new PdfReader(new FileStream("f:\1.pdf", FileMode.Open));
Stream ff = new FileStream(TestTmpFile, FileMode.Create);
PdfStamper stamper = new PdfStamper(reader1, ff);
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance("f:\1.png");
float w = img.Width;
float h = img.Height;
iTextSharp.text.Rectangle location = new iTextSharp.text.Rectangle(36, 770 - h, 36 w, 770);
PdfAnnotation stamp = PdfAnnotation.CreateStamp(stamper.Writer, location, "stampname", "stampname");
img.SetAbsolutePosition(0, 0);
PdfContentByte cbb = stamper.GetOverContent(1);
PdfAppearance app = cbb.CreateAppearance(w, h);
app.AddImage(img);
stamp.Name = "stampname";
stamp.SetAppearance(PdfName.N, app);
stamp.Flags=PdfAnnotation.FLAGS_PRINT;
stamper.AddAnnotation(stamp, 1);
stamper.Close();
reader1.Close();
Я установил имя аннотации как «stampname«, но я не могу получить эту аннотацию штампа в PDF javascript с помощью this.getAnnot(). Код javasript в PDF:
var anno=this.getAnnot(0,"stampname");
Я вызвал неправильный метод? Или эта проблема связана с iTextSharp?
==== РЕДАКТИРОВАТЬ: я загрузил образец файла PDF, он содержит аннотацию штампа, которая представляет собой изображение png. Запись javascript находится по адресу «9124 0 obj».
Комментарии:
1. Для атрибута NM имени аннотации правильно установлено значение «stampname» — смотрите здесь: i.stack.imgur.com/yKjv8.png — так что же все-таки
getAnnot
искать?2. Как уже было сказано, перекрестные ссылки и трейлер PDF-файла повреждены: в вашем PDF-файле есть объекты с номерами объектов 9122, 9123 и 9124, но перекрестные ссылки относятся только к объектам 0 … 318, а в трейлере указано, что размер равен 319. Это не ошибка, типичная для iText, она больше похожа на то, что кто-то скопировал и вставил аннотацию в ваш PDF-файл с соблюдением требований PDF.
3. Спасибо, mkl, могу я узнать, какой инструмент вы использовали? Это кажется очень полезным.
4. Снимок экрана в моем первом комментарии был сделан из iText RUP. Замечания в моем втором комментарии я сделал с помощью обычного средства просмотра текста (встроенного в Total Commander).