ItextSharp - добавляет текстовый водяной знак на отдельных строках - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь добавить watermak в PDF-файл с itextsharp 5.1.2.0.

Я хочу, чтобы водяной знак находился в центре страницы под углом 45 ° с рамкой вокруг этих линий.

Вот мой код:

 for (int i = 1; i <= reader.NumberOfPages; i++)
{
    iTextSharp.text.Rectangle pageSize = reader.GetPageSizeWithRotation(i);

    PdfContentByte pdfPageContents;
    pdfPageContents = pdfStamper.GetOverContent(i);

    pdfPageContents.BeginText();
    PdfGState gstate = new PdfGState();
    gstate.FillOpacity = 0.4f;
    gstate.StrokeOpacity = 0.4f;
    pdfPageContents.SaveState();
    pdfPageContents.SetGState(gstate);

    BaseFont baseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, Encoding.ASCII.EncodingName, false);

    pdfPageContents.SetRGBColorFill(255, 0, 0);

    double radians = Math.Atan2(pageSize.Height, pageSize.Width);
    float textAngle = radians * (180 / Math.PI);

    pdfPageContents.ShowTextAligned(PdfContentByte.ALIGN_CENTER, "Phrase 1 This is Phrase 2 and must be centered below phrase 1" , pageSize.Width / 2, pageSize.Height / 2, textAngle);
    //pdfPageContents.ShowTextAligned(PdfContentByte.ALIGN_CENTER, "Phrase 1", pageSize.Width / 2, pageSize.Height / 2, textAngle);
    //pdfPageContents.ShowTextAligned(PdfContentByte.ALIGN_CENTER, "This is Phrase 2 and must be centered below phrase 1", pageSize.Width / 2 + 20 , pageSize.Height / 2 - 20, textAngle);
}

Добавляет водяной знак в одну строку.

У меня есть две строки с закомментированным кодом. Что мне не нравится, так это жестко закодированные значения позиции для второй строки. Я уверен, что должен быть лучший способ добиться этого.

Что касается границы, мне не удалось добавить ее вокруг линий.

Если кто-то может помочь мне с этим делом. Спасибо

1 Ответ

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

в основном то, что я делаю для своего проекта, как в ... здесь font_size и style являются переменными ... также llx, lly, urx, ury являются переменными для позиции и размера corrdinates ... в переменной выравнивания вы можно установить выравнивание легко .... для прозрачности ваш код будет работать нормально (вы можете добавить параметры состояния)

             Dim Font = New Font(arial, FONT_SIZE, STYLE, iTextSharp.text.Color.BLACK )


            dim text = GetRowValue(row, "CONTROL_MAP")
            Dim ct As ColumnText = New ColumnText(pdf_cb)
            ct.SetSimpleColumn(LLX, LLY, URX, URY, FONT_SIZE, ALIGNMENT)
            ct.SetText(New Paragraph(0, text, Font))
            ct.Go()
...