я использовал следующий код, используя itextsharp библиотеки, чтобы добавить текст в формат PDF. (Получил код из ссылки ITextSharp insert text to an existing pdfITextSharp включает все страницы из входного файла
Dim reader As New PdfReader(oldFile)
Dim size As iTextSharp.text.Rectangle = reader.GetPageSizeWithRotation(1)
Dim document As New iTextSharp.text.Document(size)
' open the writer
Dim fs As New FileStream(newFile, FileMode.Create, FileAccess.Write)
Dim writer As PdfWriter = PdfWriter.GetInstance(document, fs)
document.Open()
' the pdf content
Dim cb As PdfContentByte = writer.DirectContent
' select the font properties
Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.ZAPFDINGBATS, BaseFont.CP1252, BaseFont.NOT_EMBEDDED)
'cb.SetColorFill(GrayColor.DARK_GRAY)
cb.SetFontAndSize(bf, 8)
cb.BeginText()
Dim Text As String = "l"
' put the alignment and coordinates here
cb.ShowTextAligned(2, Text, 84, 729, 0)
cb.EndText()
Dim bf1 As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED)
cb.SetFontAndSize(bf1, 8)
cb.BeginText()
Dim text1 As String = "Navaneeth A"
cb.ShowTextAligned(1, text1, 65, 690, 0)
cb.EndText()
' create the new page and add it to the pdf
Dim page As PdfImportedPage = writer.GetImportedPage(reader, 1)
cb.AddTemplate(page, 0, 0)
' close the streams and voilá the file should be changed :)
document.Close()
fs.Close()
writer.Close()
reader.Close()
Теперь проблема источник PDF имеет около 5 pages.But выходной файл, созданный с помощью этого кода имеет только первую страницу. Так как я могу включать в себя все страницы исходного файла в выходной файл? Источник PDF ссылка http://law.incometaxindia.gov.in/DITTaxmann/IncomeTaxRules/PDF/Ay-2012-2013/SAHAJ2012_14.pdf
Dim reader As New PdfReader(oldFile)
Using ms = New MemoryStream()
Dim stamper As New PdfStamper(reader, ms)
'Using stamper 'As New PdfStamper(reader, ms)
stamper.RotateContents = False
Dim canvas As PdfContentByte = stamper.GetOverContent(1)
ColumnText.ShowTextAligned(canvas, Element.ALIGN_LEFT, New Phrase("Hello people!"), 36, 540, 0)
'End Using
Dim result As Byte() = ms.ToArray()
File.WriteAllBytes(newFile, result)
System.Diagnostics.Process.Start(newFile)
End Using
Я сделал следующие изменения, но его файл not working.result был всего лишь 1kb-файлом.
Отличный ответ. Это загадка, почему многие люди предпочитают копировать неправильный пример кода. Обратите внимание, что примеры можно найти здесь: http://tinyurl.com/iiacsCH06 Измените 06 на любое число от 00 до 16, чтобы получить примеры из других разделов. –
@mkl См. Мой вопрос здесь http://stackoverflow.com/questions/15241337/pdf-setting-the-font-color-to-the-text –
@winman Вы должны начать принимать ответы, чтобы сделать прозрачным то, что считалось полезным , – mkl