【发布时间】:2015-01-08 06:55:07
【问题描述】:
我有动态的行和列。 列:它包含公司详细信息, 行:在特定规模上。 数据:它包含绘制的图表
说明:
我的应用程序中的网格(假设应用程序的行 a_row 和 col a_col),其中 a_col 是公司名称(动态,用户可以添加更多 a_col),a_row 标题包含一些指标。
在 a_row 和 a_col 中包含图表(应用表格式网格包含 rowXcol 格式的图表)
现在 a_row 和 a_col 都是动态的,用户可以添加和删除图表和列。
(pdf abb. as p_row 和 col as p_col 的行)
对于 pdfexport:PdfPTable(3) 是 m 已修复的内容,即每个 a_col 标题将在 pdftable 行中(仅 3 )在 3 之后,将为那些 a_col 标题绘制该 a_row 的图表。
应用:
COL1 COL2
ROW1 chart00 chart01
ROW2 chart10 chart11
ROW3 chart20 chart21
行是应用程序中的指标
PDF 绘图:(请查看图片 - pdf 快照)
代码完成: 它是动态的,因为没有图表(行和列),没有行是要绘制的不同页面。 下面的代码工作正常且准确(根据旧需要)。
创建 PDF:
page2 = new Paragraph();
page2.Add(new Chunk(CriteriaAll, CriteriaFONT));
page2.Alignment = Element.ALIGN_CENTER;
newtable();
int j = 0, temp_tablecount = 0, tablecount = 0;
int checkrcnt = (int)(Math.Ceiling(chartnameLIST.Count / 3.0d)) * 3; //chartnameList is total charts rowXcol)
int col_newpg_temp = 1;
int col_newpg = (int)(Math.Ceiling(col_count / 12.0d)); (col_count is no of col.)
for (int row_tb = 0; row_tb < row_count; row_tb++)
{
col_newpg_temp = 1;
newpagedatafeed(pdfDoc, Metric[row_tb]);
newtable();
tablepg1.AddCell(new Phrase(" ")); tablepg1.AddCell(new Phrase(" ")); tablepg1.AddCell(new Phrase(" "));
for (int i = 0; i < checkrcnt; i++)
{
if (i < col_count)
{
if (i == col_newpg_temp * 12)
{
pdfDoc.Add(tablepg1);
newtable();
newpagedatafeed(pdfDoc, Metric[row_tb]);
col_newpg_temp++;
}
tablepg1.AddCell(new Phrase(Companies[i], companiesH));
}
else
tablepg1.AddCell("");
j++;
if (j > 2)
{
j = 0;
for (int k = 0; k < 3; k++)
{
if (temp_tablecount < col_count)
{
tablepg1.AddCell(ClipImpageProcess(chartnameLIST[tablecount], 8, writer));
tablecount++; temp_tablecount++;
}
else
tablepg1.AddCell("");
}
}
}//coll ends
temp_tablecount = 0;
pdfDoc.Add(tablepg1);
}
private static void newtable() //adds a new page
{
tablepg1 = new PdfPTable(3);
tablepg1.DefaultCell.Border = 0;
tablepg1.WidthPercentage = 95;
}
private static void newpagedatafeed(Document pdfDoc, string p) //somethng as a header
{
pdfDoc.NewPage();
DrawLine(pdfDoc, writer.DirectContent);
pdfDoc.Add(page2);
tablepg1.AddCell(new Phrase(" ")); tablepg1.AddCell(new Phrase(" ")); tablepg1.AddCell(new Phrase(" "));
p = "\n" + p;
PdfPTable temptable = new PdfPTable(3);
temptable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
temptable.DefaultCell.Border = 0;
temptable.AddCell(""); temptable.AddCell(new Phrase(p, MetricH)); temptable.AddCell("");
pdfDoc.Add(temptable);
}
要做的事情:(新需求)
需要编码帮助,
1. 如果只有 2 或 3 列,那么图表应该在页面中间
2.既然pdf页面上只有很少的图表,那么下一行不应该转到下一页,应该在同一页上绘制。
【问题讨论】:
-
您的问题存在矛盾,无法回答。你说如果只有2或3列,那么图表应该在页面中间。我假设表格应该水平居中,这是默认的 iText 的行为。然而,你突然开始谈论行,以及应该或不应该分布在不同页面上的表。目前尚不清楚您是在谈论列还是行,也不清楚您是在谈论垂直居中还是水平居中。
-
m 谈论要在中间单元格中绘制的图表,因为 pdf 页面的每一行都表示为 pdfptable(3)。制作表格中心已完成,但我想为上述问题提供动态代码。它应该确保如何绘制 pdf 中的表格行,并且在 x 行(pdf 表格)之后,它应该移动到下一页。
-
还是不清楚。什么是中间单元格?是 3 列表格的第 2 列中的单元格(水平中间),还是中间行(垂直中间)的单元格。不要指望人们阅读你的代码来找出答案。您发布的代码不是SSCCE,而且很难破译。
-
我应该向你发送我的要求的快照以及上述代码的输出吗?
-
不是“发给我”,而是用快照更新您的问题。
标签: c# pdf itextsharp