Я пытаюсь добавить 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);
}
Это добавляет водяной знак в одну строку.
Я могу иметь две строки с закомментированным кодом. Что мне не нравится, так это жестко запрограммированные значения позиции для второй строки. Я уверен, что должен быть лучший способ добиться этого.
Что касается границы, мне не удалось добавить ее по линиям.
Если кто-то может мне помочь с этим делом. Спасибо
Это намного проще с iText 7. iText 5.2.1.0 выпущен в августе 2011 года и больше не поддерживается.





в основном то, что я делаю для своего проекта, выглядит следующим образом ... здесь 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()
Спасибо ! Мне удалось сделать это с помощью предоставленного вами кода и модифицировать его в соответствии с моими требованиями.
вы можете добавить переменную lineHeight и назначить высоту вашей строки в этой переменной .. а затем можете добавить эту переменную для следующих строк ...