This is the best solution I could think of and it requires a Visualforce page:
<apex:page >
<script>
window.onload = function() {
window.print();
}
</script>
<h1>Congratulations</h1>
<p>This is your new invoice!</p>
</apex:page>
This will render as:

When you close the print popup, you get this:

The <h1> and the <p> tag were put in there purely as test data. The way this works, the page will load and the window.onload event will fire, which will immediately request for the page to be printed. Unfortunately, this will not be a PDF version, but using CSS Media Types, you can style this page using the @media print annotation. Let's take a quick look at that in action:
<apex:page >
<script>
window.onload = function() {
window.print();
}
</script>
<style>
@media print{
h1{
font-size:120px;
}
p{
font-size: 70px;
}
}
</style>
<h1>Congratulations</h1>
<p>This is your new invoice!</p>
</apex:page>
which will render as:

However, when you click cancel, the page will view as:

Notice how the display of the text changed in the first load in the print preview, yet the page itself didn't change. That is the power of @media print. Using Visualforce, HTML, CSS, and Javascript, you can definitely get this all to work. You can strip it down and basically do whatever you want.
The easy thing to then do in order to make this a single click is to simply create a custom button that points to your Visualforce page. The Visualforce page itself will handle all the rest.