to get a guy who's 6' tall in to the frame at a distance of 30 yards (90'):
tan(theta) = opposite/adjacent
so, your lens will need to have a viewing angle of at least tan^-1(opposite/adjacent) for the guy to be in shot.
That's 2* tan^-1(3/90) <- you're calculating the angle to see half of his height and then doubling the result
or ~3.8 degrees.
the 300mm prime lens has angles of view:
on a full frame sensor.
On a full frame, that means that you could either shoot portrait, with a viewing angle of 6deg50, and be fine or shoot landscape with a viewing angle of 4deg35 and be fine.
The sensor in the 7d has a crop factor of approximately 1.6, so:
portrait would give a viewing angle of 6deg50/1.6, or ~4.27 degrees, which would be fine.
landscape would give a viewing angle of 4deg35/1.6, or ~2.86 degrees, which would crop him at about the knees :-)
Or, in the more general case:
angle of view = 2 * tan^-1(sensor dimension/ 2 * focal length)
7D sensor height in landscape = 14.9mm
7D sensor height in portrait = 22.3mm
to get someone in shot,
angle of view >= angle subtended.
angle subtended = 2* tan^-1 (0.5 * their height/how far away they are)
so we solve:
2 * tan^-1(sensor dimension/ 2 * focal length) = 2 * tan^-1(3/distance to subject in feet)
simplifying both sides
sensor dimension/(2 * focal length) = 3/distance to subject in feet
sensor dimension / (3/distance to subject in feet) = 2 * focal length
(sensor dimension * distance got subject in feet) / 3 = 2 * focal length
(sensor dimension * distance to subject in feet) / 6 = focal length
plugging some numbers in:
at 30 yards (90 feet) in portrait orientation (22.3mm):
focal length = (22.3 * 90)/6
focal length = 334mm
so anything shorter than 334mm will be fine.
at 30 yards in landscape orientation:
focal length = (14.9*90)/6
focal length = 224mm
so anything shorter than 224mm will be fine.
Which, happily, agrees with what i said to start with. though, no doubt, i'll have screwed up the math somewhere along the lines!
TLDR version: Using zooms is easier :-)