Comment définir l'orientation de la page pour un document Word?
- Je utiliser Apache POI XWPF de créer et de gérer MS Word
documents. Mais je n'ai pas trouvé dans la documentation comment changer l'orientation de la page.
Apparemment, cela devrait le faire:
XWPFDocument doc = new XWPFDocument();
CTDocument1 document = doc.getDocument();
CTBody body = document.getBody();
if (!body.isSetSectPr()) {
body.addNewSectPr();
}
CTSectPr section = body.getSectPr();
if(!section.isSetPgSz()) {
section.addNewPgSz();
}
CTPageSz pageSize = section.getPgSz();
pageSize.setOrient(STPageOrientation.LANDSCAPE);
Mais cette méthode ne fonctionne pas correctement. Je peux définir l'orientation de la page en mode paysage, et quand j'ai lu l'orientation de la page dans le code, j'obtiens le paysage. Tous les droits. Mais si j'ouvre le document enregistré, j'ai format portrait. Ce paramètre ne fonctionne pas en fait. Quel pourrait être le problème?
Comme une solution de contournement, je suis obligé de commencer à travailler avec un document vide créé manuellement en mode paysage ou en format portrait. Mais je veux créer des documents par programme à partir de zéro dans le besoin d'orientation.
Par exemple PI HSSF et XSSF avoir des fonctionnalités pour basculer entre le mode paysage et portrait. C'est setLandscape() méthode de org.apache.poi.ss.usermodel.PrintSetup
interface.
Mais qu' XWPF
ou HWPF
?
Merci pour votre remarque. Mais cela ne résout pas mon problème. J'ai ajouté le droit à des versions de tous les pots. Et je ne reçois pas toutes les exceptions, tout se compile et s'exécute. Mais le sujet est toujours d'actualité. Comment faire pour modifier l'orientation du document correctement? Le code ci-dessus ne fonctionne pas correctement. J'ai défini l'orientation de la page en paysage dans la manière ci-dessus, mais je continue à voir format portrait quand j'ai ouvert le document.
Si vous définissez un document en mode Paysage dans word, enregistrer sous .docx, puis décompressez le fichier résultant (.docx est un zip de fichiers xml), d'où l'orientation obtenez réellement ensemble?
C'est Apache POI ne peut pas résoudre ce problème?
Il peut probablement le faire, mais il faudra un peu de travail, car apparemment personne n'a jusqu'à présent, avait besoin de cette fonctionnalité suffisante pour soumettre un patch...
OriginalL'auteur kapand | 2013-11-25
Vous devez vous connecter pour publier un commentaire.
Vous avez été beaucoup sur le droit chemin. Réglage de l'orientation paysage décrit l'orientation générale du document, mais il faut le taille du papier. Votre CTPageSz objet n'ont pas encore.
Cela signifie que, en plus de votre setOrient appel, vous aurez besoin de deux setW et setH. Ces appels BigIntegers qui sont représentatifs de 1/20 Point. Pour paysagé, LETTRE type de papier par conséquent, vous aurez juste:
Pour le Mot de la reconnaître comme Paysager, la largeur doit être supérieure à la hauteur. Vous voulez toujours garder les setOrient appel en tant que bien si vous le voulez bien se comporter lors de l'impression.
Voici quelques communes de tailles de papier dans les points de https://www.gnu.org/software/gv/manual/html_node/Paper-Keywords-and-paper-size-in-points.html que vous devez les prendre et de les multiplier par vingt à utiliser dans la méthode ci-dessus appels
OriginalL'auteur Zach
Réponse est juste.
J'ai juste eu à ajouter des dépendances pour être en mesure d'accéder à CTPageSz classe.
OriginalL'auteur nrodriguez