1. 程式人生 > >Java 新增Word頁首、頁尾

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);
    }
}

首頁頁首頁尾刪除效果:

 

(本文完)

轉載請註明出處!

&n