【问题标题】:I want to add watermark to Pdf Stream using Itext7我想使用 Itext7 向 Pdf Stream 添加水印
【发布时间】:2019-05-13 11:20:33
【问题描述】:

这是我现在使用的代码

var ms = new MemoryStream();

var htmmml = @"<h1>some html string </h1>";

// pdfHTML specific code
ConverterProperties converterProperties = new ConverterProperties();
MemoryStream pdfStream = new MemoryStream(ms.ToArray());
HtmlConverter.ConvertToPdf(htmmml, ms, converterProperties);

PdfDocument pdfDocument = new PdfDocument(new PdfReader(pdfStream), new PdfWriter(pdfStream));
// Document to add layout elements: paragraphs, images etc
Document document = new Document(pdfDocument);

// Load image from disk
ImageData imageData = ImageDataFactory.Create(@"D:\TestWebApp\TestWebApp\imgs\WATERMARK.jpeg");
// Create layout image object and provide parameters. Page number = 1
Image image = new Image(imageData).ScaleAbsolute(100, 200).SetFixedPosition(1, 25, 25);
// This adds the image to the page
document.Add(image);

事情是在将 html 转换为 ms 之后, ms 正在被处理,我无法再访问它了。我想将html转换为带水印的pdf。

【问题讨论】:

    标签: c# itext7 html-to-pdf


    【解决方案1】:

    MemoryStream 关闭时,您仍然可以使用ToArray 方法检索其内容,请参阅文档中的说明:

    MemoryStream.ToArray 方法

    ...

    此方法以字节数组的形式返回 MemoryStream 内容的副本。如果当前实例是在提供的字节数组上构造的,则返回该实例有权访问的数组部分的副本。有关详细信息,请参阅 MemoryStream 构造函数。

    注意

    此方法在 MemoryStream 关​​闭时有效。

    因此,应该允许您切换行的顺序

    MemoryStream pdfStream = new MemoryStream(ms.ToArray());
    HtmlConverter.ConvertToPdf(htmmml, ms, converterProperties);
    

    HtmlConverter.ConvertToPdf(htmmml, ms, converterProperties);
    MemoryStream pdfStream = new MemoryStream(ms.ToArray());
    

    pdfStream 包含HtmlConverter.ConvertToPdf 以供进一步处理。

    【讨论】:

      【解决方案2】:

      使用 HtmlConverter 的 convertToDocumentconvertToElements 方法可能更方便。

      前者返回一个 Document 实例,然后您可以对其进行处理(例如,添加水印)。

      后者返回构成 html 文件的 html 元素列表。然后您可以创建一个文档并将这些元素添加到该文档中。

      【讨论】:

      • “前一个返回一个 *Document 实例,然后您可以处理它”* - 该文档是用 immediateFlush 设置为 false 构造的吗?否则可能很难在返回的文档中添加水印。 (我不知道,我基本上不做任何 HTML 到 PDF 的东西......)
      • 啊,我找到了,必须将ConverterProperties中的immediateFlush值设置为false
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多