Html 使用ABCpdf向生成的PDF添加水印
我试图在使用HTML/CSS生成的PDF上添加水印。我最初的方法是创建一个页面大小的透明PNG,并将该图像覆盖在生成文档的每页顶部。由于ABCPDF不认为PNG是一个合适的图像文件,所以我将PNG加载为XFIX并保存透明度。但是,图像仍然在格式化的HTML/CSS层上显示为不透明Html 使用ABCpdf向生成的PDF添加水印,html,css,vb.net,pdf,abcpdf,Html,Css,Vb.net,Pdf,Abcpdf,我试图在使用HTML/CSS生成的PDF上添加水印。我最初的方法是创建一个页面大小的透明PNG,并将该图像覆盖在生成文档的每页顶部。由于ABCPDF不认为PNG是一个合适的图像文件,所以我将PNG加载为XFIX并保存透明度。但是,图像仍然在格式化的HTML/CSS层上显示为不透明 Private Shared _watermark As Byte() Private Shared ReadOnly Property Watermark() As Byte() Ge
Private Shared _watermark As Byte()
Private Shared ReadOnly Property Watermark() As Byte()
Get
If _watermark Is Nothing Then
Using memoryStream As New MemoryStream()
My.Resources.watermark.Save(memoryStream, Imaging.ImageFormat.Png)
_watermark = memoryStream.ToArray()
End Using
End If
Return _watermark
End Get
End Property
Private Function CreatePreviewPdf(html As String) As Byte()
Dim generatedStream = New MemoryStream()
Using pdfDoc = New Doc()
pdfDoc.HtmlOptions.Engine = EngineType.Gecko
pdfDoc.Rect.Inset(25, 25)
'Adds a margin
pdfDoc.Page = pdfDoc.AddPage()
Dim options As New XReadOptions
options.PreserveTransparency = True
Dim imgwater = XImage.FromData(Watermark, options)
Dim id = pdfDoc.AddImageHtml(html)
While True
If Not pdfDoc.Chainable(id) Then
Exit While
End If
pdfDoc.Page = pdfDoc.AddPage()
id = pdfDoc.AddImageObject(imgwater, 1)
End While
For i As Object = 1 To pdfDoc.PageCount
pdfDoc.PageNumber = i
pdfDoc.Flatten()
Next
If pdfDoc.PageCount > 0 Then
pdfDoc.PageNumber = 1
End If
Dim theId As Integer = 0
For i As Integer = 1 To pdfDoc.PageCount
pdfDoc.PageNumber = i
pdfDoc.Layer = pdfDoc.LayerCount + 1
If i = 1 Then
theId = pdfDoc.AddImageToChain(theId)
Else
pdfDoc.AddImageCopy(theId)
End If
Next
pdfDoc.Save(generatedStream)
End Using
generatedStream.Position = 0
Return generatedStream.ToArray()
End Function
我如何在每一页添加一个半透明水印?
因为ABCPDF不认为PNG是一个合适的图像文件,比如说什么?我每天使用PNG和ABCpdf。您使用的是什么版本?我当时使用的是8.1。从6.5.0版开始,我就在abcPDF中使用PNG。我从来没有找到解决这个问题的方法,所以我最终使用HTML/CSS来完成我当时需要做的事情。查看WebSupergoo的网站,我在他们的常见问题中发现了这一点:为什么AddImage不能处理我的GIF图像?您可以向AddImage传递JPEG、TIFF或EMF文件的路径。这会将原始压缩数据插入到PDF文档中。其他图像类型(如GIF)不能直接插入-必须将其绘制到图像对象中,然后才能将图像对象添加到PDF文档中。ABCpdf文档中有一些示例。我用的是一个PNG文件的AddImage。啊!我已经很久没有写那个代码了,我已经忘记了。对于PNG,我将PNG拉入XImage,然后使用AddImageObject。为了在网站上缓存这些数据,我实际上使用字节数组来保存PNG数据,然后再将其传递给XImage。有关接收PNG文件并输出Doc文件的代码段,请参见。在我的工作流程中,我通常将该文档放在下一个文档中。