Подтвердить что ты не робот

Как я могу вставить изображение с iTextSharp в существующий PDF файл?

У меня есть существующий PDF, и я могу использовать FdFWriter для ввода в текстовые поля. Это работает хорошо. Теперь у меня есть изображение. Я прочитал документацию и просмотрел множество примеров, но все они создают новые документы и вставляют изображение. Я хочу взять существующий PDF и вставить изображение в поле изображения или как изображение значка кнопки. Я попытался, но он развращает документ.

Мне нужно иметь возможность взять существующий документ и поместить на него изображение. Я не хочу открывать, читать, заменять и удалять оригинал. Это первоначальное изменение и имя "оригинал" означает только исходный файл в этом контексте. Существует много PDF файлов, для которых требуется изображение.

Спасибо за любую помощь.

Изменить - я очень благодарен за приведенный ниже код. Он отлично работает, но проблема для меня в том, что существующий PDF имеет цифровые подписи на нем. Когда документ копируется так (в result.pdf), эти подписи, пока все еще присутствуют, имеют другой байт-счет или другой элемент, который поврежден. Это означает, что подписи, пока они появляются на result.pdf, имеют рядом с ними значок, в котором указывается "недопустимая подпись".

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

Я пытаюсь поместить изображение в существующий документ, а не его копию, что в этом случае имеет значение.

Кроме того, подписи, я имею в виду рукописные, а не номера контактов.

Еще раз спасибо.

EDIT - Может ли PdfSignatureAppearance использоваться для этого?

EDIT - я, похоже, могу это сделать:

var stamper = new PdfStamper (reader, outputPdfStream, '1', true);

4b9b3361

Ответ 1

Если вы хотите изменить содержимое существующего файла PDF и добавить дополнительный контент, такой как водяные знаки, шаблоны, дополнительные заголовки, PdfStamper - это тот объект, который вам нужен. Я успешно использовал следующий код для вставки изображения в существующий файл PDF в заданную абсолютную позицию:

using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;

class Program
{
    static void Main(string[] args)
    {
        using (Stream inputPdfStream = new FileStream("input.pdf", FileMode.Open, FileAccess.Read, FileShare.Read))
        using (Stream inputImageStream = new FileStream("some_image.jpg", FileMode.Open, FileAccess.Read, FileShare.Read))
        using (Stream outputPdfStream = new FileStream("result.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
        {
            var reader = new PdfReader(inputPdfStream);
            var stamper = new PdfStamper(reader, outputPdfStream);
            var pdfContentByte = stamper.GetOverContent(1);

            Image image = Image.GetInstance(inputImageStream);
            image.SetAbsolutePosition(100, 100);
            pdfContentByte.AddImage(image);
            stamper.Close();
        }
    }
}

Когда вы вставляете изображение, вы можете изменить его размер. Вы можете посмотреть матрицу преобразования в документации iTextSharp.

Ответ 3

Я мог бы решить свою проблему, просто добавив следующие строки к моему коду подписи, чтобы добавить изображение

 var image = iTextSharp.text.Image.GetInstance(@"C:\Users\sushil\Documents\sansign.jpg");
appearance.Acro6Layers = true;
appearance.SignatureGraphic = image;
appearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.GRAPHIC_AND_DESCRIPTION;

Поскольку я подписывал документ с видимой цифровой подписью, теперь у меня могут быть как изображения, так и свойства цифровой подписи