Здесь нужна помощь. Я пытаюсь, чтобы текст в строке выглядел в той же горизонтальной линии, что и соответствующие пунктирные линии Вот результат
И это часть моего кода, связанная с изображением:
Font coverHeaderFont = new Font(Font.FontFamily.HELVETICA, 18, Font.BOLD, BaseColor.BLACK);
Font tableContentFont = new Font(Font.FontFamily.HELVETICA, 16, Font.BOLDITALIC, BaseColor.BLACK);
Font textIndexFont = new Font(Font.FontFamily.HELVETICA, 11, Font.BOLD, BaseColor.BLACK);
Font invisibleFont = new Font(Font.FontFamily.HELVETICA, 11, Font.BOLD, BaseColor.WHITE);
Font underText = new Font(Font.FontFamily.HELVETICA, 10, Font.BOLD | Font.ITALIC, BaseColor.BLACK);
//table creation
PdfPTable tblCon = new PdfPTable(3); //3 columns
tblCon.WidthPercentage = 90f; //wide %
tblCon.HorizontalAlignment = 1; //centered
//tblCon.LockedWidth = true;
//relative col widths in proportions - 1/3 and 2/3
float[] widths = new float[] { 4f, 6f, 2f };//{ 6f, 4f, 2f };
tblCon.SetWidths(widths);
//leave a gap before and after the table
tblCon.SpacingBefore = 20f;
tblCon.SpacingAfter = 30f;
//Header Cell
string appHeader = "Applications";
Chunk cAppHeader = new Chunk(appHeader, underText);
// CELLS
PdfPCell cellName = new PdfPCell();
cellName.PaddingTop = 10f;
cellName.VerticalAlignment = PdfPCell.ALIGN_TOP;
cellName.BorderWidth = 1;
cellName.MinimumHeight = 30f;
//cellName.HorizontalAlignment = 0; //0=Left, 1=Center, 2=Right
PdfPCell cellSeparator = new PdfPCell();
cellSeparator.PaddingTop = 10f;
cellSeparator.VerticalAlignment = PdfPCell.ALIGN_TOP;
cellSeparator.BorderWidth = 1;
cellSeparator.MinimumHeight = 20f;
PdfPCell cellPage = new PdfPCell();
cellPage.PaddingTop = 10f;
cellPage.VerticalAlignment = PdfPCell.ALIGN_TOP;
cellPage.BorderWidth = 1;
cellPage.MinimumHeight = 30f;
for (int i = 0; i < listOfDetailsPDF.Count; i++)
{
if (i == 0) //first column, just header
{
cellName.AddElement(new Paragraph(cAppHeader));
cellSeparator.AddElement(new Paragraph(".", invisibleFont));
cellPage.AddElement(new Paragraph("1", invisibleFont));
}
var obj = listOfDetailsPDF[i];
String title = (string)obj.GetType().GetProperty("applicantName").GetValue(obj, null);
Chunk cTitle = new Chunk(title, textIndexFont);
int pNPage = (int)obj.GetType().GetProperty("pdfPages").GetValue(obj, null);
String numberPage = pNPage.ToString();
Chunk cNumPage = new Chunk(numberPage, textIndexFont);
cellName.AddElement(new Paragraph(cTitle));
cellSeparator.AddElement(new Paragraph(dottedLine));
cellPage.AddElement(new Paragraph(cNumPage));
}
tblCon.Rows.Add(new PdfPRow(new PdfPCell[] { cellName, cellSeparator, cellPage }));
Я просто хочу: имя с пунктирной линией с номером страницы должно выглядеть в одной строке в каждой строке. Спасибо
Вы говорите Я пытаюсь, чтобы текст в строке выглядел с одинаковым горизонтальным выравниванием, но вы также говорите, что вы не говоря уже о выравнивании по левому, центру или правому краю.. Я знаю только один другой тип горизонтального выравнивания, и это выравнивание по ширине. О каком типе горизонтального выравнивания вы говорите? И не могли бы вы исправить грамматические ошибки, добавив в свой вопрос дополнительную информацию? Возможно, я неправильно понимаю Я пытаюсь, чтобы текст в строке выглядел с одинаковым горизонтальным выравниванием. (это предложение действительно не имеет смысла.)
Также: (1.) почему вы все еще используете iText 5 вместо iText 7? iText 5 больше не поддерживается. (2.) Почему вы используете таблицу для создания этого типа оглавления. Во всех официальных примерах используется DottedLineSeparator без таблицы.
Извините за мой английский, возможно, мне придется объяснить получше. Страницы с номерами не находятся на одной горизонтальной линии с соответствующими пунктирными линиями ... Вот что я пытался объяснить
Что касается ваших вопросов: (1) я использую ItextSharp 5, потому что эта версия показана в моем пакете управления NuGet (Visual Studio 2013) и (2) с оглавлением есть метод, который имеет сборки, которых нет в моей версии, поэтому вместо этого я использовал таблицу Pdf.
Вы больше доверяете своей неправильной конфигурации Visual Studio, чем оригинальному автору iText. Давайте проверим сайт Nuget: nuget.org/packages/itext7 Ой, это не версия 5, не так ли? iText 5 больше не поддерживается. Последние выпуски - это выпуски Обслуживание, предназначенные для платных пользователей. Используйте iText 7 вместо 5.
После обновления до iText 7 вы сможете использовать разделитель пунктирной линии, как описано в руководстве: developers.itextpdf.com/content/itext-7-building-blocks/…





Я уже тестировал с тем же MinimumHeight в каждой ячейке и все равно получал одно и то же изображение