I'd like to print a collection of digital images in a way that would make it easy for someone to manually annotate metadata (people, locations and events).

I've scanned a large number of old family photos and I'm looking for a way to hand a printout to a technophobe family member and have them write down information about who and what is in each photo. Ideally, I'd have multiple images down one side of a page with place to write on the other side, and the photo's file name would be printed so that the metadata could be associated back with the image file later.

Applications that will print a "contact sheet" of multiple images that I've seen generally don't seem to be configurable to leave white space for the annotation. (Similarly, there is a "photo album" feature in PowerPoint with the same shortcoming.)

Any thoughts?

  • \$\begingroup\$ Is there a reason not to use Excel, Word or similar programs? \$\endgroup\$ Commented Apr 21, 2021 at 2:10
  • \$\begingroup\$ Certainly open to using Word/Excel or similar, but haven't seen existing template/macro to import 1000 jpegs and set up the page format. So, at least as far as I've been able to find, that's either a lot of manual work, or some different work creating automation to do it. \$\endgroup\$
    – Will M
    Commented Apr 21, 2021 at 4:55
  • \$\begingroup\$ Fifteen on a page, three pages a day, you are done by the end of May. \$\endgroup\$ Commented Apr 21, 2021 at 13:21

1 Answer 1


If you are comfortable working with HTML, a quick table could work:

<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8" />
        * { border-collapse: collapse; }
        tr { page-break-inside: avoid; }
        td { border-style: solid;  width: 50%; vertical-align: top; }
        img { width: 100%; }
        for ( let num=1; num<=6; ++num ) {
            document.write( '<tr> <td> <img src="file:/data/Scans/' + ("0000"+num).slice(-4) + '.jpeg" /> </td> <td>Photo ' + num + ' Details:</td> <tr>\n' )

That will generate a table like:

<tr> <td><img src="file:/data/Scans/0001.jpeg"></td> <td>Photo 1 details:</td> </tr>
<tr> <td><img src="file:/data/Scans/0002.jpeg"></td> <td>Photo 2 details:</td> </tr>
<tr> <td><img src="file:/data/Scans/0003.jpeg"></td> <td>Photo 3 details:</td> </tr>
<tr> <td><img src="file:/data/Scans/0004.jpeg"></td> <td>Photo 4 details:</td> </tr>
<tr> <td><img src="file:/data/Scans/0005.jpeg"></td> <td>Photo 5 details:</td> </tr>
<tr> <td><img src="file:/data/Scans/0006.jpeg"></td> <td>Photo 6 details:</td> </tr>

Which will look like:

enter image description here

  • \$\begingroup\$ Thanks. This is exactly the idea. I'm not sure my HTML skills will be quite enough to refine this as needed (e.g. to deal with page breaks and different jpg naming convention) but I can definitely work with this if a more "off the shelf" solution doesn't appear. And, per the comment on my original post, this same concept could be used to develop a Word or Excel macro along the same lines. \$\endgroup\$
    – Will M
    Commented Apr 21, 2021 at 5:04
  • \$\begingroup\$ @WillM, I've added the missing line of style to avoid page breaks within rows when printing. \$\endgroup\$ Commented Apr 21, 2021 at 13:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.