本篇文章将介绍通过java程序来添加Word页眉页脚的方法。鉴于在不同文档中,对页眉页脚的操作要求不同,文章将分别从以下几种情况来阐述:

1.添加页眉页脚

  • 添加图片到页眉
  • 添加文本到页眉
  • 添加页码

2.设置奇偶页不同的页眉页脚

3.设置首页页眉页脚不同

4.不连续设置页码(即对不同章节的内容设置不同页码)

5.锁定页眉页脚(不可编辑页眉页脚)

6.删除页眉页脚

  • 删除全部页眉页脚
  • 删除首页页眉页脚

使用工具:Free Spire.Doc for Java

方法一:直接获取文件包里的jar文件,导入到程序(需要先下载文件包)。

方法二:通过Maven导入到程序。

【示例1】添加页眉页脚(文本、图片、页码)

import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.fields.TextRange;
import java.awt.*; public class AddHeaderFooter {
public static void main(String[]args){
//加载需要添加页眉页脚的文档
Document doc= new Document("test.docx");
Section sec = doc.getSections().get(0); //调用方法添加页眉页脚
AddHeaderFooter(sec); //保存文档
doc.saveToFile("AddHeaderFooter.docx");
}
//自定义方法来添加图片、文字页眉及页码
private static void AddHeaderFooter(Section sec){
//加载图片添加到页眉,并设置图片在段落中的对齐方式
HeaderFooter header = sec.getHeadersFooters().getHeader();
Paragraph hpara= header.addParagraph();
DocPicture pic =hpara.appendPicture("1.png");
pic.setHorizontalAlignment(ShapeHorizontalAlignment.Left);
pic.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
pic.setVerticalAlignment(ShapeVerticalAlignment.Center);
//添加文字到页眉,并设置字体、字号、字体加粗、对齐方式
TextRange txt = hpara.appendText("青年时报");
txt.getCharacterFormat().setUnderlineStyle(UnderlineStyle.None);
txt.getCharacterFormat().setTextColor(Color.GRAY);
txt.getCharacterFormat().setFontName("仿宋");
txt.getCharacterFormat().setFontSize(12f);
txt.getCharacterFormat().setBold(true);
hpara.getFormat().setHorizontalAlignment(HorizontalAlignment.Right);
//设置图片的文本环绕方式、页眉底部边线(粗细、间距)
pic.setTextWrappingStyle(TextWrappingStyle.Behind);
hpara.getFormat().getBorders().getBottom().setBorderType(BorderStyle.Single);
hpara.getFormat().getBorders().getBottom().setLineWidth(0.5f);
hpara.getFormat().getBorders().setSpace(2f); //添加页码到页脚,并设置页脚对齐方式,顶部边线粗细、间距
HeaderFooter footer = sec.getHeadersFooters().getFooter();
Paragraph fpara= footer.addParagraph();
fpara.appendField("页码",FieldType.Field_Page);
fpara.appendText("/");
fpara.appendField("总页数",FieldType.Field_Num_Pages);
fpara.getFormat().setHorizontalAlignment(HorizontalAlignment.Right);
fpara.getFormat().getBorders().getTop().setBorderType(BorderStyle.Single);
fpara.getFormat().getBorders().getTop().setLineWidth(1f);
fpara.getFormat().getBorders().getTop().setSpace(2f);
}
}

页眉页脚添加效果:

【示例2】设置奇偶页页眉页脚不同

import com.spire.doc.*;
import com.spire.doc.documents.HorizontalAlignment;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.TextRange; import java.awt.*; public class HeaderFooterForOddAndEvenPages {
public static void main(String[] args){
//加载测试文档
Document doc = new Document("test.docx");
Section sec = doc.getSections().get(0); //设置奇偶页页眉页脚不同
sec.getPageSetup().setDifferentOddAndEvenPagesHeaderFooter(true); //设置奇数页页眉页脚
HeaderFooter oddheader = sec.getHeadersFooters().getOddHeader();
Paragraph para1 = oddheader.addParagraph();
TextRange textRange1 = para1.appendText("奇数页页眉");
para1.getFormat().setHorizontalAlignment(HorizontalAlignment.Left);
textRange1.getCharacterFormat().setTextColor(Color.ORANGE);
textRange1.getCharacterFormat().setBold(true);
HeaderFooter oddfooter = sec.getHeadersFooters().getFooter();
Paragraph para2 = oddfooter.addParagraph();
TextRange textRange2 = para2.appendText("奇数页页脚");
para2.getFormat().setHorizontalAlignment(HorizontalAlignment.Left);
textRange2.getCharacterFormat().setTextColor(Color.ORANGE);
textRange2.getCharacterFormat().setBold(true); //设置偶数页页眉页脚
HeaderFooter evenheader = sec.getHeadersFooters().getEvenHeader();
Paragraph para3 = evenheader.addParagraph();
TextRange textRange3 = para3.appendText("偶数页页眉");
para3.getFormat().setHorizontalAlignment(HorizontalAlignment.Right);
textRange3.getCharacterFormat().setTextColor(Color.BLUE);
textRange3.getCharacterFormat().setBold(true);
HeaderFooter evenfooter = sec.getHeadersFooters().getEvenFooter();
Paragraph para4 = evenfooter.addParagraph();
TextRange textRange4 = para4.appendText("偶数页页脚");
para4.getFormat().setHorizontalAlignment(HorizontalAlignment.Right);
textRange4.getCharacterFormat().setTextColor(Color.BLUE);
textRange4.getCharacterFormat().setBold(true); //保存文档
doc.saveToFile("result.docx",FileFormat.Docx_2010);
} }
奇偶数页眉页脚设置效果:

【示例3】设置首页页眉页脚不同

import com.spire.doc.*;
import com.spire.doc.documents.HorizontalAlignment;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.TextRange; import java.awt.*; public class HeaderFooterDifferentFromFirstPage {
public static void main(String[] args){
//加载测试文的
Document doc = new Document("test.docx");
Section sec = doc.getSections().get(0); //设置首页页眉页脚不同
sec.getPageSetup().setDifferentFirstPageHeaderFooter(true); //添加首页页眉页脚
HeaderFooter firstpageheader = sec.getHeadersFooters().getFirstPageHeader();
Paragraph para1 = firstpageheader.addParagraph();
TextRange textRange1 = para1.appendText("首页页眉");
para1.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
textRange1.getCharacterFormat().setBold(true);
textRange1.getCharacterFormat().setTextColor(Color.GREEN);
HeaderFooter firstpagefooter = sec.getHeadersFooters().getFirstPageFooter();
Paragraph para2 = firstpagefooter.addParagraph();
TextRange textRange2 = para2.appendText("首页页脚");
para2.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
textRange2.getCharacterFormat().setBold(true);
textRange2.getCharacterFormat().setTextColor(Color.GREEN); //添加页眉页脚到其他页面
Paragraph para3 = sec.getHeadersFooters().getHeader().addParagraph();
para3.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
TextRange textRange3 = para3.appendText("非首页页眉");
textRange3.getCharacterFormat().setBold(true);
Paragraph para4 = sec.getHeadersFooters().getFooter().addParagraph();
para4.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
TextRange textRange4 = para4.appendText("非首页页脚");
textRange4.getCharacterFormat().setBold(true); //保存文档
doc.saveToFile("result2.docx",FileFormat.Docx_2010);
}
}

页眉页脚设置效果:

【示例4】不连续设置页码

import com.spire.doc.*;
import com.spire.doc.documents.HorizontalAlignment;
import com.spire.doc.documents.PageNumberStyle;
import com.spire.doc.documents.Paragraph; public class DifferentPageNumber {
public static void main(String[]args){
//加载测试文档
Document doc = new Document("test.docx"); //添加页码到第一节
HeaderFooter footer= doc.getSections().get(0).getHeadersFooters().getFooter();
Paragraph footerpara = footer.addParagraph();
footerpara.appendField("Page Number",FieldType.Field_Page);
footerpara.getFormat().setHorizontalAlignment(HorizontalAlignment.Right);
//设置第一节页码数字格式为罗马数字
doc.getSections().get(0).getPageSetup().setPageNumberStyle(PageNumberStyle.Roman_Lower); //设置第二节页码数字格式为阿拉伯数字
doc.getSections().get(1).getPageSetup().setPageNumberStyle(PageNumberStyle.Arabic);
//设置第二节页码从新开始编码,并设置起始页码数字
doc.getSections().get(1).getPageSetup().setRestartPageNumbering(true);
doc.getSections().get(1).getPageSetup().setPageStartingNumber(1); //保存文档
doc.saveToFile("restartnumbering.docx",FileFormat.Docx_2010);
}
}

页码设置效果:

【示例5】锁定页眉页脚

import com.spire.doc.*;

public class LockHeaderFooter {
public static void main(String[]args){
//加载测试文档
Document doc = new Document("sample.docx"); //获取第一节
Section sec = doc.getSections().get(0); //设置保护类型及密码
doc.protect(ProtectionType.Allow_Only_Form_Fields,"123");
sec.setProtectForm(false); //保存文档
doc.saveToFile("LockHeaderFooter.docx",FileFormat.Docx_2010);
}
}

锁定页眉页脚后,文档中除页眉页脚外其他内容可正常编辑。

【示例6】删除页眉页脚

  •   删除所有页眉页脚

    import com.spire.doc.*;
    
    public class DeleteAllHeaderFooter {
    public static void main(String[]args){
    //加载测试文档
    Document doc = new Document("sample.docx");
    //获取第一节
    Section sec = doc.getSections().get(0); //删除页眉
    sec.getHeadersFooters().getHeader().getChildObjects().clear(); //删除页脚
    sec.getHeadersFooters().getFooter().getChildObjects().clear(); //保存文档
    doc.saveToFile("DeleteAllHeaderFooter.docx");
    }
    }

删除效果前后对比:

  • 删除首页页眉页脚

import com.spire.doc.*;

public class DeleteHeaderFooterOfFirstPage {
public static void main(String[]args){
//加载测试文档
Document doc = new Document("sample.docx");
//获取第一节
Section sec = doc.getSections().get(0); //设置首页页眉页脚不同
sec.getPageSetup().setDifferentFirstPageHeaderFooter(true); //删除首页页眉页脚
sec.getHeadersFooters().getFirstPageHeader().getChildObjects().clear();
sec.getHeadersFooters().getFirstPageFooter().getChildObjects().clear(); //保存文档
doc.saveToFile("DeleteHeaderFooterOfFirstPage.docx",FileFormat.Docx_2010);
}
}

首页页眉页脚删除效果:

(本文完)

转载请注明出处!

Java 添加Word页眉、页脚的更多相关文章

  1. C#word(2007)操作类--新建文档、添加页眉页脚、设置格式、添加文本和超链接、添加图片、表格处理、文档格式转化

    转:http://www.cnblogs.com/lantionzy/archive/2009/10/23/1588511.html 1.新建Word文档 #region 新建Word文档/// &l ...

  2. C# 操作Word页眉页脚——奇偶页/首页不同、不连续设置页码、复制页眉页脚、锁定页眉页脚、删除页眉页脚

    前言 本文是对Word页眉页脚的操作方法的进一步的阐述.在“C# 添加Word页眉页脚.页码”一文中,介绍了添加简单页眉页脚的方法,该文中的方法可满足于大多数的页眉页脚添加要求,但是对于比较复杂一点的 ...

  3. ★itext-为pdf文件添加页眉页脚 | 3步完成 |

    由于上一篇自定义生成pdf的功能需求又增加了,需要加上页码.所以本博客诞生了~ 1. 通过继承PdfPageEventHelper类,实现需要实现的方法 import com.lowagie.text ...

  4. itext 生成pdf文件添加页眉页脚

    原文来自:https://www.cnblogs.com/joann/p/5511905.html 我只是记录所有jar版本,由于版本冲突及不兼容很让人头疼的,一共需要5个jar, 其中itextpd ...

  5. iText + Freemarker实现pdf的导出,支持中文、css以及图片,页眉页脚,页眉添加图片

    本文为了记录自己的实现过程,具体的实现步骤是参考博文 https://www.cnblogs.com/youzhibing/p/7692366.html 来实现的,只是在他的基础上添加了页眉页脚及页眉 ...

  6. 使用C#在word中插入页眉页脚

    //插入页脚 public void InsertFooter(string footer) { if (ActiveWindow.ActivePane.View.Type == WdViewType ...

  7. word页眉页脚 首页 索引 正文各不同的处理方法

    1.在目录和正文之间,加入分隔符——分节符——下一页,然后再添加页眉页脚,然后再添加索引:

  8. C# 如何添加Excel页眉页脚(图片、文字、奇偶页不同)

    简介 我们可以通过代码编程来对Excel工作表实现很多操作,在下面的示例中,将介绍如何来添加Excel页眉.页脚.在页眉处,我们可以添加文字,如公司名称.页码.工作表名.日期等,也可以添加图片,如LO ...

  9. 用什么方法给PDF添加页眉页脚

    我们所看到的书本中都会设置好有页眉页脚,那么电子书想要添加页眉页脚要怎么操作呢,用什么方法可以在PDF中添加页眉页脚呢,今天就为大家分享一下,如何在电子文件中添加页眉页脚,想知道的小伙伴们就一起来看看 ...

随机推荐

  1. uploadify没反应

    由于业务问题,需要用到uploadify这个插件,结果官方的case怎么弄都没问题,弄到自己的页面上就有问题了. 后来发现,这个插件是要用到swf的,但是页面加载的过程中并没有加载swf文件,所以将问 ...

  2. mysql数据库实战之优酷项目

    管理员: 1.注册功能 客户端 1-1.选择每个功能之前都需要都需要需要连接上服务器,即需要一个socket对象,每个函数传一个client 1-2.密码在传递过程中不能是明文吧,需要加密,可选择ha ...

  3. 《Dotnet9》系列-Google ProtoBuf在C#中的简单应用

    时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...

  4. Java 异常规范

    1. 只针对异常情况使用异常,不要用异常来控制流程 try { int i = 0; while (true) { range[i++].doSomething(); } } catch (Array ...

  5. Geoserver设置style

    1 背景 我们在ArcMap中可以直接通过symbol功能对图层进行定制化配图.但是,如果我们将配好图的shp图层在GeoServer中发布时,会发现图层样式完全丢失了.其实原因很简单,用ArcMap ...

  6. Android BGradualProgress 多种渐变、直角or弧角、进度条、加载条

    可实现多种渐变.直角or弧角.进度条.加载条 (Various gradient, right or arc angle, progress bar and loading bar can be re ...

  7. 软帝学院:一万字的Java基础知识总结大全(实用)

    Java基础总结大全(实用) 一.基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨 ...

  8. 微软发布ML.NET 1.0

    原文地址:https://devblogs.microsoft.com/dotnet/announcing-ml-net-1-0/ 我们很高兴地宣布今天发布ML.NET 1.0.  ML.NET是一个 ...

  9. Python定做一个计算器,小而美哒~

    使用qt designer ,按装anaconda后,在如下路径找到: conda3.05\Library\bin designer.exe文件,双击启动: ​ 创建窗体,命名为XiaoDing,整个 ...

  10. ETCD:客户端v3

    原文地址:etcd/clientv3 etcd/clientv3是v3版本的Go etcd官方客户端 安装 go get go.etcd.io/etcd/clientv3 开始 创建客户端使用clie ...