2011-03-16 36 views
1

嗨有 我已经成功地使用这个伟大的图书馆PDF Sharp.now我想玩一些动态的东西,所以人们建议切换到Migradoc我喜欢它的段落功能。现在问题是当我添加长段,然后新的页面不添加,而不是有不完整的文本显示(意义上文本溢出不完整),我已经在页脚底部添加了一个图像look.how我可以做,我输入动态文字(可变长度),它只是增加了所需的页数。基于文本的自动新页面

到目前为止我的代码是

XFont font = new XFont("Times New Roman", 12, XFontStyle.Bold); 
      XFont fontReg = new XFont("Times New Roman", 12, XFontStyle.Regular); 

      // HACK² 
      gfx.MUH = PdfFontEncoding.Unicode; 
      gfx.MFEH = PdfFontEmbedding.Default; 

      string appPath = System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath); 
      XImage image = XImage.FromFile(appPath + "/header.png"); 
      gfx.DrawImage(image, 0, 0); 
      //Civil Stamp 
      gfx.DrawImage(XImage.FromFile(appPath + "/cStamp.png"), 370, 380); 

      gfx.DrawImage(XImage.FromFile(appPath + "/Sp.png"), 230, 380); 

      CoverPageHeader(); 

      Document doc = new Document(); 
      MigraDoc.DocumentObjectModel.Section sec = doc.AddSection(); 
      // Add a single paragraph with some text and format information. 
      MigraDoc.DocumentObjectModel.Paragraph para = sec.AddParagraph(); 
      para.Format.Alignment = ParagraphAlignment.Left; 
      para.Format.Font.Name = "Times New Roman"; 
      para.Format.Font.Size = 12; 
      para.Format.Font.Color = MigraDoc.DocumentObjectModel.Colors.Black; 

      para.AddText("We are pleased to present the attached Document Please review the Agreement and, if acceptable, " + 
       "sign one copy and return it to us. We will sign the copy of the agreement and return one for " + 
       "your records."); 

      para.AddLineBreak(); 
      para.AddLineBreak(); 
      para.AddText(longlongtextString); 
      para.AddLineBreak(); 
      para.AddLineBreak();    
      para.AddText("Sincerely,"); 

MigraDoc.Rendering.DocumentRenderer docRenderer = new DocumentRenderer(doc); 
      docRenderer.PrepareDocument(); 

      // Render the paragraph. You can render tables or shapes the same way. 
      docRenderer.RenderObject(gfx, XUnit.FromCentimeter(0.7), XUnit.FromCentimeter(9), "18cm", para); 

      gfx.DrawString("Kelly Turbin PhD., P.E.-SECB", font, XBrushes.Black, 20, 500); 
      gfx.DrawString("Principal", font, XBrushes.Black, 20, 520); 
      gfx.DrawString("Project No " + textBoxProjNumber.Text, fontReg, XBrushes.Black, 20,785); 

      gfx.DrawImage(XImage.FromFile(appPath + "/AccB.png"), 20, 700); 
      gfx.DrawImage(XImage.FromFile(appPath + "/ScreenMagic.png"), 100, 690); 
      gfx.DrawImage(XImage.FromFile(appPath + "/Footer.png"), 220, 750); 

     } 

回答

0

不要使用渲染对象,而是使用RenderDocument,并根据需要的页面将被自动创建。

示例代码浏览: http://www.pdfsharp.net/wiki/HelloMigraDoc-sample.ashx

+0

没有用于docRenderer.RenderDocument没办法有两种方法只渲染对象和RenderPage – 2011-03-16 12:28:06

+0

如果我改变代码的最后几行,然后什么都不是出现在PDF PdfDocumentRenderer渲染器=新PdfDocumentRenderer(真,PdfSharp.Pdf.PdfFontEmbedding 。总是); renderer.Document = doc; renderer.RenderDocument(); – 2011-03-16 12:33:55

-1

有没有办法来自动创建一个基于文本的大小新的网页,当您使用Mix of PDFSharp and MigraDoc,因为它是在的问题。唯一的解决办法是仅使用MigraDoc及其RenderDocument方法。