This is just a partial, exploratory answer to get feedback. This is the start of an approach that just generates the header, which could then be copy-pasted to some other context where the report lives.
FieldLabel[label_] := Style[label, Bold, 12];
FieldValue[value_] := Style[value, 14, FontFamily -> "Arial"];
Field[label_, value_, width_] :=
Grid[
{{FieldLabel[label]}, {FieldValue[value]}},
Alignment -> {Left, Center, {2, 1} -> Center}, ItemSize -> width];
Grid[
{{TBD, Field["Job", "1529085", 20], TBD},
{SpanFromAbove, Field["Project", "West Bridgeport", 20], TBD},
{SpanFromAbove, Field["Client", "Com-Ex Consultants, LLC", 20], TBD}},
Dividers -> All]
Considerations:
- This demonstrates a way to generate the output programmatically with consistent/pre-defined styling. You can tweak the styling however you like. This let's you reuse this header "template".
- If your report is actually in Mathematica, then consider just creating the header as a cell.
- Otherwise, what is the context for your report?
- Or, asking another way, what format will this eventually need to be in?
- If this is heading in the right direction, I'll update to flesh out more of the content.
Update
I'm inferring from the comment from OP that there is a Mathematica notebook that constitutes the report and that what is wanted is for a customer header to be shown when the notebook is printed.
Here is one way you can do that (there will probably be some nitpicky issues to figure out as you go along):
- Execute the code I posted above
- Click on the output cell (just so that's where focus is)
- Do Shift-Command-E (I'm on a Mac, I'm not sure if the command is the same on other platforms, but it's the "Show Expression" command in the Cell menu). This will show you the raw cell expression.
- Select the entire cell expression and copy it to the clipboard
- Open the option inspector (Shift-Command-O on mac)
- Set the scope to be your notebook that needs the header
- Find the PageHeaders option (you can search for it)
- Click on the value, select everything that's there, and delete it.
- Type this literally (this is just for convenience to make things easier to see):
{{None,None,None},{None,None,None}}
- Now, replace the second "None" in each sublist and copy-replace it with the cell expression you have on the clipboard.
Now you can test by doing a print preview. I've never done a header this complicated, so there will probably be a lot of tweaking necessary. You'll also have to work in a CounterBox for the page number.