В Aspose.Pdf, почему предоставление текстовому объекту границы фактически дает ему две границы? Как мне избавиться от внутренней границы?

#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");
  

Ниже приведен пример вывода, сгенерированного приведенным выше фрагментом кода. Вы можете заметить, что текстовое содержимое правильно выровнено по его границам.

Пример вывода приведенного выше фрагмента кода