0

asp.net c# で iTextSharp バージョン 5.3.5 を使用して、DataTable から PDF を生成しています。私のDataTableには不明な行が含まれています.1ページ以上かかる場合はPDFの生成中にspが含まれています。各ページのヘッダーとフッターを修正する必要があります

コード:

public DataTable dataTable;
protected void Page_Load(object sender, EventArgs e)
 {
        dataTable = getData();
        Document document = new Document(PageSize.A4, 10, 10, 90, 10);
        string path = Server.MapPath("PDFs");
        PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(path + "/Doc103.pdf", FileMode.Create));
        document.Open();
        CreatePages(document);
        document.Close();
 }

private void CreatePages(Document document)
    {
        document.NewPage();
        document.Add(FormatPageHeaderPhrase(dataTable.TableName));
        PdfPTable pdfTable = new PdfPTable(dataTable.Columns.Count);
        pdfTable.DefaultCell.Padding = 3;
        pdfTable.WidthPercentage = 100; // percentage
        pdfTable.DefaultCell.BorderWidth = 2;
        pdfTable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;

        foreach (DataColumn column in dataTable.Columns)
        {
            pdfTable.AddCell(column.ColumnName);
        }
        pdfTable.HeaderRows = 1;  
        pdfTable.DefaultCell.BorderWidth = 1;

        foreach (DataRow row in dataTable.Rows)
        {
            foreach (object cell in row.ItemArray)
            {
               pdfTable.AddCell(cell.ToString());
            }
        }

        document.Add(pdfTable);
    }

    private static Phrase FormatPageHeaderPhrase(string value)
        {
            return new Phrase(value, FontFactory.GetFont(FontFactory.TIMES, 10, Font.BOLD, new BaseColor(255, 0, 0)));
        }

PDF のスクリーンショット:

ここに画像の説明を入力

4

2 に答える 2

2

以下のリンクを試してください。

于 2013-01-31T12:31:08.500 に答える
1

これを解決するにはさまざまな方法があります。

それらの 1 つは、ページ イベントを使用することです。OnEndPage() メソッドを実装するページ イベントを作成します。の場合writer.PageNumber > 1、たとえば次のようにヘッダーを追加します。

ColumnText.ShowTextAligned(writer.DirectContent,
    Element.ALIGN_RIGHT, "Continued from previous page", 36, 820, 0);

ページ イベントの詳細については、第 5 章の例を参照してください。

これを解決するもう 1 つの方法は、テーブル ヘッダーを導入するtable.HeaderRows = 1;ことです。最初の行が繰り返されるようにします (その行には、「前のページからの続き」というすべての列にまたがるセルが含まれていることを確認してください)。このヘッダーが最初のページに表示されないようにするには、次を使用します。table.SkipFirstHeader = true;

于 2013-01-31T13:51:06.823 に答える