我有这段代码:
Document document = new Document();
Section sec = document.AddSection();
Paragraph par;
for (int i = 0; i < 50; i++)
{
par = sec.AddParagraph();
par.AddText("Wiki je označení webů (nebo obecněji hypertextových dokumentů), které umožňují uživatelům přidávat obsah podobně jako v internetových diskusích, ale navíc jim také umožňují měnit stávající obsah; v přeneseném smyslu se jako wiki označuje software, který takovéto weby vytváří.Původně se termín wiki používal zcela opačně. Wiki bylo označení typu softwaru a weby postavené.");
}
par = sec.Headers.Primary.AddParagraph();
par.AddText("hlavicka");
Borders hranice = new Borders();
hranice.Width = 1;
sec.Headers.Primary.Format.Borders = hranice;
sec.AddImage("images.jpg");
par = sec.AddParagraph();
par.AddText("paticka");
PdfDocumentRenderer print = new PdfDocumentRenderer(false, PdfFontEmbedding.Always);
print.Document = document;
print.RenderDocument();
print.PdfDocument.Save("ahoj.pdf");
我只需要在最后一页上制作一个页脚。有可能吗?
答案 0 :(得分:0)
无法在最后一页上创建真正的页脚。
您可以使用最后一段创建TextFrame。 TextFrames是Shapes,可以放在页面的绝对位置,因此您也可以将它们放在页脚所在的位置。
答案 1 :(得分:0)
例如:
在最后一页的页脚上方需要30毫米的位置。 (这可能是签名字段。)
TextFrame.RelativeVertical = RelativeVertical.Page; frame.Top = ShapePosition.Bottom;
paragraph.Format.SpaceBefore = 30mm
现在所有文档的末尾都有30mm的空白段落,并且签名重叠了,或者签名的地方不够。然后,在30mm的空白处强制分页。
答案 2 :(得分:0)
MemoryStream PdfDocumnet()
{
Document pdfdoc = new MigraDoc.DocumentObjectModel.Document();
pdfdoc.Info.Title = "Doc Title";
pdfdoc.Info.Subject = "Doc Subject";
DefineProformaStyles(pdfdoc);
CreatePdf(pdfdoc);
MemoryStream stream = new MemoryStream();
PdfDocumentRenderer renderer = new PdfDocumentRenderer(true, PdfSharp.Pdf.PdfFontEmbedding.Always);
renderer.Document = pdfdoc;
renderer.RenderDocument();
renderer.Save(stream, false);
return stream;
}
private void CreatePdf(Document pdfDoc)
{
pdfDoc.DefaultPageSetup.HeaderDistance = "0.8cm";
pdfDoc.DefaultPageSetup.FooterDistance = "0.6cm";
MigraDoc.DocumentObjectModel.Section section = pdfDoc.AddSection();
section.PageSetup.TopMargin = "6.8cm"; //Unit.FromCentimeter(3.0);
section.PageSetup.BottomMargin = "3.4cm"; //Unit.FromCentimeter(3.0);
// HEADER ///////////////////////////////////////////////////////////////////////////////////
MigraDoc.DocumentObjectModel.Tables.Table tableh1 = section.Headers.Primary.AddTable();
Column colh1 = tableh1.AddColumn("10.8cm");
Column colh2 = tableh1.AddColumn("8cm");
colh2.Format.Alignment = ParagraphAlignment.Right;
// ...
// ... add content to header
// ...
//FOOTER for every page //////////////////////////////////////////////////////////////////////
MigraDoc.DocumentObjectModel.Tables.Table tablef2 = section.Footers.Primary.AddTable();
tablef2.Style = "Table";
//add content to footer
// BODY ///////////////////////////////////////////////////////////////////////////////////
MigraDoc.DocumentObjectModel.Tables.Table tableC = section.AddTable();
TextFrame frm0 = section.AddTextFrame();
Paragraph prg1 = section.AddParagraph();
//....
//.....
//FOOTER FOR ONLY LAST PAGE //////////////////////////////////////////////////////////////////
//Add an empty paragraph. If there is not enough space to fit in current page then ... page break
Paragraph emptyPar = section.AddParagraph();
emptyPar.Format.SpaceBefore = "2.6cm";
//add the special footer
string lastPageFooterImgFile = HttpContext.Current.Server.MapPath("/company/CompanyFooter.png");
TextFrame lastframe = section.AddTextFrame();
lastframe.Height = "2.6cm";
lastframe.RelativeVertical = RelativeVertical.Page;
lastframe.Top = "24cm"; // 24cm + 2.6cm + footer_for_every_page.Height = Page.Height
lastframe.AddImage(lastPageFooterImgFile);
}
private void DefineProformaStyles(Document Doc)
{
Doc.DefaultPageSetup.LeftMargin = "1.3cm";
MigraDoc.DocumentObjectModel.Style style = Doc.Styles["Normal"];
style = Doc.Styles[StyleNames.Header];
style.ParagraphFormat.AddTabStop("1cm", TabAlignment.Right);
style = Doc.Styles[StyleNames.Footer];
style.ParagraphFormat.AddTabStop("1cm", TabAlignment.Center);
style = Doc.Styles.AddStyle("Table", "Normal");
style.Font.Name = "Times New Roman";
style.Font.Size = 9;
style = Doc.Styles.AddStyle("Reference", "Normal");
style.ParagraphFormat.SpaceBefore = "1mm";
style.ParagraphFormat.SpaceAfter = "1mm";
style.ParagraphFormat.TabStops.AddTabStop("1cm", TabAlignment.Right);
}