A bit tricky to automate, but might help.
text = StringTake[ExampleData[{"Text", "Prufrock"}], {226, 1252}];
columntext1 = StringTake[text, 450];
columntext2 = StringDrop[text, 408];
column1 =
Graphics[{White, Rectangle[{0, 0}, {170, 240}], Black,
Inset[TextCell[columntext1, LineSpacing -> {0, 16},
TextJustification -> 1], {0, 240}, {Left, Top}, {170,
Automatic}]}, PlotRange -> {{0, 170}, {0, 240}},
BaseStyle -> {FontFamily -> "Times", FontWeight -> "Plain",
FontSize -> 14}];
column2 =
Graphics[{White, Rectangle[{0, 0}, {330, 179}], Black,
Inset[TextCell[columntext2, LineSpacing -> {0, 16},
TextJustification -> 1], {0, 179}, {Left, Top}, {330,
Automatic}]}, PlotRange -> {{0, 330}, {0, 179}},
BaseStyle -> {FontFamily -> "Times", FontWeight -> "Plain",
FontSize -> 14}];
image = ExampleData[{"TestImage", "Couple2"}];
clippedimage =
Graphics[{Blue, Rectangle[{0, 0}, {150, 218}],
Inset[image, {95, 100}, {Center, Center}, {260, 260}]},
PlotRange -> {{0, 150}, {0, 218}}, ImageSize -> 150];
Graphics[{White, Rectangle[{0, 0}, {330, 400}],
Inset[clippedimage, {75, 290}, {Center, Center}, {150, 218}],
Inset[column1, {245, 280}, {Center, Center}, {170, 240}],
Inset[column2, {165, 85}, {Center, Center}, {330, 179}]},
PlotRange -> {{0, 330}, {0, 400}}, ImageSize -> 330]