我想在页面中仅显示 5列,在 pdftable 中仅显示下一页中的剩余列。我们可以设置pdftable中的列数吗?请帮助我实现这一目标。
答案 0 :(得分:0)
public PdfPTable(int numColumns)
构造一个带有
numColumns
列的PdfPTable。<强>参数:强>
- numColumns - 列数
因此,如果您想创建一个包含5列的PdfPTable
,则需要像这样创建PdfPTable
:
PdfPTable table = new PdfPTable(5);
当然,如果您已经拥有包含更多列的PdfPTable
,那么您不能只使用以下行添加该表:
document.add(table);
以上行将添加所有列。
如果只想添加包含更多列的表的5列,则需要控制布局。您唯一的选择是使用writeSelectedRows()
方法。
您可以找到有关如何使用此方法的示例here:
float newY = table.writeSelectedRows(0, 5, 0, -1, 36, 806, canvas);
此方法将呈现表格的前5列(参数0
和5
的内容)和所有行(参数0
和{{ 1}}是关于; -1
表示:直到最后一行)。我们将表格-1
和x = 36
添加到直接内容(y = 806
)。
但是:当您在表格上执行完全控制时,您有责任确保表格适合页面。例如:如果并非所有行都适合页面,则表格将继续在页面的可见区域之外。
为避免这种情况,您应首先计算每行的高度。
另外:如果一张桌子没有覆盖整个页面,你必须跟踪Y位置。在上面的代码段中,表格末尾的Y位置为canvas
。
任何后续newY
操作都会不注意此document.add()
,因此了解切换到绝对定位意味着您很重要不能指望iText自动进行定位。
答案 1 :(得分:0)
==> 创建函数或方法 GenerateFile()
void GenerateFile()
{
string path = Application.dataPath + "/myfirstfile.pdf";
if (File.Exists(path)) File.Delete(path);
//Create Document
var fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
var document = new Document(PageSize.A4,10f,10f,10f,0f);
var writer = PdfWriter.GetInstance(document, fileStream);
document.Open();
document.NewPage();
var baseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252,
BaseFont.NOT_EMBEDDED);
//Create Table
int noOfcoloumn = 5;
PdfPTable mytable = new PdfPTable(noOfcoloumn);
mytable .AddCell("Order ID"); //Row 1 Strat
mytable .AddCell("Order Time");
mytable .AddCell("User");
mytable .AddCell("Order Status");
mytable .AddCell("View");
mytable .AddCell("OID3242"); //Row 2 Strat
mytable .AddCell("04/03/2021 14:50:51");
mytable .AddCell("Atul R Patel");
mytable .AddCell("Delivered");
mytable .AddCell("ShowOrderItem");
//Debug.Log("Total Number of Columns:-- " +table.NumberOfColumns);//[In Unity //Debuging]
document.Add(mytable); // Add in to pdf file
document.Add(Chunk.NEWLINE);
Paragraph p1 = new Paragraph(string.Format("Total Number of Columns : {0}",
mytable.NumberOfColumns ));
p1.Alignment = Element.ALIGN_CENTER;
document.Add(p1);
document.Close();
writer.Close();