C# iTextSharp PDF使用表格嵌入条形码。无法格式化为一页

C# iTextSharp PDF使用表格嵌入条形码。无法格式化为一页,c#,itextsharp,C#,Itextsharp,我正在创建一页条形码,以适合onlinelabels.com 我已经成功地制作了条形码,并且正如我所期望的那样,在表格中很好地显示了它们 我遇到的问题是,页面上似乎有一些虚幻的页眉和页脚推动页面的最后两行条形码 我的结果: 以下是我的方法: public void CreatePDF(List<BarcodeLib.Barcode.DataMatrix> listOfBarcodes) { if (listOfBarcodes.Count

我正在创建一页条形码,以适合onlinelabels.com

我已经成功地制作了条形码,并且正如我所期望的那样,在表格中很好地显示了它们

我遇到的问题是,页面上似乎有一些虚幻的页眉和页脚推动页面的最后两行条形码

我的结果:

以下是我的方法:

 public void CreatePDF(List<BarcodeLib.Barcode.DataMatrix> listOfBarcodes)
        {
            if (listOfBarcodes.Count >= 1)
            {
                Document document = new Document();
                PdfPTable table = new PdfPTable(13);
                document.SetPageSize(PageSize.A4);
                document.SetMargins(0.25f, 0.25f, 0.2505f, 0.2505f);

                try
                {
                    PdfWriter.GetInstance(document, new FileStream(@"test.pdf", FileMode.CreateNew));
                    document.Open();
                    foreach (BarcodeLib.Barcode.DataMatrix image in listOfBarcodes)
                    {
                        iTextSharp.text.Image dmatrix = iTextSharp.text.Image.GetInstance(image.drawBarcodeAsBytes(), true);
                        dmatrix.SetDpi(300, 300);
                        dmatrix.ScaleAbsolute(37, 37);
                        table.AddCell(dmatrix);
                    }
                    document.Add(table);
                    document.Close();
                }
                catch (DocumentException de)
                {
                    Console.Error.WriteLine(de.Message);
                }
                catch (IOException ioe)
                {
                    Console.Error.WriteLine(ioe.Message);
                }
            }
        }
public void CreatePDF(代码列表)
{
if(listOfBarcodes.Count>=1)
{
文档=新文档();
PdfPTable=新的PdfPTable(13);
文件。设置页面大小(页面大小为A4);
文件设置页边距(0.25f、0.25f、0.2505f、0.2505f);
尝试
{
GetInstance(文档,新文件流(@“test.pdf”,FileMode.CreateNew));
document.Open();
foreach(条形码列表中的BarcodeLib.Barcode.DataMatrix图像)
{
iTextSharp.text.Image-dmatrix=iTextSharp.text.Image.GetInstance(Image.drawercodeasbytes(),true);
dmatrix.SetDpi(300300);
可标度溶质(37,37);
表2.AddCell(dmatrix);
}
文件。添加(表);
document.Close();
}
catch(DocumentException de)
{
Console.Error.WriteLine(de.Message);
}
捕获(ioe异常ioe)
{
Console.Error.WriteLine(ioe.Message);
}
}
}

在打开文档之前,您应该执行以下操作:

Document document = new Document();
document.SetMargins(0f, 0f, 0f, 0f);
更新

比:

以下是它在我的程序中的工作原理:


(左)没有设置边距,(右)有设置边距

I这是您的全部代码吗?看看你的屏幕截图,你的桌子的默认单元格填充看起来不一样,但那可能是因为我没有咖啡。不管怎么说,该代码(带有我自己的示例图像)对我来说就像预期的那样工作,表是顶部对齐的。感谢您的快速响应。我把桌子排在最上面,但没有成功。提供的代码是所有iTextSharp发生的地方。。。我的图像(条形码)是在没有填充的情况下生成的,假设它们完全适合标签(从左到右)。看起来在第一页上至少有足够的空间垂直放置一行。我就是搞不清楚是什么元素在填充它。似乎你想在我初始化文档对象之前更改它的属性?除了使用边距参数初始化文档对象之外,我不确定这是如何实现的
Document Document=new Document(PageSize.LETTER,0f,0f,0f,0f)
对不起,我的意思是在设置页边距后打开文档:Document.SetMargins(0f,0f,0f,0f);document.Open();
document.Open();