zoukankan      html  css  js  c++  java
  • Java 添加Word页眉、页脚

    本篇文章将介绍通过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);
        }
    }

    首页页眉页脚删除效果:

    (本文完)

    转载请注明出处!

  • 相关阅读:
    那些恶心人的Screen基本概念
    关于android闹钟,设置定时提醒的一点心得
    把Android源代码加入SDK
    如何在win7下安装和配置Android Studio
    如何查看USB方式连接Android设备的外接设备信息
    android通过USB使用真机调试程序
    详解Android动画之Tween Animation
    struts2内置拦截器和自定义拦截器详解(附源码)
    ognl概念和原理详解
    OGNL表达式的基本语法和用法
  • 原文地址:https://www.cnblogs.com/Yesi/p/11010805.html
Copyright © 2011-2022 走看看