クラスPdfPCellのセルのテーブルがあり、それぞれに小さなヘッダー、メイン文字列、小さなフッターがあります。HeaderandFooterは要素をセルに追加することを許可されていないため、それらを挿入する方法が見つかりません。ある段落が別の段落を上書きするなどです。何か案は?
前もって感謝します
クラスPdfPCellのセルのテーブルがあり、それぞれに小さなヘッダー、メイン文字列、小さなフッターがあります。HeaderandFooterは要素をセルに追加することを許可されていないため、それらを挿入する方法が見つかりません。ある段落が別の段落を上書きするなどです。何か案は?
前もって感謝します
ネストされたテーブルを使用できます。
PdfPCellの代わりに、小さなヘッダーと小さなフッターを備えた1x1テーブルを挿入します。
編集:
iTextSharpのテーブルフッターとヘッダー機能は忘れましょう。テーブルが複数のページにまたがっており、フッターとヘッダーが繰り返されている場合に便利です。この場合、ヘッダーとフッターは3つのセルのみを含む内部テーブルに属するため、すべてのセルにPdfPCellを使用します。
次に、主な機能はGetHFCell
、カスタマイズされたヘッダーセル(高さ、フォント、テキストなど)、カスタマイズされたフッターセル、およびメインテキストを含む中央のセルを含むPdfPTableを返すことです。この関数は、メインテーブルにセルを追加するたびに呼び出されます(でこの関数を使用する方法の例GeneratePDF
)。
private static PdfPTable GetHFCell(string header, string footer, string text)
{
PdfPTable pdft;
PdfPCell hc;
PdfPCell fc;
pdft = new PdfPTable(1);
pdft.WidthPercentage = 100f;
pdft.DefaultCell.Border = 0;
hc = new PdfPCell(new Phrase(header));
hc.Top = 0f;
hc.FixedHeight = 7f;
hc.HorizontalAlignment = 1;
hc.BackgroundColor = iTextSharp.text.Color.ORANGE;
((Chunk)(hc.Phrase[0])).Font = new iTextSharp.text.Font(((Chunk)(hc.Phrase[0])).Font.Family, 5f);
fc = new PdfPCell(new Phrase(footer));
hc.Top = 0f;
fc.FixedHeight = 7f;
hc.HorizontalAlignment = 1;
fc.BackgroundColor = iTextSharp.text.Color.YELLOW;
((Chunk)(fc.Phrase[0])).Font = new iTextSharp.text.Font(((Chunk)(fc.Phrase[0])).Font.Family, 5f);
pdft.AddCell(hc);
pdft.AddCell(text);
pdft.AddCell(fc);
return pdft;
}
public void GeneratePDF()
{
Document document = new Document();
try
{
PdfWriter.GetInstance(document, new FileStream("File1.pdf", FileMode.Create));
document.Open();
PdfPTable table = new PdfPTable(5);
table.DefaultCell.Padding = 0;
table.DefaultCell.BorderWidth = 2f;
for (int j = 1; j < 6; j++)
{
for (int i = 1; i < 6; i++)
{
//calling GetHFCell
table.AddCell(
GetHFCell("header " + ((int)(i + 5 * (j - 1))).ToString(),
"footer " + ((int)(i + 5 * (j - 1))).ToString(),
"z" + j.ToString() + i.ToString()));
}
}
document.Add(table);
}
catch (DocumentException de)
{
//...
}
catch (IOException ioe)
{
//...
}
document.Close();
}