Вы не указали язык, поэтому я отвечу на VB.Net, но вы можете легко конвертировать его в C #, если это необходимо.
На ваш первый вопрос, чтобы использовать неразрывный пробел, просто используйте соответствующую кодовую точку Unicode U+00A0
:
В VB.Net вы бы объявили это как:
Dim NBSP As Char = ChrW(&HA0)
А в C #:
Char NBSP = '\u00a0';
Тогда вы можете просто объединить его, где это необходимо:
Dim Text2 As String = "This is" & NBSP & "also" & NBSP & "a test"
Также вам может пригодиться неразрывный дефис (U + 2011) .
На ваш второй вопрос, да, вы можете установить ширину каждого столбца. Однако ширина столбцов всегда задается как относительная ширина, поэтому, если вы используете:
T.SetTotalWidth(New Single() {2.0F, 1.0F})
На самом деле вы говорите, что для данной таблицы первый столбец должен быть в два раза больше второго столбца, вы НЕ , говоря, что первый столбец имеет ширину 2px и второй 1px . Это очень важно понять. Приведенный выше код точно такой же, как следующие две строки:
T.SetTotalWidth(New Single() {4.0F, 2.0F})
T.SetTotalWidth(New Single() {100.0F, 50.0F})
Ширина столбцов относительно ширины таблицы, которая по умолчанию (если я правильно помню) составляет 80% ширины доступной для записи страницы. Если вы хотите установить абсолютную ширину таблицы, вам нужно установить два свойства:
''//Set the width
T.TotalWidth = 200.0F
''//Lock it from trying to expand
T.LockedWidth = True
Собрав все вышеперечисленное, ниже приведено полнофункциональное приложение WinForms для iTextSharp 5.1.1.0:
.
Option Explicit On
Option Strict On
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
''//File that we will create
Dim OutputFile As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "TableTest.pdf")
''//Standard PDF init
Using FS As New FileStream(OutputFile, FileMode.Create, FileAccess.Write, FileShare.None)
Using Doc As New Document(PageSize.LETTER)
Using writer = PdfWriter.GetInstance(Doc, FS)
Doc.Open()
''//Create our table with two columns
Dim T As New PdfPTable(2)
''//Set the relative widths of each column
T.SetTotalWidth(New Single() {2.0F, 1.0F})
''//Set the table width
T.TotalWidth = 200.0F
''//Lock the table from trying to expand
T.LockedWidth = True
''//Our non-breaking space character
Dim NBSP As Char = ChrW(&HA0)
''//Normal string
Dim Text1 As String = "This is a test"
''//String with some non-breaking spaces
Dim Text2 As String = "This is" & NBSP & "also" & NBSP & "a test"
''//Add the text to the table
T.AddCell(Text1)
T.AddCell(Text2)
''//Add the table to the document
Doc.Add(T)
Doc.Close()
End Using
End Using
End Using
Me.Close()
End Sub
End Class