我在 pdf 中添加附加内容时遇到问题

发布于 2024-09-01 07:10:08 字数 2450 浏览 1 评论 0原文

我正在将我的数据集转换为 pdf 文档。我的数据集包含产品账单详细信息。因此,在 pdf 顶部,我需要添加更多内容,例如“我的公司名称和地址、客户名称、账单日期、帐单号”

下面的代码我用来转换为pdf。

public static void Exportdata(DataTable dataTable, HttpResponse Response, int val)
{

    //String filename = String.Concat(name, "-", DateTime.Today.Day.ToString(), "/", DateTime.Today.Month.ToString(), "/", DateTime.Today.Year.ToString(), ".pdf");
    Document pdfDoc = new Document(PageSize.A4, 30, 30, 40, 25);
    System.IO.MemoryStream mStream = new System.IO.MemoryStream();
    PdfWriter writer = PdfWriter.GetInstance(pdfDoc, mStream);
    //int cols = 0;
    //int rows = 0; 
    int cols = dataTable.Columns.Count;
    int rows = dataTable.Rows.Count;
    pdfDoc.Open();
    iTextSharp.text.Table pdfTable = new iTextSharp.text.Table(cols, rows);
    pdfTable.BorderWidth = 1;
    pdfTable.Width = 100;
    pdfTable.Padding = 1;
    pdfTable.Spacing = 1;
    //creating table headers
    for (int i = 0; i < cols; i++)
    {

        Cell cellCols = new Cell();
        Font ColFont = FontFactory.GetFont(FontFactory.HELVETICA, 8, Font.BOLD);
        Chunk chunkCols = new Chunk(dataTable.Columns[i].ColumnName, ColFont);
        cellCols.Add(chunkCols);

        pdfTable.AddCell(cellCols);

    }
    //creating table data (actual result)
    for (int k = 0; k < rows; k++)
    {
        for (int j = 0; j < cols; j++)
        {
            Cell cellRows = new Cell();
            Font RowFont = FontFactory.GetFont(FontFactory.HELVETICA, 6);
            Chunk chunkRows = new Chunk(dataTable.Rows[k][j].ToString(), RowFont);
            cellRows.Add(chunkRows);
            pdfTable.AddCell(cellRows);

        }
    }
    pdfDoc.Add(pdfTable);
    pdfDoc.Close();
    Response.ContentType = "application/octet-stream";
    if (val == 1)
    {
        Response.AddHeader("Content-Disposition", "attachment; filename=Users.pdf");
    }
    else if (val == 2)
    {
        Response.AddHeader("Content-Disposition", "attachment; filename=Customers.pdf");
    }
    else if (val == 3)
    {
        Response.AddHeader("Content-Disposition", "attachment; filename=Materials.pdf");
    }
    else
    {
        Response.AddHeader("Content-Disposition", "attachment; filename=Reports.pdf");
    }
    Response.Clear();
    Response.BinaryWrite(mStream.ToArray());
    //Response.Write(mStream.ToString());
    HttpContext.Current.ApplicationInstance.CompleteRequest();
    Response.End();
}

I am converting my data set into a pdf document.My data set contains the product bill details.So,at the top of the pdf i need to added some more content like "my company name & address customer name, date of bill,bill no"

Below code i am using to convert into pdf.

public static void Exportdata(DataTable dataTable, HttpResponse Response, int val)
{

    //String filename = String.Concat(name, "-", DateTime.Today.Day.ToString(), "/", DateTime.Today.Month.ToString(), "/", DateTime.Today.Year.ToString(), ".pdf");
    Document pdfDoc = new Document(PageSize.A4, 30, 30, 40, 25);
    System.IO.MemoryStream mStream = new System.IO.MemoryStream();
    PdfWriter writer = PdfWriter.GetInstance(pdfDoc, mStream);
    //int cols = 0;
    //int rows = 0; 
    int cols = dataTable.Columns.Count;
    int rows = dataTable.Rows.Count;
    pdfDoc.Open();
    iTextSharp.text.Table pdfTable = new iTextSharp.text.Table(cols, rows);
    pdfTable.BorderWidth = 1;
    pdfTable.Width = 100;
    pdfTable.Padding = 1;
    pdfTable.Spacing = 1;
    //creating table headers
    for (int i = 0; i < cols; i++)
    {

        Cell cellCols = new Cell();
        Font ColFont = FontFactory.GetFont(FontFactory.HELVETICA, 8, Font.BOLD);
        Chunk chunkCols = new Chunk(dataTable.Columns[i].ColumnName, ColFont);
        cellCols.Add(chunkCols);

        pdfTable.AddCell(cellCols);

    }
    //creating table data (actual result)
    for (int k = 0; k < rows; k++)
    {
        for (int j = 0; j < cols; j++)
        {
            Cell cellRows = new Cell();
            Font RowFont = FontFactory.GetFont(FontFactory.HELVETICA, 6);
            Chunk chunkRows = new Chunk(dataTable.Rows[k][j].ToString(), RowFont);
            cellRows.Add(chunkRows);
            pdfTable.AddCell(cellRows);

        }
    }
    pdfDoc.Add(pdfTable);
    pdfDoc.Close();
    Response.ContentType = "application/octet-stream";
    if (val == 1)
    {
        Response.AddHeader("Content-Disposition", "attachment; filename=Users.pdf");
    }
    else if (val == 2)
    {
        Response.AddHeader("Content-Disposition", "attachment; filename=Customers.pdf");
    }
    else if (val == 3)
    {
        Response.AddHeader("Content-Disposition", "attachment; filename=Materials.pdf");
    }
    else
    {
        Response.AddHeader("Content-Disposition", "attachment; filename=Reports.pdf");
    }
    Response.Clear();
    Response.BinaryWrite(mStream.ToArray());
    //Response.Write(mStream.ToString());
    HttpContext.Current.ApplicationInstance.CompleteRequest();
    Response.End();
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

比忠 2024-09-08 07:10:08

您想使用 iTextSharp 添加标题吗?

在本例中,扩展 PdfPageEventHelper 并使用 OnStartPage 事件。

这是一个 示例

Do you want to add a header using iTextSharp?

In this case extend PdfPageEventHelper and use the OnStartPage event.

Here's an example .

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文