javascript - 使用 pdfmake 库时文本离开页面

标签 javascript html css pdfmake

我正在使用 pdfmake 让用户填写表单,然后从该表单获取数据并将其转换为 PDF。但问题是当用户输入长文本时文本会离开页面。

我已经尝试设置样式来证明这一点,但这似乎不起作用。

这是我的代码:

<!doctype html>
<html lang='en'>

<head>
 <meta charset='utf-8'>
 <title>my first pdfmake example</title>
 <script src='pdfmake.min.js'></script>
 <script src='vfs_fonts.js'></script>
</head>

<body>

<input type="text" id="test" name="test">
<textarea id="z" cols="10" rows="5" wrap="hard"></textarea>

<button onclick="pdf()">generate</button>
<script>

    // open the PDF in a new window
    function pdf() {
        var x = document.getElementById("test").value
        var z = document.getElementById("z").value

        var docDefinition = {

            content: [

                {
                    image: 'sampleImage.png',
                },

                {  ul: [x] },
                {
                    image: 'sampleImage.png'
                },

                {

                    ul: [
                           'Item 1',
                           'Item 2',
                           'Item 3',
                        {
                            text: z,
                            bold: true,
                            alignment: 'justify'
                        },
                   ],

                }
                ],

            styles: {
                header: {
                    fontSize: 18,
                    bold: true,
                    alignment: 'justify'
                }
            }
        };
        //alert(x);
        pdfMake.createPdf(docDefinition).open();
    }
</script>
</html>

错误:

在图像中,您可以看到输入的长文本从屏幕上消失了。

enter image description here

有没有办法解决无论用户输入多长时间文本都不会离开屏幕的问题。它转到下一行?

最佳答案

正如@jthoenes 在 2 月 18 日 https://github.com/bpampuch/pdfmake/issues/204 所说,pdfmake 从不打断单词,它只会在出现空格或标点符号时打断。

在此行下方,我附上了一个简单的代码,您可以将其直接粘贴到 pdfmake playground 以进行尝试。您会看到只有空格或标点符号才能满足您的需求。

祝你好运!

var dd = {
    content: [
        'First paragraph',
        'Another paragraph, this time a little bit longer to make sure, this line will be divided into at least two lines',
        {
            ul: [
                'Item 1',
                'Item 2',
                'Item 3',
                {
                    text: 'thisisatestthisisatestthisisatestthisisatest.thisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatest',
                    bold: true,
                    alignment: 'justify',
                    margin: [10,10,10,10],
                    width:90
                },
            ],
        },
        {
            text: 'thisisatest.thisisatestthisisatest.thisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatest',

            alignment: 'justify',
            margin: [0,190,10,80],
            width:90
        },
        {
            columns: [
                {
                    width:90,
                    text: 'thisisatest.thisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatestthisisatest!'

                }, 
                {
                    width: '*',
                    text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.'
                },
            ]
        }
    ]
}

关于javascript - 使用 pdfmake 库时文本离开页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33096770/

相关文章:

javascript - 使用javascript/jQuery查找最接近鼠标位置的网格坐标

javascript - filter(cond) 和 flatMap(x => cond 之间有区别吗? of(x) : EMPTY)?

css - EM 表示行高

javascript - jQuery.浏览器 : Javascript Uncaught TypeError

javascript - 使用 Socket.IO 表达 : Server doesn't receive emits from client

html - 文本溢出问题 : ellipses in a specific height paragraph

html5 + css3 slider 动画问题与 chrome

html - Django 如何指定一个基本 url

javascript - 我无法在 Jquery 循环插件中获取缩略图,只能获取文本数字

javascript - 通过 XMLHttpRequest 获取 img 后加载外部图像作为 div 的背景