Estoy tratando de crear un documento de Word usando el formato XWPF en apache poi. el documento requiere que se creen tablas, por lo que necesito establecer la orientación de la página en horizontal. utilicé el código existente de Páginas horizontales y verticales en el mismo documento de Word usando Apache POI XWPF en Java e incluyó una llamada a la función después de crear un documento, pero está arrojando una excepción de puntero nulo. ¿Alguien puede ayudarme con eso? gracias de antemano. Use el siguiente código:
private void changeOrientation(XWPFDocument document, String orientation){
CTDocument1 doc = document.getDocument();
CTBody body = doc.getBody();
CTSectPr section = body.addNewSectPr();
XWPFParagraph para = document.createParagraph();
CTP ctp = para.getCTP();
CTPPr br = ctp.addNewPPr();
br.setSectPr(section);
CTPageSz pageSize = section.getPgSz();
if(orientation.equals("landscape")){
pageSize.setOrient(STPageOrientation.LANDSCAPE);
pageSize.setW(BigInteger.valueOf(842 * 20));
pageSize.setH(BigInteger.valueOf(595 * 20));
}
else{
pageSize.setOrient(STPageOrientation.PORTRAIT);
pageSize.setH(BigInteger.valueOf(842 * 20));
pageSize.setW(BigInteger.valueOf(595 * 20));
}
}
Está arrojando un error en la línea:
pageSize.setOrient(STPageOrientation.LANDSCAPE);
Respuestas
1 para la respuesta № 1No todas las secciones tendrán un objeto Tamaño de página establecido en ellas. Debe comprobar si hay uno y agregarlo si no, antes de establecer la orientación para él.
Entonces, deberías cambiar la línea
CTPageSz pageSize = section.getPgSz();
Para ser
CTPageSz pageSize;
if (section.isSetPgSz()) {
pageSize = section.getPgSz();
} else {
pageSize = section.addNewPgSz();
}
Y luego continúa con tus llamadas como
pageSize.setOrient(STPageOrientation.LANDSCAPE);