Naming a template print method properly
I think you're right to be concerned with the names you're using.

I'd start with the name of the base class. CPrintReport strikes me as a rather poor name. First of all, it sounds like a verb phrase (Print Report). Most classes should be nouns. Second, you typically want the name to reflect the fact that it's an abstract base class. Finally, tacking a C onto the beginning of a class name is, frankly, a pretty lousy idea.

I'd probably start with a report namespace, and name this base:

namespace report {    
    class Base {
        // ...
    };    
}


The other reports would derive from it, so you might have something like:

namespace report { 
    class Verification : public Base { 
        // ...
    };

    class Identification : public Base { 
        // ..
    };    
}


Then when you want to print one, your code would be something like:

report::Verification verification_report;
verification_report.print(printer);


As far as the names of the individual functions go, I think the problem is fairly simple: right now, your names basically reflect the mechanics of generating the reports. I'd prefer to see names that reflect the sections of the report they generate instead.

For example, your PrintCommon, PrintCustom and PrintChart might become: PrintIntroduction, PrintDetails, and PrintSummary respectively. Of course, I don't know for sure how your reports are structured, so there might be other names that make more sense, but the basic idea still applies--to the extent possible, base the names on their effect in the final product rather than on the details of how you're implementing the code.