#vb.net #aspose #aspose.pdf
#vb.net #aspose #aspose.pdf
Вопрос:
Вот мой стиль:
Dim sectionHeaderStyle As TextInfo = New TextInfo()
sectionHeaderStyle.FontName = "Arial"
sectionHeaderStyle.FontSize = 16
sectionHeaderStyle.Alignment = AlignmentType.Left
sectionHeaderStyle.IsTrueTypeFontBold = True
sectionHeaderStyle.IsTrueTypeFontItalic = False
sectionHeaderStyle.Color = New Aspose.Pdf.Color("Black")
' TODO: why are we getting a double border?
sectionHeaderStyle.TextBorder = New BorderInfo(15) ' 15 is binary 1111 so it means all four borders
sectionHeaderStyle.BackgroundColor = New Aspose.Pdf.Color("Silver")
sectionHeaderStyle.IsUnderline = False
И здесь я создаю Text
объект, используя этот стиль:
<Extension>
Public Function CreateBlankSection(ByVal pdf As Pdf, ByVal marginInfo As MarginInfo, ByVal sectionHeaderStyle As TextInfo, ByVal mainStyle As TextInfo, ByVal headerText As String) As Section
' Add a blank section into the PDF document
Dim sec As Section = pdf.Sections.Add()
sec.PageInfo.PageWidth = 8.5 * 72
sec.PageInfo.PageHeight = 11 * 72
sec.PageInfo.Margin = marginInfo
sec.TextInfo = mainStyle
' Add the section title
Dim text As Text = sec.CreateText(sectionHeaderStyle, headerText)
' Return the section created
Return sec
End Function
<Extension>
Public Function CreateText(ByVal sec As Section, ByVal style As TextInfo, ByVal text As String) As Text
Dim txt As Text = New Text(sec, text)
txt.TextInfo = style
sec.Paragraphs.Add(txt)
Return txt
End Function
Но когда я визуализирую раздел (на этом скриншоте я добавил еще несколько таблиц и текст, помимо заголовка), я получаю две границы ?!
Что здесь происходит? Как я могу избавиться от внутренней границы? Все, что мне нужно, это внешняя граница.
Комментарии:
1. Интересно, если
TextBorder
это неправильный способ установить границу дляText
объекта. Но как еще я могу это сделать?2. Похоже, вы используете старый подход Aspose.Pdf.Generator, который был прекращен из Aspose.PDF. Рекомендуется использовать модель DOM (Aspose.Pdf) для добавления текста и содержимого внутри PDF. Вы можете добиться аналогичного результата, добавив таблицы внутри PDF ( docs.aspose.com/pdf/net/add-and-extract-a-table ). Пожалуйста, также убедитесь, что вы используете последнюю версию API с предложенным примером. В случае, если у вас возникнут какие-либо проблемы, мы рекомендуем создать сообщение на официальном форуме поддержки ( forum.aspose.com/c/pdf ). Это Асад Али, и я работаю евангелистом-разработчиком в Aspose.
3. Мы добавили ответ ниже с примером фрагмента кода в соответствии с нашими предложениями в предыдущем комментарии. Пожалуйста, проверьте и попробуйте. Кроме того, вы можете принять ответ ИЛИ сообщить нам, если вам нужна дополнительная информация и у вас другие требования.
Ответ №1:
Как было предложено в комментарии под вашим вопросом, проверьте следующий пример фрагмента кода, который основан на DOM (Aspose.Pdf) и создает таблицу в документе PDF.
var doc = new Document();
var page = doc.Pages.Add();
page.PageInfo.Margin = new MarginInfo(10, 10, 10, 10);
Aspose.Pdf.Table pdfTable = new Table
{
ColumnWidths = "200 100 150"
};
pdfTable.DefaultCellBorder = new BorderInfo(BorderSide.All, 1f);
page.Paragraphs.Add(pdfTable);
var headerRow = pdfTable.Rows.Add();
headerRow.DefaultCellTextState = new TextState() { FontSize = 20f, FontStyle = FontStyles.Bold };
headerRow.Cells.Add("Primary Parent Information");
headerRow.Cells[0].ColSpan = 3;
var secondRow = pdfTable.Rows.Add();
secondRow.Cells.Add("Primary Parent Name");
secondRow.Cells.Add("Date of Birth");
secondRow.Cells.Add("Current Age");
var thirdRow = pdfTable.Rows.Add();
thirdRow.Cells.Add("Clark Kentenburger");
thirdRow.Cells.Add("9/28/1978");
thirdRow.Cells.Add("42");
doc.Save("Table.pdf");
Ниже приведен пример вывода, сгенерированного приведенным выше фрагментом кода. Вы можете заметить, что текстовое содержимое правильно выровнено по его границам.