Настройки формата шрифта в таблице с помощью iTextSharp - PullRequest
2 голосов
/ 15 января 2020

Я хочу изменить только размер моего шрифта в pdfTable, чтобы не было разрывов строк. Одна проблема заключается в том, что в System.Drawing и в iTextSharp.Text есть шрифт. Мне не хватает информации о том, как должен выглядеть синтаксис метода iTextSharp.Text.Font. После этого мне будет интересно, как применить шрифт ко всей таблице.

private void Cmd_Protocoll_Click(object sender, EventArgs e)
{
    Document pProtocoll = new Document(iTextSharp.text.PageSize.A4.Rotate(), 10, 10, 10, 10);
    PdfWriter.GetInstance(pProtocoll, new FileStream("TestPDF.pdf", FileMode.Create));
    pProtocoll.Open();
    pProtocoll.SetPageSize(PageSize.A4.Rotate());
    pProtocoll.AddTitle("PDF-Erstellung");
    string author = Txt_PreName.Text + Txt_LastName.Text;
    pProtocoll.AddAuthor(author);
    pProtocoll.AddSubject("Was ist das Subject");

    PdfPTable pdfPTable = new PdfPTable(7);
    pdfPTable.TotalWidth = 750f;
    pdfPTable.LockedWidth = true;

    float[] widths = new float[] { 3f, 1f, 1f, 5f, 1f, 2f, 1f };
    pdfPTable.SetWidths(widths);

    PdfPCell cell = new PdfPCell(new Phrase("Prüfprotokol zum Hardwaredatenpunkttest"));

    cell.Colspan = 3;
    cell.HorizontalAlignment = 1;

    BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);
    iTextSharp.text.Font font = new iTextSharp.text.Font(bfTimes, 6, 2,{ 0, 0, 0 });

    try
    {
        foreach (DataGridViewRow row in Dgv_Data_List.Rows)
        {
            foreach (DataGridViewCell celle in row.Cells)
            {
                if (celle.Value.ToString() != null)
                {
                    pdfPTable.AddCell(celle.Value.ToString());
                }
                else
                {
                    pdfPTable.AddCell(string.Empty);
                }
            }
        }
    }
    catch(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }

    pProtocoll.Add(pdfPTable);
    pProtocoll.Close();
}

1 Ответ

1 голос
/ 15 января 2020

Создание экземпляра iTextSharp Font:

BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);
iTextSharp.text.Font f = new iTextSharp.text.Font(bfTimes, 6,
    iTextSharp.text.Font.ITALIC, BaseColor.BLACK);

Применение шрифта к содержимому каждой ячейки:

String[][] content = {
    new String[] {"1", "2", "3", "4", "5", "6", "7" },
    new String[] {"A", "B", "C", "D", "E", "F", "G" },
};

foreach (String[] row in content)
{
    foreach (String celle in row)
    {
        pdfPTable.AddCell(new Phrase(celle, f));
    }
}

Кроме того, в вашем примере кода я вижу вас ' создается Cell с содержимым "Prüfprotokol zum Hardwaredatenpunkttest", но вы не добавляете его в таблицу.

...