2011-08-28 101 views
1

我想按照我的记录创建动态PDF文档页面。请帮帮我。每页打印3条记录至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; 
     } 
    } 
} 
+1

是否有任何问题与您的代码?这是如何工作的,为什么你的当前输出与你想得到的结果不同?以上代码的 –

+0

用于打印我拥有的所有记录,但我想每页打印3条记录。 – vivek

回答

1

我认为你所提供的代码显示的是同样的顶级条目?当您逐页移动时,您需要做的是保持每个条目的起始位置。我已经调用了这个变量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; 

} 
+0

谢谢肖恩它的工作!!!!!!!!! – vivek

0

我相信,此代码:

for (int i = 0,next = 100; i < collection.Length; i++) 

你在你收集的所有记录循环。

您应该重新设计您的代码,并且只打印3条记录,然后您可以切换到下一页并打印下3条记录等等。

您可以使用break命令完成此操作,该命令将退出循环,但您应该有一个变量来存储参考或索引或最新打印的记录,以便您可以继续下一页的下一页。

我会重新考虑整个代码,因为可以改进循环的嵌套,例如我个人会有一个主循环在顶层,它循环所有记录而不是在所有页面上,所以您可以切换到主循环主体中的下一页,但不要将循环留在所有记录上,直到所有记录都打印出来。