Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 转换为pdf时数据表之间的间距_Asp.net_Pdf Generation_Itextsharp - Fatal编程技术网

Asp.net 转换为pdf时数据表之间的间距

Asp.net 转换为pdf时数据表之间的间距,asp.net,pdf-generation,itextsharp,Asp.net,Pdf Generation,Itextsharp,在使用PDFWriter生成PDF文档时,如何在数据表之间包含空格 这是相关的代码片段: public void ExportToPdf(DataTable dt) { Document document = new Document(); PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("E://sample2.pdf", FileMode.Create)); document.Open

在使用PDFWriter生成PDF文档时,如何在数据表之间包含空格

这是相关的代码片段:

public void ExportToPdf(DataTable dt)
{
    Document document = new Document();
    PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("E://sample2.pdf", FileMode.Create));
    document.Open();
    iTextSharp.text.Font font5 = iTextSharp.text.FontFactory.GetFont(FontFactory.HELVETICA, 5);
    int col = dt.Columns.Count;
    int row1 = dt.Rows.Count;
    int newcol;

    if (col > Convert.ToInt16(txt_columns.Text))
    {
        newcol = Convert.ToInt16(txt_columns.Text);
    }
    else
    {
        newcol = col;
    }

    int k=0, prev=0, dummy=0;
    dummy = newcol;

    for (int num_table = 1, temp = 0; num_table <= ((col / dummy) + 1); num_table++, temp++)
    {
        if (newcol > 0)
        {
            PdfPTable table = new PdfPTable(newcol);
            PdfPRow row = null;
            float[] widths = new float[newcol];
            for (int i = 0; i < newcol; i++)
            {
                widths[i] = 4f;
            }

            table.SetWidths(widths);
            table.WidthPercentage = 100;
            int iCol = 0;
            string colname = "";
            PdfPCell cell = new PdfPCell(new Phrase("Products"));
            cell.Colspan = newcol;
            int j = 1;
            foreach (DataColumn c in dt.Columns)
            {
                if (j > temp * dummy && j <= num_table * dummy)
                {
                    table.AddCell(new Phrase(c.ColumnName, font5));
                }
                j++;
            }

            foreach (DataRow r in dt.Rows)
            {
                if (dt.Rows.Count > 0)
                {
                    for (k=prev; k < ((num_table * dummy > col) ? col : (num_table * dummy)); k++)
                    {
                        table.AddCell(new Phrase(r[k].ToString(), font5));
                    }
                }
            }
            prev = k;

            if (newcol > (col - (num_table * newcol)))
            {
                newcol = (col - (num_table * newcol));
            }
            document.Add(table);
        }
        // need code for gap here
    }
    document.Close();
}
public void exporttopf(数据表dt)
{
文档=新文档();
PdfWriter writer=PdfWriter.GetInstance(文档,新文件流(“E://sample2.pdf”,FileMode.Create));
document.Open();
iTextSharp.text.Font font5=iTextSharp.text.FontFactory.GetFont(FontFactory.HELVETICA,5);
int col=dt.Columns.Count;
int row1=dt.Rows.Count;
int newcol;
if(col>Convert.ToInt16(txt_columns.Text))
{
newcol=Convert.ToInt16(txt_columns.Text);
}
其他的
{
newcol=col;
}
int k=0,prev=0,dummy=0;
dummy=newcol;
对于(int num_table=1,temp=0;num_table 0)
{
PdfPTable table=新PdfPTable(newcol);
PdfPRow row=null;
浮动[]宽度=新浮动[newcol];
for(int i=0;itemp*dummy&&j 0)
{
对于(k=prev;k<((num_table*dummy>col)?col:(num_table*dummy));k++)
{
table.AddCell(新短语(r[k].ToString(),font5));
}
}
}
prev=k;
if(newcol>(col-(num_table*newcol)))
{
newcol=(col-(num_table*newcol));
}
文件。添加(表);
}
//这里需要gap的代码吗
}
document.Close();
}
最后需要空间。海报可能会使用开源iText库生成PDF文档


谢谢大家!

添加“空格”有不同的方法。在表的上下文中,可以使用如下内容:

table.SpacingBefore = 5;
table.SpacingAfter = 5;
第一行在表前添加5 ts空间。第二行在表后添加5 ts空格

您还可以添加一个换行符。有不同的方法可以做到这一点:

document.Add(Chunk.NEWLINE); // the height of the newline will depend on the leading
document.Add(new Paragraph("\n")); // you can define a leading for a `Paragraph`; by default it will be 16pt
...

可能还有其他解决方案,但请尝试上述解决方案,并让我们知道哪一种最适合您。

谢谢。我需要另一个帮助,了解如何更改PDF中列和行的背景颜色和字体颜色。此处说明:另外:StackOverflow策略告诉您发布新问题是因为您有新问题(似乎合乎逻辑,不是吗?)。