每页打印3条记录到PDF格式
本文关键字:PDF 格式 记录 3条 打印 | 更新日期: 2023-09-27 18:07:04
我想根据我的记录创建动态PDF文档页面。请帮帮我。
我想每页打印3条记录。
string[] collection = {
"vivek", "kashyap", "viral", "darshit", "arpit", "sameer", "vanraj"
};
PdfDocument pdfDoc = new PdfDocument();
int records = collection.Length;
int perpage = 3;
int pages = (int)Math.Ceiling((double)records / (double)perpage);
for (int p = 0; p < pages; p++)
{
PdfPage pdfPage = new PdfPage();
pdfPage.Size = PageSize.Letter;
pdfDoc.Pages.Add(pdfPage);
XFont NormalFont = new XFont("Helvetica", 10, XFontStyle.Regular);
using (var pdfGfx = XGraphics.FromPdfPage(pdfPage))
{
for (int i = 0,next = 100; i < collection.Length; i++)
{
pdfGfx.DrawString( "Name : " + collection[i].ToString()
, NormalFont, XBrushes.Black, 55, next
, XStringFormats.Default);
next += 20;
}
}
}
我假设您所展示的代码显示的是相同的顶部条目?你需要做的是在你从一页移动到另一页时保持每3个条目的开始。我已经将这个变量命名为idx并更新了下面的代码(注意,除了在我的脑海中,我还没有真正编译它)。
string[] collection = { "vivek", "kashyap", "viral", "darshit", "arpit", "sameer", "vanraj" };
PdfDocument pdfDoc = new PdfDocument();
int records = collection.Length;
int perpage = 3;
int pages = (int)Math.Ceiling((double)records / (double)perpage);
int idx = 0;
for (int p = 0; p < pages; p++)
{
PdfPage pdfPage = new PdfPage();
pdfPage.Size = PageSize.Letter;
pdfDoc.Pages.Add(pdfPage);
XFont NormalFont = new XFont("Helvetica", 10, XFontStyle.Regular);
using (var pdfGfx = XGraphics.FromPdfPage(pdfPage))
{
for (int i = 0,next = 100; i < perpage; i++)
{
if ((idx + i) >= records.length) break;
pdfGfx.DrawString("Name : " + collection[idx + i].ToString(), NormalFont,
XBrushes.Black, 55, next, XStringFormats.Default);
next += 20;
}
}
idx += perpage;
}
我相信有了这段代码:
for (int i = 0,next = 100; i < collection.Length; i++)
您正在循环收集的所有记录。
你应该重新设计你的代码,只打印3条记录,然后你可以切换到下一页,打印下一个3条记录,等等。
你可以用break
命令退出循环,但你应该有一个变量来存储引用或索引或最新打印的记录,以便你可以在下一页继续下一个。
我会重新考虑整个代码,因为循环的嵌套可以得到改进,例如,我个人会在顶层有一个主循环,在所有记录上循环,而不是在所有页面上循环,所以你可以切换到主循环主体的下一页,但永远不要离开所有记录上的循环,直到所有记录都打印出来。