This is a possibility using TikZ
everyshi
and the invert clipping trick used in @Jake's answer over here: How can I invert a 'clip' selection within TikZ?
This is the resulting code:
\documentclass{article}
\usepackage{everyshi}
\usepackage{tikz}
\usetikzlibrary{calc}
\def\nodrmstart{\tikz[remember picture, overlay]\coordinate(nodrms);}
\def\nodrmend{\tikz[remember picture, overlay]\coordinate(nodrme);}
\EveryShipout{%
\begin{tikzpicture}[overlay, remember picture]
\tikzstyle{reverseclip}=[insert path={(0,0) --
++(\textwidth,0) --
++(0,-\textheight) --
++(-\textwidth,0) --
(0,0)}
]
\begin{pgfinterruptboundingbox}
\path[clip] let \p1=(nodrms), \p2=(nodrme) in (\textwidth,\y1) -- (0,\y1) -- (0,\y2) -- (\textwidth,\y2) -- cycle [reverseclip];
\end{pgfinterruptboundingbox}
\pgfmathsetseed{2}
\foreach \i in {1,2,...,200}{
\pgfmathsetlengthmacro{\yloc}{random(0,int(\the\textheight))}
\pgfmathsetlengthmacro{\xloc}{random(0,int(\the\textwidth))}
\pgfmathsetlengthmacro{\rad}{random(5,30)}
\draw (\xloc, -\yloc) circle[radius=\rad];
}%
\end{tikzpicture}
}
\begin{document}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida
mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna.
Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus
et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra
metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus
eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium
quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean
faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Cur-
abitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue
eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim
rutrum.
Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi
auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et,
tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse
ut massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus et
magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt urna.
Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris.
Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at,
tincidunt tristique, libero. Vivamus viverra fermentum felis. Donec nonummy
pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa
ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Mae-
cenas lacinia. Nam ipsum ligula, eleifend at, accumsan nec, suscipit a, ipsum.
Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim.
Praesent euismod nunc eu purus. Donec bibendum quam in tellus. Nullam cur-
sus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum
pellentesque felis eu massa.
Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo vitae lacus
tincidunt ultrices. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In
hac habitasse platea dictumst. Integer tempus convallis augue. Etiam facilisis.
Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed
gravida sollicitudin, felis odio placerat quam, ac pulvinar elit purus eget enim.
Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus quis tortor vitae
risus porta vehicula.
Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a fau-
cibus semper, leo velit ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum
diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue
quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis
porttitor. Vestibulum porttitor. Nulla facilisi. Sed a turpis eu lacus commodo
facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, et
vehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim
ut augue. Cras ac magna. Cras nulla. Nulla egestas. Curabitur a leo. Quisque
egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer.
Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit amet,
laoreet vitae, arcu. Aenean faucibus pede eu ante. Praesent enim elit, rutrum
at, molestie non, nonummy vel, nisl. Ut lectus eros, malesuada sit amet, fer-
mentum eu, sodales cursus, magna. Donec eu purus. Quisque vehicula, urna sed
ultricies auctor, pede lorem egestas dui, et convallis elit erat sed nulla. Donec
luctus. Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies
non, pharetra in, velit. Integer arcu est, nonummy in, fermentum faucibus,
egestas vel, odio.
Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio. Sed
vehicula hendrerit sem. Duis non odio. Morbi ut dui. Sed accumsan risus eget
odio. In hac habitasse platea dictumst. Pellentesque non elit. Fusce sed justo
eu urna porta tincidunt. Mauris felis odio, sollicitudin sed, volutpat a, ornare
ac, erat. Morbi quis dolor. Donec pellentesque, erat ac sagittis semper, nunc
dui lobortis purus, quis congue purus metus ultricies tellus. Proin et quam.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
hymenaeos. Praesent sapien turpis, fermentum vel, eleifend faucibus, vehicula
eu, lacus.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames
ac turpis egestas. Donec odio elit, dictum in, hendrerit sit amet, egestas sed, leo.
Praesent feugiat sapien aliquet odio. Integer vitae justo. Aliquam vestibulum
fringilla lorem. Sed neque lectus, consectetuer at, consectetuer sed, eleifend ac,
lectus. Nulla facilisi. Pellentesque eget lectus. Proin eu metus. Sed porttitor.
In hac habitasse platea dictumst. Suspendisse eu lectus. Ut mi mi, lacinia sit
amet, placerat et, mollis vitae, dui. Sed ante tellus, tristique ut, iaculis eu,
malesuada ac, dui. Mauris nibh leo, facilisis non, adipiscing quis, ultrices a, dui.
\nodrmstart Morbi luctus, wisi viverra faucibus pretium, nibh est placerat odio, nec com-
modo wisi enim eget quam. Quisque libero justo, consectetuer a, feugiat vitae,
porttitor eu, libero. Suspendisse sed mauris vitae elit sollicitudin malesuada.
Maecenas ultricies eros sit amet ante. Ut venenatis velit. Maecenas sed mi eget
dui varius euismod. Phasellus aliquet volutpat odio. Vestibulum ante ipsum \nodrmend
primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque sit
amet pede ac sem eleifend consectetuer. Nullam elementum, urna vel imperdiet
sodales, elit ipsum pharetra ligula, ac pretium ante justo a nulla. Curabitur
tristique arcu eu metus. Vestibulum lectus. Proin mauris. Proin eu nunc eu
urna hendrerit faucibus. Aliquam auctor, pede consequat laoreet varius, eros
tellus scelerisque quam, pellentesque hendrerit ipsum dolor sed augue. Nulla
nec lacus.
Suspendisse vitae elit. Aliquam arcu neque, ornare in, ullamcorper quis,
commodo eu, libero. Fusce sagittis erat at erat tristique mollis. Maecenas
sapien libero, molestie et, lobortis in, sodales eget, dui. Morbi ultrices rutrum
lorem. Nam elementum ullamcorper leo. Morbi dui. Aliquam sagittis. Nunc
placerat. Pellentesque tristique sodales est. Maecenas imperdiet lacinia velit.
Cras non urna. Morbi eros pede, suscipit ac, varius vel, egestas non, eros.
Praesent malesuada, diam id pretium elementum, eros sem dictum tortor, vel
consectetuer odio sem sed wisi.
\end{document}
There will be problems when there are multiple rectangles to be excluded on the same page and for some reason the \EveryShipout
does not operate on the first page. It will work on subsequent pages though. The randomized circles drawn are just an example, you can add any kind of randomized shape in the for loop, the seed ensures uniformity over different compilations. The code creates clipping rectangles using the y
coordinates set by \nodrmstart
and \nodrmend
. The multiple rectangles on the same page issue, could be fixed by creating a list of pairs and iterating over those in the clipping path. It will not be trivial though. The resulting second page looks like this:

Note that the circles are drawn all the way down to the bottom of the page, since the \textheight
is used to draw them.