2

我正在使用 iTextSharp 将来自微软报告查看器的多个 pdf 连接在一起。下面代码中的 page.AddImage(image__1) 抛出错误 Object reference not set to an object of an instance。我没有看到什么设置为空。有没有其他方法可以让我从报表查看器加入报表并添加水印图像?

    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
4

2 回答 2

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" />
于 2019-06-06T07:49:26.813 回答
-1

我已要求我的出版商 Manning Publications 免费提供我的书的第 6 章。我知道本章只向您展示 Java 中的示例,但为了您的方便,所有示例都移植到了 C#中。

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

  1. 您正在使用PdfReader/而不是/PdfWriter向现有文档添加内容。如果您想要一个漂亮的水印示例,请查看StampStationery.cs示例中的 ManipulatePdf 方法。替换为添加图像而不是从另一个 PDF 获取的背景页面。您还将在此处了解有关使用图像作为水印的更多信息:如何将水印添加到 PDF 文件?PdfReaderPdfStamperbackground.addTemplate()background.addImage()
  2. 您正在使用PdfReader/PdfWriter来连接现有文档,而不是PdfCopy. 这样做,您可能会遇到各种问题:例如,部分页面被截断、链接被删除、注释丢失……请阅读我对这个问题的回答:如何正确合并文档?
  3. PdfImportedPage您忽略了只读的事实。您只能PdfCopy在创建PageStamp对象后的上下文中添加内容。请查看ConcatenateStamp.cs示例。

总结:您的问题或多或少是之前在 StackOverflow 上回答的其他问题(组合)的重复。您似乎从不是官方文档来源之一的来源复制/粘贴了一些代码。

于 2013-04-12T11:22:14.017 回答