Как добавить водяные знаки изображения в PDF с помощью Aspose? - PullRequest
0 голосов
/ 01 июня 2018

Следующий код добавляет водяной знак указанного изображения в центр страницы PDF.Я хочу, чтобы изображение повторялось в виде водяного знака на всей странице PDF, а не только в центре.Водяной знак должен повторять способ, которым свойство background-repeat работает в css.

static void Main(string[] args)
{
    Document pdfDocument = new Document(@"C:\Users\code.wines\Downloads\old.pdf");
    pdfDocument.Pages.Add();

    ImageStamp imageStamp = new ImageStamp(@"C:\Users\code.wines\Desktop\image.jpg");
    imageStamp.Background = true;

    imageStamp.Height = 350;
    imageStamp.Width = 350;
    imageStamp.Opacity = 0.5;

    imageStamp.HorizontalAlignment = HorizontalAlignment.Center;
    imageStamp.VerticalAlignment = VerticalAlignment.Center;

    for (int j = 1; j <= pdfDocument.Pages.Count; j++)
    {
        pdfDocument.Pages[j].AddStamp(imageStamp);
    }

    pdfDocument.Save(@"C:\Users\code.wines\Desktop\new.pdf");
}

1 Ответ

0 голосов
/ 02 июня 2018

Вы можете добавить штамп изображения на странице PDF, используя вложенный цикл.Ниже фрагмент кода перебирает страницу и добавляет изображения штампов в соответствии с вашими требованиями.Предполагается, что поля страницы равны нулю. Если ваш документ содержит поля, вы можете инициализировать переменные X и Y значениями соответствующих полей вместо нуля, а значение полей также повлияет на условный оператор цикла For,Ниже приведен фрагмент кода, объясняющий, как можно повторить водяной знак на всей странице документа PDF.

//load source document
Document pdfDocument = new Document();
//add a page
pdfDocument.Pages.Add();
//load source image
ImageStamp imageStamp = new ImageStamp(dataDir + @"aspose-logo.jpg");
imageStamp.Background = true;
//set different values
imageStamp.Height = 100;
imageStamp.Width = 100;
imageStamp.Opacity = 0.5;

foreach (Page page in pdfDocument.Pages)
{
    //assuming margins as zero
    page.PageInfo.Margin.Top = 0;
    page.PageInfo.Margin.Bottom = 0;
    page.PageInfo.Margin.Left = 0;
    page.PageInfo.Margin.Right = 0;
    for (double y = 0; y < page.PageInfo.Height; y = y + imageStamp.Height)
    {
        for (double x = 0; x < page.PageInfo.Width; x = x + imageStamp.Width)
        {
            imageStamp.XIndent = x;
            imageStamp.YIndent = y;
            page.AddStamp(imageStamp);
        }
    }
}
//save generated PDF document
pdfDocument.Save( dataDir + @"New_18.5.pdf");

Надеюсь, это будет полезно.Пожалуйста, не стесняйтесь обращаться к нам, если вам нужна дополнительная помощь.

PS: Я работаю с Aspose в качестве разработчика Evangelist.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...