How are you generating the PDF, via a parameter in the querystring? Something like index.cfm?page=foo&format=pdf? If you aren't, you could easily add a parameter like that, then in your CFM:
<link href="/css/mainStyleSheet.css" rel="stylesheet" type="text/css">
<cfif structKeyExists(url, "format") AND url.format EQ "pdf">
<link href="/css/pdfStyleSheet.css" rel="stylesheet" type="text/css">
</cfif>
pdfStyleSheet.css would contain only the CSS overrides for the PDF.
How to Convert HTML + CSS to PDF
Using CSS for print media (pdf) - HTML & CSS - SitePoint Forums | Web Development & Design Community
So my PDF looks different than the same HTML CSS in website format. Anybody got a clue what might cause this? margin and padding is 0 for both
HTML to print pdf CSS - Stack Overflow
Videos
Hello everybody,
I want to build a custom resume (CV) in HTML with CSS, but I want in the end to be able to also send it as a pdf file. Do you have any suggestions on how can I convert a HTML and CSS page to a PDF? I will respect the A4 page size when creating the HTML file.
Thanks in advance! Mihai
The black text is an <h4> and the grey text is a <p> that lives inside a <div>. There is absolutely 0 margin and padding between any of these objects. I tried googling and asking chatGPT, found nothing, maybe I didn't know what to search.
@media print executes the code only for the print mode. So anything you include inside this is not affected in the normal browser mode. So you can get rid of the position: fixed; in the header only for print mode so it doesn't behave that way even in the print mode.
Fixed positioning takes an element out of the document flow, so no fiddling the element will work.
JSFiddle updated
If you want the position: fixed then all you can do is push the <main> content down only for print mode.
main{ margin-top: 5cm; } //probably more than what you had given '2cm'
Even this can't help you much because in the second page since you have made your header fixed(its out of the document flow), the overflowing contents will think the header doesn't exist and continue as usual giving you an overlapped effect.
you can use completely JavaScript to print the particular division in your page.here we are using simple swapping logic between original content and particular division.if you want entire page, pass entire page division id.
<script type="text/javascript">
function printContent() {
var printContents = document.getElementById("list${MACRO}TopDiv").innerHTML;
var originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
}
</script>
list${MACRO}TopDiv - this is your division which you want to print