您好我正在使用ApsosePDF for .Net 17.3.0.0版。我已经使用Aspose成功地将水印添加到pdf文件中,一切正常,但我无法从这些pdf文件中获取现有的水印对象。以下是我的示例代码:
public bool CheckForWatermark(Stream inputStream)
{
var pdfDocument = new Aspose.Pdf.Document(inputStream);
foreach (Page page in pdfDocument.Pages)
{
var hasWatermark = false;
foreach (Artifact artifact in page.Artifacts)
{
hasWatermark = artifact.Subtype == Artifact.ArtifactSubtype.Watermark;
}
if (!hasWatermark) return false;
}
return true;
}
此处 page.Artifacts 始终返回零点数。我在其支持论坛中也提出了question。令人沮丧的是,这样一个记录在案的常用代码无效。
答案 0 :(得分:1)
请确保您正确地在PDF中添加水印。您还可以通过设置不透明度(也看起来像水印)在PDF文件中添加ImageStamp。在谈论水印时,请检查以下代码段以添加它并稍后检索。
Document pdfDocument = new Document();
System.Drawing.Image img = new Bitmap(dataDir + "your-image.jpg");
Watermark wm = new Watermark(img, new Rectangle(50, 100, 100, 200));
pdfDocument.Pages.Add().Watermark = wm;
pdfDocument.Save(dataDir + "output.pdf");
pdfDocument = new Document(dataDir + "output.pdf");
foreach (Artifact artifact in pdfDocument.Pages[1].Artifacts)
{
Console.WriteLine(artifact.Subtype + " " + artifact.Text + " " + artifact.Rectangle);
}
我已检查过上面的代码段。它工作正常。
PS:我在Aspose担任支持开发人员。