Аннотация/штамп Java iText PDF не отображается в Chrome и Firefox (браузерах)

Мы пытались добавить аннотацию/штамп к существующему ПОДПИСАННОМУ PDF-файлу без аннулирования подписи, но, к сожалению, браузеры не отображают штамп/аннотацию. При открытии в Adobe Reader аннотацию можно увидеть там. Любая другая идея приветствуется. Все, что нам нужно, это небольшой текст в существующем подписанном PDF-файле, который не сделает подпись недействительной.

Вот наш код:

    PdfReader reader = new PdfReader(pdf1);
    PdfStamper pdfStamper = new PdfStamper(reader, new FileOutputStream(RESULT), '\0', true);
    PdfContentByte pcb = new PdfContentByte(pdfStamper.getWriter());
    PdfAnnotation annot = PdfAnnotation.createFreeText(pdfStamper.getWriter(),  new Rectangle(150, 150, 200, 200), "Annotation 1", pcb);
    annot.setFlags(PdfAnnotation.FLAGS_PRINT);
    pdfStamper.addAnnotation(annot, 1);
    pdfStamper.close(); 

person Nibra    schedule 25.06.2020    source источник
comment
Если бы вы могли добавить штамп в PDF-файл, не аннулируя подпись, в чем именно заключался бы смысл подписи в первую очередь?   -  person David van Driessche    schedule 25.06.2020
comment
В неподписанных документах мы добавляем слой с небольшим текстом в PDF для долгосрочного архивирования. Но мы не можем сделать это с подписанными PDF-файлами, поэтому нам нужно решение. Итак, после поиска в Google я прочитал, что можно добавить штамп / аннотацию в PDF-файл, который не сделает подпись недействительной, мы сделали это, но аннотация не отображается в браузере (chrome mozilla edge) и не может быть напечатана. Но это работает на Adobe Reader.   -  person Nibra    schedule 26.06.2020
comment
1.) Вы используете режим добавочного обновления ('\0', true), поэтому возможны (определенные) дополнения к документам PDF. Это правильный путь 2.) Веб-браузеры обеспечивают лишь ограниченную поддержку определенных функций PDF, таких как поля форм или аннотации. Если вы видите аннотацию в Adobe Reader, но не видите в некоторых веб-браузерах, значит, эти браузеры ее не поддерживают. У вас есть ограниченные возможности изменить это. Одним из вариантов было бы, если бы вы добавили свою марку в качестве изображения...   -  person Lonzak    schedule 26.06.2020


Ответы (1)


  1. Вы используете режим добавочного обновления ('\0', true), поэтому возможны (определенные) дополнения к документам PDF. Это правильный путь
  2. Веб-браузеры обеспечивают лишь ограниченную поддержку определенных функций PDF, таких как поля форм или аннотации. Если вы видите аннотацию в Adobe Reader, но не видите в некоторых веб-браузерах, значит, эти браузеры ее не поддерживают. У вас есть ограниченные возможности изменить это.

Одна из возможных возможностей — добавить штамп не как аннотацию, а как изображение. Но после этого вы должны проверить, считает ли Acrobat Reader подпись неповрежденной. (Как уже упоминалось, разрешены только определенные дополнения)

PdfReader reader = new PdfReader(pdf1);
    PdfStamper pdfStamper = new PdfStamper(reader, new FileOutputStream(RESULT), '\0', true);
    Image img = Image.getInstance("URL or Filename.PathToImage.png");
    //position on the page x,y
    img.setAbsolutePosition(380f, 750f);
    img.scalePercent(20);
    //1=pagenumber and you might also try getOverContent(1)
    PdfContentByte underContent = super.stamper.getUnderContent(1);
    underContent.addImage(img);        

    pdfStamper.close(); 
person Lonzak    schedule 26.06.2020
comment
Изменение содержимого страницы (например, добавление изображения) — верный способ заставить Acrobat считать подпись недействительной. Прочитайте здесь о разрешенных и запрещенных изменениях. - person mkl; 26.06.2020
comment
Спасибо #Лонзак. Это то, что мне было нужно. Мы пойдем с Image - прозрачным изображением. - person Nibra; 26.06.2020
comment
@Nibra Здесь принято принимать и / или голосовать за ответ, если это было правильное решение для вас. Добро пожаловать в Stackoverflow :-) - person Lonzak; 30.06.2020
comment
@Lonzak, я пытался, и не только один раз. Получил: Спасибо за отзыв! Голоса, отданные теми, у кого репутация менее 15, записываются, но не изменяют публично отображаемый результат публикации. - person Nibra; 30.06.2020
comment
@Nibra Ну вот ;-) - person Lonzak; 30.06.2020