AsposePDF для.Net Получить существующие водяные знаки

Привет, я использую ApsosePDF для.Net версии 17.3.0.0. Я уже успешно добавил водяные знаки в файлы PDF с помощью Aspose, и все работает нормально, но я не могу получить существующий объект водяного знака из этих файлов 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 всегда возвращает нулевой счет. Я также поднял вопрос на их форуме поддержки. Раздражает, что такой документированный и общий код не работает.

1 ответ

Пожалуйста, убедитесь, что вы добавляете водяной знак в PDF правильно. Вы также можете добавить ImageStamp в файлы PDF, установив их непрозрачность, которая также выглядит как водяной знак. Принимая во внимание, что, говоря о водяных знаках, проверьте следующий фрагмент кода, чтобы добавить его и получить позже.

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.

Другие вопросы по тегам