Aspose.Words - Insert Footer

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Section currentSection = builder.getCurrentSection();
PageSetup pageSetup = currentSection.getPageSetup();

// Specify if we want headers/footers of the first page to be different from other pages.
// You can also use PageSetup.OddAndEvenPagesHeaderFooter property to specify
// different headers/footers for odd and even pages.
pageSetup.setDifferentFirstPageHeaderFooter(true);

// --- Create header for the first page. ---
pageSetup.setHeaderDistance(20);
builder.moveToHeaderFooter(HeaderFooterType.FOOTER_FIRST);
builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);

// Specify header title for the first page.
builder.write("(C) 2001 Aspose Pty Ltd. All rights reserved.");

Docx4j

private static ObjectFactory objectFactory = new ObjectFactory();
static String dataPath = "src/featurescomparison/workingwithheaderfooter/addfooter/data/";

public static void main(String[] args) throws Exception {

	WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage
			.createPackage();
	// Delete the Styles part, since it clutters up our output
	MainDocumentPart mdp = wordMLPackage.getMainDocumentPart();
	Relationship styleRel = mdp.getStyleDefinitionsPart().getSourceRelationships().get(0);
	mdp.getRelationshipsPart().removeRelationship(styleRel);		

	// OK, the guts of this sample:
	// The 2 things you need:
	// 1. the Header part
	Relationship relationship = createFooterPart(wordMLPackage);
	// 2. an entry in SectPr
	createFooterReference(wordMLPackage, relationship);

	// Display the result as Flat OPC XML
	FlatOpcXmlCreator worker = new FlatOpcXmlCreator(wordMLPackage);
	worker.marshal(System.out);
	
	// Now save it 
	wordMLPackage.save(new java.io.File(dataPath + "OUT_Footer.docx") );

}

public static Relationship createFooterPart(
		WordprocessingMLPackage wordprocessingMLPackage)
		throws Exception {
	
	FooterPart footerPart = new FooterPart();
	Relationship rel =  wordprocessingMLPackage.getMainDocumentPart()
			.addTargetPart(footerPart);
	
	// After addTargetPart, so image can be added properly
	footerPart.setJaxbElement(getFtr(wordprocessingMLPackage, footerPart));

	return rel;
}

public static void createFooterReference(
		WordprocessingMLPackage wordprocessingMLPackage,
		Relationship relationship )
		throws InvalidFormatException {

	List<SectionWrapper> sections = wordprocessingMLPackage.getDocumentModel().getSections();
	   
	SectPr sectPr = sections.get(sections.size() - 1).getSectPr();
	// There is always a section wrapper, but it might not contain a sectPr
	if (sectPr==null ) {
		sectPr = objectFactory.createSectPr();
		wordprocessingMLPackage.getMainDocumentPart().addObject(sectPr);
		sections.get(sections.size() - 1).setSectPr(sectPr);
	}

	FooterReference footerReference = objectFactory.createFooterReference();
	footerReference.setId(relationship.getId());
	footerReference.setType(HdrFtrRef.DEFAULT);
	sectPr.getEGHdrFtrReferences().add(footerReference);// add header or
	// footer references
}

public static Ftr getFtr(WordprocessingMLPackage wordprocessingMLPackage,
		Part sourcePart) throws Exception {

	Ftr ftr = objectFactory.createFtr();
	
	File file = new File(dataPath + "java_logo.png" );
	java.io.InputStream is = new java.io.FileInputStream(file );
	
	ftr.getContent().add(
			newImage(wordprocessingMLPackage,
					sourcePart, 
					BufferUtil.getBytesFromInputStream(is), 
					"filename", "alttext", 1, 2
					)
	);
	return ftr;
}
	
public static org.docx4j.wml.P newImage( WordprocessingMLPackage wordMLPackage,
		Part sourcePart,
		byte[] bytes,
		String filenameHint, String altText, 
		int id1, int id2) throws Exception {
	
    BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, 
    		sourcePart, bytes);
	
    Inline inline = imagePart.createImageInline( filenameHint, altText, 
			id1, id2, false);
    
    // Now add the inline in w:p/w:r/w:drawing
	org.docx4j.wml.ObjectFactory factory = Context.getWmlObjectFactory();
	org.docx4j.wml.P  p = factory.createP();
	org.docx4j.wml.R  run = factory.createR();		
	p.getContent().add(run);        
	org.docx4j.wml.Drawing drawing = factory.createDrawing();		
	run.getContent().add(drawing);		
	drawing.getAnchorOrInline().add(inline);
	
	return p;
}

Download Source Code

For More Examples, Please Visit Aspose Docs

Last edited Jan 12, 2015 at 2:31 PM by shoaibkhan, version 3