Forum Feature requests

How to force long text/URLs to wrap

web559
I have a document in which long URLs are carrying on past the margins. Prince-linebreak-magic (auto) is not helping, because the URLs have long stretches without slashes. The following CSS methods, though they fix the problem in the browser, seem to have no effect on Prince's PDF output.
	white-space: pre;           /* CSS 2.0 */
	white-space: pre-wrap;      /* CSS 2.1 */
	white-space: pre-line;      /* CSS 3.0 */
	white-space: -pre-wrap;     /* Opera 4-6 */
	white-space: -o-pre-wrap;   /* Opera 7 */
	white-space: -moz-pre-wrap; /* Mozilla */
	white-space: -hp-pre-wrap;  /* HP Printers */
	word-wrap: break-word;      /* IE 5+ */


Furthermore, this trick from another post in this forum (http://www.princexml.com/bb/viewtopic.php?f=3&t=2461) isn't having any effect:
.myselector a {
    prince-text-replace: '.' '.\200B';
    prince-text-replace: '-' '-\200B'; /* I also tried this */
}


Manually inserting the code for a zero-width space (​) did work, but it's obviously not ideal. Is there a way to achieve this wrapping that I am overlooking? Is there something I am missing in Prince's handling of the white-space or word-wrap property? Is there a favored javascript method of achieving this?

An example of a URL that's not obeying margins is https://thisismyurl.example.com/zzzzzz/app?action=DocumentDisplay&crawlid=1&srctype=smi&srcid=3Badf15&doctype=cite&docid=27+Blablabla+Urb.+L.J.+481&key=814aslfksdlfksadfs1cf9890e40eb21a62bd5d7755470
mikeday
Breaking after ampersands might help for this example:
.myselector a {
    prince-text-replace: '&' '&\200B';
}
Note that if you want multiple replacements, you need to combine them in one property, like this:
.myselector a {
    prince-text-replace: '&' '&\200B' '-' '-\200B'
}
snowrail
I had hoped that "prince-linebreak-magic: auto;" would have dealt with this but unless I'm using it wrong, it doesn't. In the future I'd like to see this tag force this.

Anyway, breaking after ampersands does not fix this issue in all conditions. In my work, I also wrote a preprocessor that manually inserts zero-width spaces into links, every 16 characters. This seems to work perfectly and is easy to do, but I agree with the OP should be automatic.
mikeday
This can be done with JavaScript in Prince 8.0, although it is questionable whether printing very long URLs has any value. If the PDF files will not be printed, then the URLs can be left as regular links, viewable on mouse over.