【问题标题】:Add Image And Text To Existing .pdf Using iText in VB.net在 VB.net 中使用 iText 将图像和文本添加到现有 .pdf
【发布时间】:2016-08-13 16:10:24
【问题描述】:

我在单击按钮时获得了以下代码,效果很好。它将图像添加到每个现有的.pdf,然后将几个新的.pdf 组合在一起并创建一个.pdf。同样,它的这一部分效果很好。

我现在遇到的问题是我想保留现有代码,但在添加图像的代码中的同一点向每个页面添加一些文本。我已经阅读了一堆关于如何将文本添加到现有 .pdf 的示例,但由于我在该领域缺乏经验,我无法弄清楚如何使任何示例与我现有的代码一起使用。使用 VB.net。

我想添加一行简单的文本“Example Of text”并将其放置在页面上 (300, 300)。

任何帮助将不胜感激。

    Dim tempFilename = IO.Path.GetTempFileName()
    Dim tempFile As New IO.FileStream(tempFilename, IO.FileMode.Create)

    ' Set up iTextSharp document to hold merged PDF
    Dim mergedDocument As New iTextSharp.text.Document(iTextSharp.text.PageSize.LETTER)
    Dim copier As New iTextSharp.text.pdf.PdfCopy(mergedDocument, tempFile)
    mergedDocument.Open()

    Dim pic1 As String = "C:\xxx\xxxx\xxx.png"

            Using inputPdfStream As IO.Stream = New IO.FileStream(Server.MapPath(".") + "/xxx.pdf", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
                Using inputImageStream As IO.Stream = New IO.FileStream(pic1, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
                    Using outputPdfStream As IO.Stream = New IO.FileStream(Server.MapPath(".") + "/xxx2.pdf", IO.FileMode.Create, IO.FileAccess.ReadWrite, IO.FileShare.None)
                        Dim reader1 = New iTextSharp.text.pdf.PdfReader(inputPdfStream)
                        Dim stamper = New iTextSharp.text.pdf.PdfStamper(reader1, outputPdfStream)
                        Dim pdfContentByte = stamper.GetOverContent(1)

                        Dim image__1 As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(inputImageStream)
                        image__1.SetAbsolutePosition(527, 710)
                        image__1.ScaleAbsolute(60, 60)
                        pdfContentByte.AddImage(image__1)
                        stamper.Close()
                        reader1.Close()
                        outputPdfStream.Close()
                        inputImageStream.Close()
                        inputPdfStream.Close()
                        outputPdfStream.Dispose()
                    End Using
                End Using
            End Using

            Dim reader As New iTextSharp.text.pdf.PdfReader(New iTextSharp.text.pdf.RandomAccessFileOrArray(Server.MapPath(".") + "/yyy/xxx3".pdf", True), Nothing)

            For pageNum = 1 To reader.NumberOfPages
                copier.AddPage(copier.GetImportedPage(reader, pageNum))
            Next

            PTime = PTime + 1
        Loop

        mergedDocument.Close()
        tempFile.Dispose()

【问题讨论】:

    标签: vb.net itext


    【解决方案1】:

    经过大量试验和错误后,我通过添加以下代码使其工作。

        Dim bf As iTextSharp.text.pdf.BaseFont = iTextSharp.text.pdf.BaseFont.CreateFont(iTextSharp.text.pdf.BaseFont.HELVETICA, iTextSharp.text.pdf.BaseFont.CP1252, iTextSharp.text.pdf.BaseFont.NOT_EMBEDDED)
                            pdfContentByte.SetColorFill(iTextSharp.text.BaseColor.DARK_GRAY)
                            pdfContentByte.SetFontAndSize(bf, 8)
                            pdfContentByte.BeginText()
                            Dim strX As String = "Here"
                            pdfContentByte.ShowTextAligned(1, strX, 500, 500, 0)
                            pdfContentByte.EndText()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 2014-08-18
      • 2018-10-01
      • 2015-05-06
      相关资源
      最近更新 更多