2017-08-26 1 views
0

J'ai trouvé un moyen qui utilise un script comprennent appelé « GeneralPDF » pour créer des fichiers PDF personnalisés sur le côté serveur, généralement le code ressemble à ceci:ServiceNow: Les fichiers PDF paysagères personnalisés à l'aide script « GeneralPDF » comprennent

var emptyPDFDoc = new GeneralPDF.Document(null, null, null, null, null, null); 

var pdfFile = new GeneralPDF(emptyPDFDoc); 

pdfFile.startHTMLParser(); 

pdfFile.addHTML("some html"); 

pdfFile.stopHTMLParser(); 

cela fonctionne très bien pour moi, la seule chose est que je veux générer le fichier PDF en tant que paysage et je ne peux pas, je sais qu'il est possible parce que ressemble la bibliothèque originale ceci:

enter image description here

Comme vous pouvez le voir, il est un paramètre 'paysage', j'ai essayé de passer la vérité mais ça ne marche pas, des idées? puisque la librairie utilise iText à la fin je suppose que ce sera lié à l'objet taille de la page (nouveau iTextPDFUtil.PageSize()), notez que je peux étendre cette bibliothèque et écrire ma propre version de celle-ci au cas où nous aurions besoin de changements au cœur

Mise à jour:
il y a un script include « GeneralForm » qui est un exemple pour l'utilisation de ces composants PDF, l'exemple dit il y a un moyen de définir l'orientation, mais il ne précise pas comment !! enter image description here

+0

Je navigué à travers le code et Cela devrait vous permettre de définir le paysage sur 'true' comme vous l'avez essayé, mais' iTextPDFUtil' est principalement un wrapper pour 'GeneralFormJava' qui est un wrapper pour' SNC' et qui n'y a pas accès. Y a-t-il une erreur dans le * System Log *? – Kirk

+0

J'ai vérifié tous les types de journaux, pas d'erreurs du tout :( –

+0

Je suis sûr qu'il existe un moyen mais il n'est pas documenté, même l'exemple 'GeneralForm' dit que c'est possible mais il ne dit pas comment (s'il vous plaît vérifier le OP modifier) ​​ –

Répondre

0

Voyez si vous pouvez utiliser la méthode setLandscape pour cela.

emptyPDFDoc.setLandscape(true); 

Quelque chose comme ça

var emptyPDFDoc = new GeneralPDF.Document(null, null, null, null, null, null); 
emptyPDFDoc.setLandscape(true); 

var pdfFile = new GeneralPDF(emptyPDFDoc); 
pdfFile.startHTMLParser(); 
pdfFile.addHTML("some html"); 
pdfFile.stopHTMLParser(); 

En regardant le code de l'objet ressemble à vous devriez juste être en mesure de le faire sans l'appel explicite à setLandscape.

var emptyPDFDoc = new GeneralPDF.Document(true, null, null, null, null, null); 

var pdfFile = new GeneralPDF(emptyPDFDoc); 
pdfFile.startHTMLParser(); 
pdfFile.addHTML("some html"); 
pdfFile.stopHTMLParser(); 

également puisque ce n'est pas documenté nulle part, voir si vous pouvez définir ce à landscape

var emptyPDFDoc = new GeneralPDF.Document('landscape', null, null, null, null, null); 
+0

merci pour essayer d'aider mais malheureusement rien n'a fonctionné :(J'ai même essayé de passer des mots-clés liés au paysage comme «paysage», «A4-paysage». .. –

0

Avez-vous essayé de modifier le script inclut à prendre en compte pour le paramètre landscape? On dirait qu'il est codé en dur comme false et en ignorant complètement le paramètre, mais vous pourriez être en mesure de changer comme ceci:

this.landscape = false; 

au-dessous:

this.landscape = landscape || false; 
+0

Merci pour votre réponse Dylan, en fait ce n'est pas nécessaire car ils l'ont construit d'une autre manière, l'initialisation se passe dans cette déclaration 'this. landscape = false' et il y a une autre instruction de condition après quelques lignes qui vérifie si sth est passée ou non et assigne la valeur en conséquence, il y a aussi une autre fonction 'setLandscape' qui définit la valeur. rien ne fonctionne après tout: D –