There may be a LaTeX package for you, but I'm more of a TeX person, so I tried to come up with a TeX solution (not always the best idea to mix simple TeX with LaTeX, but I think I'm working).
Try it. Block 255 is a window register in which TeX places the contents of the page during page output. What I did is done using the existing output procedure and changed it to insert in field 255: an infinite set with a width and width of 0 lines containing a rule that is page height, 0.4 thick and with luck, half an inch to the left. After this rule, the existing contents of block 255 are added. Then I call the previous output procedure, which displays the page (which now includes the rule), as well as the headers and footers.
\newtoks\oldoutput \oldoutput=\expandafter{\the\output}% \output{% \setbox255\vbox to 0pt{% \hbox to 0pt{% \vsize\ht255% \vbox to \ht255{% \vss \hbox to -0.5in{% \hss \vrule height \ht255 width 0.4pt% }% }\hss }\vss \box255% }% \the\oldoutput }%
Place it in front of your \begin{document} command. This may not solve your problem completely, but hopefully you should start. Here is a great page to learn about TeX primitives and built-in stuff.
dreamlax
source share