Lesson: lesson-pdfreactor-autofit-text

In example you see the options how to fit over long text into a given bounding box using Javascript in PDFreactor.

PDF files

Converter PDF Preview
PDFreactor
OK
Download

Stylesheet

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
@import url("../styles/a4.css");

div.box {
    text-align: justify;
    width: 6cm;
    height: 6cm;
    border: 2px solid blue;
    padding: 0.1em;
    font-size: 10pt;
    margin-bottom: 1em;
    page-break-after: always;
    hyphens: auto;
}

HTML input

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="styles.css" />
        <script>
            var containers = document.querySelectorAll("#box1");

            for (var i = 0; i < containers.length; i++) {
                var container = containers[i];
                var content = container.querySelector(".content");

                var containerHeight = ro.layout.getBoxDescriptions(container)[0].contentRect.height;
                var contentHeight = ro.layout.getBoxDescriptions(content)[0].marginRect.height;
                var fontSize = parseInt(window.getComputedStyle(content).fontSize);

                while (contentHeight > containerHeight) {
                    fontSize = fontSize * 0.9;
                    content.style.fontSize = fontSize + "pt";
                    contentHeight = ro.layout.getBoxDescriptions(content)[0].marginRect.height;
                }
            }
        </script>
    </head>
    <body lang="de"> 

    <h1>Box with text overflow</h1>   
    <div class="box">
        <div class="content">
            <!--lorem--> <p>Mauris aliquam mauris ut tortor. Pellentesque
            tincidunt mattis nibh. In id lectus eu magna vulputate ultrices. Aliquam
            interdum varius enim. Maecenas at mauris. Sed sed nibh. Nam non turpis.
            Maecenas fermentum nibh in est. Pellentesque habitant morbi tristique
            senectus et netus et malesuada fames ac turpis egestas.</p>

            <p>Duis sagittis fermentum nunc. Nullam elementum erat. Quisque dapibus, augue
            nec dapibus bibendum, velit enim scelerisque sem, accumsan suscipit lectus odio
            ac justo. Fusce in felis a enim rhoncus placerat. Cras nec eros et mi egestas
            facilisis. In hendrerit tincidunt neque. Maecenas tellus. Fusce sollicitudin
            molestie dui. Sed magna orci, accumsan nec, viverra non, pharetra.</p>
            <!--/lorem-->
        </div>
    </div>

    <h1>Auto fit by adjusting the font-size using Javascript</h1>   
    <div class="box" id="box1">
        <div class="content">
            <!--lorem--> <p>Mauris aliquam mauris ut tortor. Pellentesque
            tincidunt mattis nibh. In id lectus eu magna vulputate ultrices. Aliquam
            interdum varius enim. Maecenas at mauris. Sed sed nibh. Nam non turpis.
            Maecenas fermentum nibh in est. Pellentesque habitant morbi tristique
            senectus et netus et malesuada fames ac turpis egestas.</p>

            <p>Duis sagittis fermentum nunc. Nullam elementum erat. Quisque dapibus, augue
            nec dapibus bibendum, velit enim scelerisque sem, accumsan suscipit lectus odio
            ac justo. Fusce in felis a enim rhoncus placerat. Cras nec eros et mi egestas
            facilisis. In hendrerit tincidunt neque. Maecenas tellus. Fusce sollicitudin
            molestie dui. Sed magna orci, accumsan nec, viverra non, pharetra.</p>
            <!--/lorem-->
        </div>
    </div>

    </body>
</html>