Дублировать изображение с помощью iTextSharp

Я хочу знать, возможно ли дублировать/копировать одно и то же изображение в том же PDF-файле с помощью библиотек iTextSharp.

У меня уже есть изображение для дублирования и создания, это не проблема, но когда я копирую его (с циклом for), изображение не копируется, а только перемещается в новую позицию.

Большое спасибо, Джованни.

Dim documento As New Document(PageSize.A4, MillimetersToPoints(10), MillimetersToPoints(10), MillimetersToPoints(10), MillimetersToPoints(10))
Dim filestream As New FileStream("C:\test.pdf", FileMode.Create, FileAccess.Write, FileShare.None)
Dim Scrittura As PdfWriter = PdfWriter.GetInstance(documento, FileStream)
Dim baseFont As BaseFont = baseFont.CreateFont(baseFont.HELVETICA_BOLD, baseFont.CP1252, baseFont.EMBEDDED)

Dim img As iTextSharp.text.Image
Dim DataEncoder As DataMatrix.net.DmtxImageEncoder
Dim DataEncodeOption As DataMatrix.net.DmtxImageEncoderOptions
Dim DataImg As System.Drawing.Image
Dim Databitmap As Bitmap
Dim BarcodeImage As Bitmap

DataEncoder = New DataMatrix.net.DmtxImageEncoder
DataEncodeOption = New DataMatrix.net.DmtxImageEncoderOptions
DataEncodeOption.SizeIdx = DataMatrix.net.DmtxSymbolSize.DmtxSymbol18x18
DataEncodeOption.Scheme = DataMatrix.net.DmtxScheme.DmtxSchemeAscii
DataEncodeOption.ModuleSize = 1
DataEncodeOption.MarginSize = 1
DataImg = DataEncoder.EncodeImage(My.Forms.AvvioProgramma.MyInfo.Progressivo, DataEncodeOption)
Databitmap = New Bitmap(DataImg)
BarcodeImage = Databitmap
BarcodeImage.Save("C:\prova.jpg")
img = Image.GetInstance("C:\prova.jpg")

documento.Open()
Dim contentByte As PdfContentByte = Scrittura.DirectContent
 contentByte.BeginText()
    contentByte.SetFontAndSize(baseFont, 12)
    contentByte.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "Tubotec", posXTitolo, posYTitolo, 0)
    img.SetAbsolutePosition(posXDM, posYDM)
    contentByte.AddImage(img)
    contentByte.ShowTextAligned(PdfContentByte.ALIGN_LEFT, My.Forms.AvvioProgramma.MyInfo.Progressivo, posXPar, posYPar, 0)
    contentByte.EndText()
documento.Close()

person Bill712    schedule 11.12.2017    source источник
comment
хорошо, добавил код   -  person Bill712    schedule 11.12.2017
comment
Что такое posXDM и posYDM? И почему вы добавляете контент с PdfContentByte? Вы же не ожидаете, что изображение будет между двумя строками текста, не так ли? (Если это так, ваш код неверен.) Что вы имеете в виду, когда пишете изображение не копируется, а только перемещается в новую позицию? Потому что я вижу, что вы добавляете изображение только один раз. И почему вы не используете последнюю версию iText? Ваш вопрос слишком неясен, чтобы ответить.   -  person Bruno Lowagie    schedule 11.12.2017
comment
posXDM и posYDM — это положение строк на страницах. да, я ожидаю изображения между двумя линиями. Я помещаю ссылку на пример изображения: ссылка. весь код находится внутри цикла for, если вы посмотрите на изображение, вы увидите, что DataMatrix находится только в третьей метке, но я хочу, чтобы она была во всех метках, которые я генерирую. спасибо   -  person Bill712    schedule 11.12.2017
comment
В вашем коде вы добавляете только одно изображение, так почему же вы удивляетесь, что добавляется только одно изображение? Ваш вопрос не имеет смысла. Почему вы не добавляете изображение три раза, если хотите увидеть его три раза? А также: почему вы делаете это с трудом с PdfContentByte? И почему вы все еще используете старую версию iText? Я мог бы полениться и просто применить политику компании: больше нет добровольной поддержки для всех версий iText до iText 7; если вам нужна поддержка более старой версии, требуется контракт на поддержку с iText Software.   -  person Bruno Lowagie    schedule 11.12.2017
comment
Я использую старую версию просто потому, что ее можно скачать бесплатно. Однако я говорю, что весь приведенный выше код находится внутри цикла FOR, поэтому (согласно моему опыту работы с iText) я думаю, что для каждого цикла и изменения значения .SetAbsolutePosition изображение копировалось и перемещалось в новую позицию, но это не так. т работать. если вы можете мне помочь, какой метод я могу использовать вместо PdfContentByte? Вы можете мне помочь? благодарю вас. Я не хочу вставлять три/четыре/пять... изображений, потому что изображений 65, а не 3, изображение по ссылке выше является лишь примером   -  person Bill712    schedule 11.12.2017
comment
Вы пишете: скачать можно бесплатно, но и iText 7 тоже (iText 5 и iText 7 имеют одинаковую лицензию с открытым исходным кодом, AGPL). Это не означает, что старую версию можно использовать бесплатно. Используемая вами версия может распространяться только в контексте проекта с открытым исходным кодом. Например: если вы предлагаете приложение SaaS, вы должны распространять весь свой собственный исходный код среди всех пользователей вашего приложения. Вы не создаете никакой благосклонности к единственному человеку, который хочет помочь вам, говоря вещи, которые явно не соответствуют действительности!   -  person Bruno Lowagie    schedule 11.12.2017
comment
Что касается альтернативы использованию PdfContentByte, почему бы вам просто не использовать таблицу? См. [Как отображать штрих-коды в матричной структуре? ](stackoverflow.com/questions/21981602) и Добавление текста в ячейку таблицы в itext. (И перестаньте говорить мне чепуху! Нет никаких причин, по которым вам не следует обновляться!)   -  person Bruno Lowagie    schedule 11.12.2017