ServiceNow:使用“GeneralPDF”脚本的自定义横向 PDF 文件包括

Posted

技术标签:

【中文标题】ServiceNow:使用“GeneralPDF”脚本的自定义横向 PDF 文件包括【英文标题】:ServiceNow: Customized landscape PDF files using 'GeneralPDF' script include 【发布时间】:2018-02-04 07:59:07 【问题描述】:

我找到了一种方法,它利用名为“GeneralPDF”的脚本在服务器端创建自定义 PDF 文件,通常代码如下所示:

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

var pdfFile = new GeneralPDF(emptyPDFDoc);   

pdfFile.starthtmlParser();

pdfFile.addHTML("some html");

pdfFile.stopHTMLParser();

这对我来说很好,唯一的事情是我想将 PDF 生成为横向但我不能,我知道这是可能的,因为原始库看起来像这样:

如您所见,有一个参数'landscape',我试过传递true,但它不起作用,有什么想法吗?由于该库最后使用 iText,我猜它与页面大小对象(新 iTextPDFUtil.PageSize())有关,请注意,我可以扩展此库并编写我自己的版本以防我们需要任何更改到核心

更新: 有一个包含“GeneralForm”的脚本,它是使用这些 PDF 组件的示例,该示例说有一种设置方向的方法,但它没有指定如何设置!!

【问题讨论】:

我浏览了代码,它应该允许您像您尝试的那样将横向设置为 true,但 iTextPDFUtil 主要是 GeneralFormJava 的包装器,它是 SNC 的包装器和无权访问。 系统日志是否有错误? 我检查了所有类型的日志,完全没有错误:( 我确信有一种方法,但没有记录,即使是“GeneralForm”示例也说它是可能的,但它没有说明如何(请检查 OP 编辑​​) @Kirk 有什么建议吗? 我不相信它会帮助你,但你可以在下面的答案中直接在GeneralPDF.Document 上设置方向。根据该对象中的代码,在构造函数中将其设置为true 将起作用。如果我发现任何其他内容,我会告诉你。 【参考方案1】:

看看您是否可以为此使用setLandscape 方法。

emptyPDFDoc.setLandscape(true);

类似的东西

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();

查看对象的代码,您应该能够在不显式调用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();

此外,由于这没有在任何地方记录,请查看是否可以将其设置为 landscape

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

【讨论】:

感谢您的帮助,但不幸的是没有任何效果:(我什至尝试传递与风景相关的关键字,如“风景”、“a4-风景”……但没有任何效果:D这无法解决我想直到开发团队的某个人做出回应【参考方案2】:

您是否尝试过编辑脚本包含以考虑landscape 参数?看起来它被硬编码为 false 并完全忽略了参数,但您可以像这样更改它:

this.landscape = false;

到下面:

this.landscape = landscape || false;

【讨论】:

感谢您的回复 Dylan,实际上这不是必需的,因为他们以另一种方式构建了它,初始化发生在此语句 this.landscape = false 中,并且在几行之后还有另一个条件语句检查某事是否通过与否并相应地分配值,还有另一个函数setLandscape 设置值。毕竟没有任何效果:D

以上是关于ServiceNow:使用“GeneralPDF”脚本的自定义横向 PDF 文件包括的主要内容,如果未能解决你的问题,请参考以下文章

ServiceNow 历史记录未显示“列表”选项

ServiceNow代码规范

ServiceNow中的Tips(不定期更新)

beego怎么使用service

GlideFast Consulting获选为ServiceNow 2022年度精英合作伙伴

使用Powershell从Servicenow票证下载附加的excel文件