Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   *  Copyright 2009, Plutext Pty Ltd.
   *   
   *  This file is part of docx4j.
  
      docx4j is licensed under the Apache License, Version 2.0 (the "License"); 
      you may not use this file except in compliance with the License. 
  
      You may obtain a copy of the License at 
 
         http://www.apache.org/licenses/LICENSE-2.0 
 
     Unless required by applicable law or agreed to in writing, software 
     distributed under the License is distributed on an "AS IS" BASIS, 
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
     See the License for the specific language governing permissions and 
     limitations under the License.
 
  */
 
 package org.docx4j.model.structure;
 
 
Wraps PgSz (Page size) and PgMar (margin settings). - gives you an easy way to set these; - performs a few useful calculations Used in SectionWrapper, to store the dimensions of a page for a section; can also be used to store a set of page dimensions which aren't associated with any section.

Author(s):
jharrop
 
 public class PageDimensions {
 	
 	protected static Logger log = LoggerFactory.getLogger(PageDimensions.class);
 	
 	
 	public PageDimensions() {
 		
 		
 	}

Since:
2.7
 
 	public PageDimensions(PgSz pgSzPgMar pgMar) {
 		init(pgSzpgMar);
 	}

Since:
2.7
 
 	public PageDimensions(SectPr sectPr) {
 		if (sectPr==null) {
 			init(nullnull);
 		} else {
 			init(sectPr.getPgSz(), sectPr.getPgMar());
 		}
 	}
 	
 	private void init(PgSz pgSzPgMar pgMar) {
 		
 		if (pgSz == null) {
 			.warn("No pgSz in this section; defaulting.");
 			this. = Context.getWmlObjectFactory().createSectPrPgSz();			
 		} else {
 			this. = pgSz;			
 		}
 		
 		if (pgMar ==null) {
 			.warn("No pgMar in this section; defaulting.");
 		} else {
 			this. = pgMar;				
 		}
 	}
 	
 	private PgSz pgSz;

Since:
2.7
	public PgSz getPgSz() {
		return ;
	}

Since:
2.7
	public void setPgSz(PgSz pgSz) {
		this. = pgSz;
	}
	public PgSz createPgSize() {				
		return ;		
	}
	private PgMar pgMar;

Since:
2.7
	public PgMar getPgMar() {
		return ;
	}

Since:
2.7
	public void setPgMar(PgMar pgMar) {
		this. = pgMar;
	}			
	public PgMar createPgMar() {
		return ;		
	}	

set Margins from docx4j.properties

Since:
2.8
	public void setMargins() {
		String margin= Docx4jProperties.getProperties().getProperty("docx4j.PageMargins""NORMAL");
		setMargins(MarginsWellKnown.valueOf(margin));
//		if (margin.equals("normal")) {
//			setMargins(MarginsWellKnown.NORMAL);
//		} else if (margin.equals("narrow")) {
//			setMargins(MarginsWellKnown.NARROW);
//		} else if (margin.equals("moderate")) {
//			setMargins(MarginsWellKnown.MODERATE);
//		} else if (margin.equals("wide")) {
//			setMargins(MarginsWellKnown.WIDE);
//		} else {
//			log.warn("Unknown margin setting " + margin + "in docx4j.properties");
//			setMargins(MarginsWellKnown.NORMAL);			
//		}
	}

Since:
2.7
	public void setMargins(MarginsWellKnown m ) {
//	    NORMAL("normal"),     // <w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="708" w:footer="708" w:gutter="0"/>
			.setTop( BigInteger.valueOf(1440));
			.setBottom( BigInteger.valueOf(1440));
			.setLeft( BigInteger.valueOf(1440));
			.setRight( BigInteger.valueOf(1440));
			return;			
		}
//	    NARROW("narrow"),     // <w:pgMar w:top="720"  w:right="720"  w:bottom="720"  w:left="720" w:header="708" w:footer="708" w:gutter="0"/>
			.setTop( BigInteger.valueOf(720));
			.setBottom( BigInteger.valueOf(720));
			.setLeft( BigInteger.valueOf(720));
			.setRight( BigInteger.valueOf(720));
			return;			
		}
//	    MODERATE("moderate"), // <w:pgMar w:top="1440" w:right="1080" w:bottom="1440" w:left="1080" w:header="708" w:footer="708" w:gutter="0"/>
			.setTop( BigInteger.valueOf(1440));
			.setBottom( BigInteger.valueOf(1440));
			.setLeft( BigInteger.valueOf(1080));
			.setRight( BigInteger.valueOf(1080));
			return;			
		}
//	    WIDE("wide");         // <w:pgMar w:top="1440" w:right="2880" w:bottom="1440" w:left="2880" w:header="708" w:footer="708" w:gutter="0"/>
			.setTop( BigInteger.valueOf(1440));
			.setBottom( BigInteger.valueOf(1440));
			.setLeft( BigInteger.valueOf(2880));
			.setRight( BigInteger.valueOf(2880));
			return;			
		}
	}

set page size/orientation from docx4j.properties

Since:
2.8
	public void setPgSize() {
		String papersize= Docx4jProperties.getProperties().getProperty("docx4j.PageSize""A4");
		.info("Using paper size: " + papersize);
		String landscapeString = Docx4jProperties.getProperties().getProperty("docx4j.PageOrientationLandscape""false");
		boolean landscape= Boolean.parseBoolean(landscapeString);
		.info("Landscape orientation: " + landscape);
		setPgSize(PageSizePaper.valueOf(papersize), landscape);		
	}	

Since:
2.7
	public void setPgSize(PageSizePaper szboolean landscape ) {
			.setCode(BigInteger.valueOf(1));
			if (landscape) {
				.setW(BigInteger.valueOf(15840));
				.setH(BigInteger.valueOf(12240));
else {
				.setW(BigInteger.valueOf(12240));
				.setH(BigInteger.valueOf(15840));
			}
		}
		else if (sz.equals(.)) {
			.setCode(BigInteger.valueOf(5));
			if (landscape) {
				.setW(BigInteger.valueOf(20160));
				.setH(BigInteger.valueOf(12240));
else {
				.setW(BigInteger.valueOf(12240));
				.setH(BigInteger.valueOf(20160));
			}
		}
		else if (sz.equals(.)) {
			.setCode(BigInteger.valueOf(8));
			if (landscape) {
				.setW(BigInteger.valueOf(23814));
				.setH(BigInteger.valueOf(16839));
else {
				.setW(BigInteger.valueOf(16839));
				.setH(BigInteger.valueOf(23814));
			}
		}
		else if (sz.equals(.)) {
			.setCode(BigInteger.valueOf(9));
			if (landscape) {
				.setW(BigInteger.valueOf(16839));
				.setH(BigInteger.valueOf(11907));
else {
				.setW(BigInteger.valueOf(11907));
				.setH(BigInteger.valueOf(16839));
			}
		}
		else if (sz.equals(.)) {
			.setCode(BigInteger.valueOf(12));
			if (landscape) {
				.setW(BigInteger.valueOf(20639));
				.setH(BigInteger.valueOf(14572));
else {
				.setW(BigInteger.valueOf(14572));
				.setH(BigInteger.valueOf(20639));
			}
		}
	}	
	public int getWritableWidthTwips() {		
		return .getW().intValue() - (.getLeft().intValue() + .getRight().intValue());
	}
	/* From http://msdn.microsoft.com/en-us/library/aa537167(office.11).aspx 
	 * 
	 * In Word, the size of header and footer areas can change dynamically. 
	 * The central region of the page increases or decreases when the contents of a side region changes. 
	 * The XSL-FO format has no means to express dynamically changing header and footer areas. 
	 * In the XSL-FO format, side regions must have fixed dimensions, regardless of their actual contents. 
	 * 
	 * That article goes on to say:
	 * 
	 *    Consequently, you must reserve the space for headers and footers manually by adjusting page margins.
	 *    
	 * (that is, in the Word document).  We don't require that.
	 * 
	 * Instead, this class allows headerExtent and footerExtent to be
	 * set as required (in TWIPS).  In due course (when we have an algorithm for amount of 
	 * space occupied), it may be possible to do this automatically.   
	 * 
	 * ------------------
	 * 
	 * pgMar.header  is the distance from the top edge of the paper to the top edge of the header
	 * 
	 * in XSL FO, extent is  the inline-progression-dimension of the region-start or region-end 
	 * or the block-progression-dimension of the region-before or region-after.
	 */

Get the distance from the top edge of the paper to the top edge of the header
	public int getHeaderMargin() {
		if (.getHeader()==null 
				|| .getHeader().intValue() ==0 ) {
			return 708;
else {
		}
	}

Get the distance from the bottom edge of the paper to the bottom edge of the footer
	public int getFooterMargin() {
		if (.getFooter()==null 
				|| .getFooter().intValue() ==0 ) {
			return 1440;
else {
		}
	}
	int headerExtent = 708;
Get the height of the header. In Word, the size of header and footer areas can change dynamically; for PDF output, you need to set this appropriately. It defaults to 708 TWIPs
	public int getHeaderExtent() {
		return ;
	}
	public void setHeaderExtent(int headerExtent) {
		this. = headerExtent;
	}
	int footerExtent = 708;
Get the height of the footer. In Word, the size of header and footer areas can change dynamically; for PDF output, you need to set this appropriately. It defaults to 708 TWIPs
	public int getFooterExtent() {
		return ;
	}
	public void setFooterExtent(int footerExtent) {
		this. = footerExtent;
	}
New to GrepCode? Check out our FAQ X