#c# #pdf #itextsharp
#c# #PDF #itext
Вопрос:
Мы используем iTextSharp по причинам, которые я не понимаю, и у нас еще нет книги, и у меня есть досадная проблема, с которой я был бы признателен за помощь.
Я работаю с нижним колонтитулом и не могу выровнять его так, как я хочу.
Функция, которая у меня есть, принимает список строк, но обычно это 4 строки, которые мне нужны в строке каждая. Это не похоже на то, что itextsharp может обрабатывать строки с разрывами строк, так что это причина для списка.
Теперь это неправильно позиционируется для меня, первая строка выглядит нормально, но затем вторая строка немного длиннее и она наполовину выходит за пределы документа, как и третья строка, а четвертая даже не видна, даже если осталось 1 см свободного места.
Спасибо за помощь!
public PdfTemplate AddPageText(IList<string> stringList, PdfWriter writer)
{
var cb = writer.DirectContent;
PdfTemplate footerTemplate = cb.CreateTemplate(450, 120); //55);
footerTemplate.BeginText();
BaseFont bf2 = BaseFont.CreateFont(BaseFont.TIMES_ITALIC, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
footerTemplate.SetFontAndSize(bf2, 9);
footerTemplate.SetColorStroke(BaseColor.DARK_GRAY);
footerTemplate.SetColorFill(BaseColor.GRAY);
footerTemplate.SetLineWidth(3);
footerTemplate.LineTo(50, footerTemplate.YTLM);
int y = 10;
foreach (string text in stringList)
{
float widthoftext = 500.0f - bf2.GetWidthPoint(text, 9);
footerTemplate.ShowTextAligned(PdfContentByte.ALIGN_RIGHT, text, widthoftext, 50 - y, 0);
y = y;
}
footerTemplate.EndText();
return footerTemplate;
}
Ответ №1:
Если вы выполняете размещение строк и используете DirectContent, то вы несете ответственность за содержимое. В этом случае вам нужно будет вычислить прямоугольники строки и соответствующим образом обернуть.
Однако я бы предложил перейти к использованию таблицы с ячейками для текста. Таблицы переносят текст и обрабатывают некоторые проблемы, с которыми вы имеете дело.
Комментарии:
1. Я использую PageEvent для поиска onEndPage для добавления текста для каждой страницы, как мне создать таблицу и разместить ее там, где я хочу?
2. Посмотрите на WriteSelectedRows (это то, что я использую). Вот пример kuujinbo.info/cs/itext_img_hdr.aspx