嘿,有Stackoverflow!
我有点棘手的问题,我试图自己解决它,但最近撞到了一堵墙。我正在使用pdfmake - JS中的客户端/服务器端PDF打印框架。
所以我得到了一个与jQuery .append()相关联的按钮,它会根据用户的输入添加文本区域或输入字段,以及另一个预览和调用pdfPreview的按钮( )功能。一切顺利,我写了一个功能,以获取所有的内容和#34;给"它来pdfMake创建一个PDF然后可以下载。
现在pdfMake得到了一个样式定义。 (示例可以找到:here但我不确定何时为用户提供的输入声明样式。
(我的英语不是很好,但我会逐步解释工作流程,以便你可以关注我并理解我的问题)
content=[]
docDefintion= {}
并说出content: content
并声明不同的样式(例如参见codepen)有什么方法我可以在第4步和第6步之间说出"嘿这是一个标题所以请记住稍后将这部分内容作为默认样式设置" as"嘿,这是来自用户A的文本字段输入,所以请记住稍后将这部分内容提供给textStyle设置"
我真的很想研究这件事,看到一些有用的东西真的很有趣(编写部分以使所有内容真的很酷)所以我并不是在寻找一个带走的解决方案,但我感谢每一个帮助我能得到。
以下是codepen http://codepen.io/anon/pen/BKrrBN
编辑:我完全忘了告诉=要在codepen中预览pdf,请打开控制台以查看dataURL。我不知道为什么它不能与我创建的iframe一起工作(在我的开发网站空间工作)
答案 0 :(得分:1)
您需要在推送内容时指定样式。类似的东西:
//yourcode
contentFinal.push({text: contentText, style: 'textStyle'});
//yourcode
contentFinal.push({text: contentHead, style: 'defaultStyle'});
在你的pdf模板中包含styles
对象中的样式,如:
// Show Content on PDF
var content = contentFinal;
var docDefinition = {
content: content,
styles: {
// Declare styles
defaultStyle: {
font: 'Roboto',
fontSize: '50',
},
textStyle: {
font: 'Roboto',
fontSize: '1',
}
}
};
//yourcode