iTextSharp нестандартный размер бумаги - PullRequest
2 голосов
/ 22 марта 2010

Я использую библиотеку iTextsharp для создания PDF-файлов. Я могу заявить для A4 альбомной бумаги, как это:

 Dim pdfTable As New PdfPTable(9)
pdfTable.WidthPercentage = 100
Dim pdfDoc As New Document(PageSize.A4.Rotate())

Мне интересно, как я могу установить высоту pdfTable или A4 Height вручную. Потому что внизу осталось намного больше полей, и мне нужно поместить текст на это поле. Прямо сейчас я помещаю строку текста внизу, строка перемещается на новую страницу.

Q1: Как я могу переопределить высоту бумаги формата A4, предоставляемой iTextsharp?

Q2: Как мне создать бумагу нестандартного размера, скажем, Ширина = 29 см, Высота = 22 см?

Спасибо.

Ответы [ 2 ]

8 голосов
/ 23 марта 2010

Пользовательский размер страницы в iTextSharp:

Dim pgSize As New iTextSharp.text.Rectangle(myWidth, myHeight) 
Dim doc As New iTextSharp.text.Document(pgSize, leftMargin, rightMargin, topMargin, bottomMargin)

iTextSharp использует 72 пикселя на дюйм, поэтому, если вы знаете высоту и ширину нужного размера страницы в дюймах, просто умножьте эти числа на 72, чтобы получить myWidth и myHeight.

0 голосов
/ 22 марта 2010

Вы можете использовать пользовательское событие PdfpageEvent для добавления текста, таблицы или чего-либо еще в нижний колонтитул.

Вот некоторый код, который добавляет в нижний колонтитул таблицу из 4 столбцов (извините, это в C #):

public override void OnEndPage(PdfWriter writer, iTextSharp.text.Document document)
{
    base.OnEndPage(writer, document);

    PdfContentByte cb = writer.DirectContent;

    var footerTable = new PdfPTable(4);

    var columnWidth = (document.Right - document.LeftMargin) / 4;

    footerTable.SetTotalWidth(new float[] { columnWidth, columnWidth, columnWidth, columnWidth });

    var cell1 = new PdfPCell();
    cell1.AddElement(new Paragraph("Date:"));
    cell1.AddElement(new Paragraph(DateTime.Now.ToShortDateString()));
    footerTable.AddCell(cell1);

    var cell2 = new PdfPCell();
    cell2.AddElement(new Paragraph("Data:"));
    cell2.AddElement(new Paragraph("123456789"));
    footerTable.AddCell(cell2);

    var cell3 = new PdfPCell();
    cell3.AddElement(new Paragraph("Date:"));
    cell3.AddElement(new Paragraph(DateTime.Now.ToShortDateString()));
    footerTable.AddCell(cell3);

    var cell4 = new PdfPCell();
    cell4.AddElement(new Paragraph("Page:"));
    cell4.AddElement(new Paragraph(document.PageNumber.ToString()));
    footerTable.AddCell(cell4);

    footerTable.WriteSelectedRows(0, -1, document.LeftMargin, cell4.Height + 50, cb);
}

и это код, который будет вызывать вышеуказанный код:

var pdfWriter = PdfWriter.GetInstance(pdf, new FileStream(fileName, FileMode.Create));
pdfWriter.PageEvent = new CustomPdfPageEvent();
...