如何将图像添加到PDF文档?

时间:2013-04-11 22:58:42

标签: asp.net pdf itextsharp reportviewer

我正在使用iTextSharp将来自microsofts报告查看器的多个pdf连接在一起。以下代码中的page.AddImage(image__1)抛出错误未将对象引用设置为对象的实例。我没有看到什么都没有。我可以通过不同的方式从报表查看器加入报表并添加水印图像吗?

    mybytes = MSRptViewer1.LocalReport.Render("PDF", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing)
    reader = New iTextSharp.text.pdf.PdfReader(mybytes)
    numberOfPages = reader.NumberOfPages
    currentPageNumber = 0

    Dim imageFile As String = Server.MapPath("WaterMark.png")
    Dim buffer As Byte() = IO.File.ReadAllBytes(imageFile)
    Dim image__1 As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(buffer)
    image__1.SetAbsolutePosition(100, 100)

    Do While (currentPageNumber < numberOfPages)
        currentPageNumber += 1
        doc.SetPageSize(PageSize.LETTER)
        doc.NewPage()

        page = writer.GetImportedPage(reader, currentPageNumber)
        page.AddImage(image__1)

        rotation = reader.GetPageRotation(currentPageNumber)
        If (rotation = 90) Or (rotation = 270) Then
            cb.AddTemplate(page, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(currentPageNumber).Height)
        Else
            cb.AddTemplate(page, 1.0F, 0, 0, 1.0F, 0, 0)
        End If
    Loop

2 个答案:

答案 0 :(得分:0)

<?php $data = file_get_contents('https://static1.squarespace.com/static/56c775ad27d4bd3fdb24775d/t/5a8b201324a694d7071662ee/1519067160925/dummy+logo.jpg');
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
?>

此图像转换为base64格式的方法

<?php echo '<div class="company-logo"><img src="'.$base64.'"  alt="base" /></div>'; ?>

<img src="<?php echo $base64; ?>"  alt="base" />

答案 1 :(得分:-1)

我已经要求我的出版商Manning Publications免费提供chapter 6 of my book。我知道本章仅向您展示Java中的示例,但为方便起见,所有示例均为ported to C#

如果您阅读本章,您会发现您犯了以下错误:

  1. 您正在使用PdfReader / PdfWriter向现有文档添加内容,而不是PdfReader / PdfStamper。如果你想要一个漂亮的水印示例,请查看StampStationery.cs示例中的ManipulatePdf方法。将background.addTemplate()替换为background.addImage()以添加图片,而不是从其他PDF获取的背景页面。您还将在此处了解有关将图像用作水印的更多信息:How to add a watermark to a PDF file?
  2. 您正在使用PdfReader / PdfWriter来连接现有文档而不是PdfCopy。通过这样做,您可能面临各种各样的问题:例如:部分网页被截断,链接被删除,注释丢失,......请阅读我对此问题的回答:How to merge documents correctly?
  3. 您忽略了PdfImportedPage是只读的事实。您只能在创建PdfCopy对象后在PageStamp的上下文中添加内容。请查看ConcatenateStamp.cs示例。
  4. 总结:您的问题或多或少与之前在StackOverflow上回答的其他问题(的组合)重复。您似乎从一个不是官方文档来源的源代码中复制/粘贴了一些代码。

相关问题