Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
C# 如何在iTextsharp中使表格布局水平和垂直跨越页面?_C#_.net_Itextsharp_Pdfptable - Fatal编程技术网

C# 如何在iTextsharp中使表格布局水平和垂直跨越页面?

C# 如何在iTextsharp中使表格布局水平和垂直跨越页面?,c#,.net,itextsharp,pdfptable,C#,.net,Itextsharp,Pdfptable,我正在使用iTextsharp(版本-LGPL fork)生成一个只包含一个表的PDF。我的项目是一个.NET4应用程序 表格可以有很多列和很多行,而PDF将不包含任何其他内容(因此我想在A4页面上使用横向布局) 一、 因此,我将其简化为与iTextSharp交互的代码,您可以猜测列、数据、val和ms变量是什么: 除了创建一个1页面文档,其中所有单元格都重叠且完全不可读之外,这很可爱 我想要实现的是这样的目标: 因此,列从不重叠,它们只是扩展到下一页,列标题随着行向下延伸而重复 我试过摆弄K

我正在使用iTextsharp(版本-LGPL fork)生成一个只包含一个表的PDF。我的项目是一个.NET4应用程序

表格可以有很多列和很多行,而PDF将不包含任何其他内容(因此我想在A4页面上使用横向布局)

一、 因此,我将其简化为与iTextSharp交互的代码,您可以猜测
数据
val
ms
变量是什么:

除了创建一个1页面文档,其中所有单元格都重叠且完全不可读之外,这很可爱

我想要实现的是这样的目标:

因此,列从不重叠,它们只是扩展到下一页,列标题随着行向下延伸而重复


我试过摆弄
KeepTogether
等,但我对如何实现这一结果感到困惑。

使用
document.add(table)无法实现这一点
您将需要
表。改为writeSelectedRows()
。另外:您的客户是否知道您使用的iText版本不再受到iText开发者的支持?我更新了您的问题,删除指向非官方链接的链接以及您关于使用不受支持版本的iText的原因的评论。我在这里添加了更多的背景信息:@Bruno Lowagie非常感谢您的评论,指出了这些问题。我知道现在购买iTextSharp的商业许可证是个更好的主意(因为这将是获得一个可以用于商业应用程序的新版本的唯一方法,我肯定会和我的老板一起提出这个想法——尽管如果我不能理解这个分页问题,这是毫无意义的。老实说,我只是在nuget上寻找它,只找到了GPL和LGPL版本的分叉,所以我认为我唯一的o。)这是那把叉子,但现在我看到有第三种选择了。)@Bruno Lowagie请原谅我说我有点困惑。我的问题是(自从你编辑后现在是)关于特定版本的iTextSharp的一个特定问题。我很小心地链接到该版本,以防程序不同,并且分叉的人进行了调整。这是一个关于如何在特定版本的库中执行特定操作的问题,也就是说,您的编辑已经改变了问题的意图。H您是否尝试过
writeSelectedRows()
?请参阅(或者如果您想要C#对应项)。
// Create a landscape A4 page...
var doc = new Document(new Rectangle(297, 210), 10, 10, 10, 10);
PdfWriter.GetInstance(doc, ms);
doc.Open();
var table = new PdfPTable(columns.Count()) {HeaderRows = 1};

var titleFont = FontFactory.GetFont(BaseFont.COURIER_BOLD, 10);
var bodyFont = FontFactory.GetFont(BaseFont.COURIER, 10);

// Add the column headings...    
foreach (var c in columns)
{
    var cell = new PdfPCell(new Phrase(c.Title, titleFont)) 
    {
        NoWrap = true
    };
    table.AddCell(cell);
}

// Add the data...        
foreach (var o in data)
{                
    foreach (var c in columns)
    {        
        var cell = new PdfPCell(new Phrase(val, bodyFont))
        {
            NoWrap = true
        };
        table.AddCell(cell);
    }
}    
doc.Add(table);
doc.Close();