1

So I am building a PDF in Visualforce and have came across an issue I am not sure how to handle. Is there a way to count the number of characters in the PDF?

My requirement is if the text goes over the page, put that section on the next page.

So as you can see the section below continues to the next page. Is there a way to have some logic which says: if the page goes over - page break however if it does not go over do not page break?

enter image description here

  • if the text is Static then you can manually do the page break based on section. – Tushar Sharma May 4 '18 at 9:29
  • The text is not static. It can vary in length – M guy May 4 '18 at 9:31
4

Use page-break-inside: avoid to force the sections to not flow over page boundaries. What follows is a Visualforce page that demonstrates this CSS:

<apex:page renderAs="pdf">
    <p style="page-break-inside: avoid;">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus a eros malesuada, elementum risus sit amet, vulputate nisi. Morbi varius massa vel ipsum fringilla imperdiet. Ut iaculis malesuada magna. Nunc at faucibus sapien. Quisque risus enim, consequat nec lacinia et, viverra in orci. Sed a est vel est cursus elementum sed nec lorem. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Ut mattis pellentesque tellus id ultrices.
    </p>
    <p style="page-break-inside: avoid;">
        Praesent aliquam leo at dui rhoncus, ut gravida dui faucibus. Maecenas molestie nisl pellentesque, laoreet nisi sit amet, sodales justo. In mollis metus neque, sed dignissim mauris tempor ut. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Duis vitae risus ut ante ultricies blandit vel id quam. Etiam vitae sodales magna. Morbi condimentum scelerisque tempus. Integer in massa non est auctor condimentum a ut orci. Vivamus dapibus arcu lacus, eget dapibus nisl molestie vitae. Mauris in iaculis massa, vel elementum orci. Proin tincidunt consectetur ornare.
    </p>
    <p style="page-break-inside: avoid;">
        Integer maximus enim ante, at euismod ipsum ultricies sed. Aenean dapibus rutrum ligula, in viverra erat suscipit at. Praesent volutpat arcu orci. Aenean ac mollis turpis, in venenatis elit. Sed quis ante condimentum, tempus purus ornare, cursus nisl. Morbi dignissim ex nec elit rhoncus, vel laoreet leo placerat. Praesent egestas magna risus, vel lacinia est rhoncus sit amet. Nam hendrerit aliquet orci in suscipit. Praesent at suscipit nunc. Phasellus sit amet tellus nec nisl feugiat tincidunt. Mauris pharetra sollicitudin mauris nec commodo. Sed efficitur, dolor at porttitor luctus, justo est gravida lectus, ac varius dolor nunc vel metus.
    </p>
    <p style="page-break-inside: avoid;">
        Nullam auctor auctor libero porta eleifend. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ornare blandit augue, sit amet ullamcorper neque aliquet ut. Vestibulum fringilla eleifend ipsum. Nulla a arcu ut dui fringilla ullamcorper. Aliquam nisl dui, sollicitudin a justo eu, aliquam vestibulum nisi. Duis tempor augue congue, blandit lacus efficitur, aliquet mi.
    </p>
    <p style="page-break-inside: avoid;">
        Fusce eu nulla leo. Proin sollicitudin et est quis ultricies. Vestibulum sagittis urna nec massa volutpat luctus. Aliquam urna est, suscipit ac fermentum in, consectetur ut leo. Maecenas commodo neque consectetur odio eleifend auctor. Etiam id libero venenatis, lacinia ante et, condimentum ligula. Duis laoreet accumsan nisi, maximus blandit sem lacinia at. Maecenas ut dui ut ipsum porta tempus. Vivamus massa nisi, tincidunt in ante at, sagittis finibus neque. Maecenas venenatis id libero vel volutpat. Aliquam sit amet odio bibendum, aliquet ex id, vestibulum erat. Cras tincidunt, leo ut varius ultrices, odio risus efficitur lorem, at vulputate neque enim eget eros. Sed mattis massa hendrerit eros varius, sed bibendum justo porta. Sed tristique pharetra sem vel finibus. Sed porttitor eleifend tellus non ullamcorper.
    </p>
    <p style="page-break-inside: avoid;">
        Etiam finibus egestas molestie. Mauris at dui non nunc porttitor rhoncus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Maecenas sapien libero, congue a eleifend id, lacinia vel libero. Pellentesque sit amet consequat turpis. Suspendisse potenti. Aenean nisi magna, sodales a sem ornare, maximus aliquam nisl. Vivamus convallis, turpis sed vestibulum eleifend, felis orci consectetur libero, sit amet tempus lorem dolor sed massa. Praesent vel blandit lectus. Proin aliquet ut leo et commodo. Aliquam interdum odio at massa ornare tincidunt. Morbi tincidunt maximus malesuada. Praesent in felis vitae nunc malesuada rhoncus. Pellentesque convallis libero ac lectus tempor, eu malesuada lacus porta.
    </p>
    <p style="page-break-inside: avoid;">
        Duis eget ex vel dolor efficitur sagittis. Sed aliquet diam nulla, non consectetur nulla tristique vel. Suspendisse dignissim, orci nec interdum viverra, est eros tincidunt elit, eu gravida ante lectus sit amet nunc. Ut sagittis tempus massa sit amet luctus. Etiam tellus elit, imperdiet ac sem nec, finibus imperdiet sapien. Nam ante libero, pretium sed nisi vitae, mattis posuere orci. Integer auctor sem ut augue venenatis, nec laoreet libero luctus. Aenean eget tortor elit. Aenean vitae nulla fringilla, pretium diam euismod, congue magna.
    </p>
    <p style="page-break-inside: avoid;">
        Aenean porttitor in ipsum at maximus. Curabitur tortor eros, elementum eget arcu sit amet, dapibus tristique diam. Vestibulum tincidunt augue nunc, sed semper urna sagittis eget. Duis condimentum nisi pulvinar mauris porttitor bibendum. Cras egestas placerat lorem, nec maximus felis tincidunt at. Duis feugiat leo ac enim facilisis lacinia. Aliquam nisi ante, auctor non vulputate et, dapibus vitae lorem. Nam massa lectus, blandit vitae mattis vitae, varius ut augue. Donec laoreet elementum finibus. Curabitur dignissim dapibus malesuada.
    </p>
    <p style="page-break-inside: avoid;">
        Aliquam scelerisque sapien sed tristique rhoncus. Praesent ac nulla lacus. Nulla mattis mollis arcu, sed venenatis mi dignissim ut. Nunc vitae urna rutrum, rutrum massa nec, pretium nulla. Aliquam id risus ut arcu dapibus ullamcorper auctor dictum quam. Nulla ac risus nibh. Ut nunc mi, gravida quis eleifend ut, auctor sed sapien. Integer nibh diam, tristique auctor ligula in, convallis ornare erat. Vestibulum ac mattis magna, a elementum turpis. Fusce posuere nisi vel dolor posuere pharetra. In hac habitasse platea dictumst. Donec dignissim arcu enim, vitae tincidunt sapien porta sit amet. Nunc justo dolor, vestibulum eu sapien in, porta mollis metus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Sed blandit sem vel nisi rhoncus vehicula. Pellentesque ut sem dapibus nunc semper laoreet vestibulum quis mi.
    </p>
    <p style="page-break-inside: avoid;">
        Nullam hendrerit neque scelerisque, luctus sapien vel, aliquet nisi. In tincidunt malesuada odio, non blandit nulla lobortis vitae. Vivamus efficitur sem a urna feugiat laoreet. Etiam a feugiat ex. Mauris ut magna lobortis, porta est vel, lobortis ipsum. Duis quis enim vitae dolor commodo venenatis. Phasellus facilisis vestibulum rhoncus. Mauris eros mi, euismod vitae velit a, finibus mollis erat.
    </p>
</apex:page>

enter image description here

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.