Добавление текста в существующий PDF, который закрыт с помощью itextsharp - PullRequest
4 голосов
/ 22 декабря 2010

Привет, я создаю PDF, используя itextsharp.Теперь мое требование состоит в том, чтобы добавить больше текста в существующий PDF.Возможно ли, если да, то как я могу это сделать?

Спасибо, Дипа

1 Ответ

9 голосов
/ 23 декабря 2010

Да, с некоторыми ограничениями.

Сложно, но не невозможно определить, что уже есть на существующей странице.

Если все, что вы хотите сделать, это добавить "страницу X из Y" в левый нижний угол всех ваших страниц, это easy .

PdfReader reader = new PdfReader( inPath );
PdfStamper stamper = new PdfStamper( reader, new FileOutputStream( outPath ) );
BaseFont font = BaseFont.createFont(); // Helvetica, WinAnsiEncoding
for (int i = 0; i < reader.getNumberOfPages(); ++i) {
  PdfContentByte overContent = stamper.getOverContent( i + 1 );
  overContent.saveState();
  overContent.beginText();
  overContent.setFontAndSize( font, 10.0f );
  overContent.setTextMatrix( xLoc, yLoc );
  overContent.showText( "Page " + (i + 1) + " of " + reader.getNumberOfPages() );
  overContent.endText();
  overContent.restoreState();
}
stamper.close();

Большой водяной знак не намного сложнее. Добавление вещей в PDF в одном или нескольких заранее определенных местах вполне выполнимо.

На другом конце спектра "изменить текст в существующих абзацах и перекрасить их". Это почти невозможно. Было бы намного проще восстановить исходный PDF с новыми данными.

На самом деле, если это вообще возможно, просто восстановите их. Ты сделал это один раз, сделай это снова.

...