This more a non-answer than an answer, but anyway...
I think that what you want is not possible unless some additional constraints are made on the text which "flows" into that page.
Imagine that the last page before the one with the picture ends with a paragraph which does not fit in the page, and thus TeX decides to break it at some appropiate line. The width of that paragraph should then change in the middle of the paragraph, because the first half of it (in one page) is "full width", but the second half is going to appear in the page with the picture, and thus it should be "half-width".
So your problem is related to this question, about changing the width of a paragraph in the middle of it. And the answer there concludes that this is not something that TeX could do. Perhaps LuaTeX, but even then it would be hard.
The problem is that the height of the paragraph depends on its width, so TeX has to "typeset in his mind" (in fact in a box) the whole paragraph with a given width, to know its height and thus if it fits in the page, and then break at the appropiate line, but then it cannot "undo" the already done typesetting (in theory the box could be unboxed, but not easily, see the aforementioned question).
You can see this effect in the following naive approach (which does not work, but it is close).
The following code uses \afterpage
to wait until the current page is full, and then insert commands to draw the picture and reduce the \hsize
for the next page. It also inserts another \afterpage
in the next page, to restore the altered \hsize
:
\documentclass[a4paper]{article}
\usepackage{tikz}
\usepackage{afterpage}
\usetikzlibrary{calc}
\usepackage{kantlipsum}
\usepackage[a4paper,left=1in,right = 1in,top = 1in,bottom=1in]{geometry}
%\pagestyle{empty}
\begin{document}
\kant[1-3]
\kant[1-3]
% I want the picture in the next page:
\afterpage{\clearpage%
\global\hsize=.5\linewidth%
\afterpage{\clearpage\global\hsize=2\hsize}%
\begin{tikzpicture}[remember picture,overlay]
\node[anchor =north east, inner sep=0pt,outer sep=0pt]
at (current page.north east)
{\includegraphics[width=0.45\paperwidth, height=\paperheight]
{example-image-a}};
\end{tikzpicture}%
}
\kant[1-3]
\kant[1-3]
\kant[1-3]
\kant[1-3]
\kant[1-3]
\end{document}
Note how the change of width happens, but not before the "current paragraph" is finished:
-- --
minipage
of text with either one page or manual page breaking?geometry
package andbackground
package or thechangepage
package and thebackground
package to achieve what you want. Theeso-pic
package is another possiblity.