This commit is contained in:
+18
-2
@@ -1,11 +1,19 @@
|
|||||||
<div id="contact">
|
<div id="contact">
|
||||||
<table id="contact-table">
|
<!-- Pretty 3 column table for humans -->
|
||||||
|
<table id="contact-table" class="web-only">
|
||||||
<tr>
|
<tr>
|
||||||
<td style="text-align: left">4150 W 111th CIR<br>Westminter, CO 80031<br>USA</td>
|
<td style="text-align: left">4150 W 111th CIR<br>Westminter, CO 80031<br>USA</td>
|
||||||
<td style="text-align: center"><h1 style="margin: 0;">Eric W Phillips</h1></td>
|
<td style="text-align: center"><h1 style="margin: 0;">Eric W Phillips</h1></td>
|
||||||
<td style="text-align: right">eric@ewpt3ch.dev<br>linkedin.com/in/ewpt3ch/<br>3034351478</td>
|
<td style="text-align: right">eric@ewpt3ch.dev<br>linkedin.com/in/ewpt3ch/<br>3034351478</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<!-- ATS simple linear for parsing -->
|
||||||
|
<div class="ats-only">
|
||||||
|
<h1>Eric Phillips</h1>
|
||||||
|
<p>4150 W 111th Circle, Westminster, CO 80031<br>
|
||||||
|
303-435-1478 | eric@ewpt3ch.dev | linkedin.com/in/ewpt3ch/</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="summary">
|
<div id="summary">
|
||||||
@@ -18,7 +26,8 @@ Technical professional with 20+ years of business ownership and operations exper
|
|||||||
<h3>Work Experience</h3>
|
<h3>Work Experience</h3>
|
||||||
|
|
||||||
<div class="job-entry">
|
<div class="job-entry">
|
||||||
<table id="experience-table">
|
<!-- Pretty 3 column table for humans -->
|
||||||
|
<table id="experience-table" class="web-only">
|
||||||
<tr>
|
<tr>
|
||||||
<td>IT, Data Analyst, Driver Trainer<br>Management Team</td>
|
<td>IT, Data Analyst, Driver Trainer<br>Management Team</td>
|
||||||
<td><b>JBL Logistics INC</b><br>Broomfield, CO, USA</td>
|
<td><b>JBL Logistics INC</b><br>Broomfield, CO, USA</td>
|
||||||
@@ -26,6 +35,13 @@ Technical professional with 20+ years of business ownership and operations exper
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<!-- ATS simple linear for parsing -->
|
||||||
|
<div class="ats-only">
|
||||||
|
<h3>IT, Data Analyst, Driver Trainer | Management Team</h3>
|
||||||
|
<p><strong>JBL Logistics INC</strong>Broomfield, CO<br>
|
||||||
|
September 2019 - November 2025</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
Transportation company servicing FedEX Ground Contract
|
Transportation company servicing FedEX Ground Contract
|
||||||
|
|
||||||
Responsibilities included:
|
Responsibilities included:
|
||||||
|
|||||||
+29
-16
@@ -21,6 +21,7 @@ def main():
|
|||||||
# get the files
|
# get the files
|
||||||
if not srcdir.is_dir():
|
if not srcdir.is_dir():
|
||||||
return f'Error: "{srcdir}" is not a directory or does not exist'
|
return f'Error: "{srcdir}" is not a directory or does not exist'
|
||||||
|
|
||||||
filelist = list(srcdir.glob("*.md"))
|
filelist = list(srcdir.glob("*.md"))
|
||||||
|
|
||||||
# mk destdir if not exist
|
# mk destdir if not exist
|
||||||
@@ -29,32 +30,44 @@ def main():
|
|||||||
|
|
||||||
# process filelist
|
# process filelist
|
||||||
for infile in filelist:
|
for infile in filelist:
|
||||||
# create filenames
|
|
||||||
outfile = destdir / infile.name
|
|
||||||
outfile = outfile.with_suffix(".html")
|
|
||||||
outfilepdf = outfile.with_suffix(".pdf")
|
|
||||||
|
|
||||||
# md -> html
|
|
||||||
print(f"processing '{infile}' to html")
|
print(f"processing '{infile}' to html")
|
||||||
|
|
||||||
|
# Read markdown once
|
||||||
with infile.open(mode="r", encoding="utf-8") as f:
|
with infile.open(mode="r", encoding="utf-8") as f:
|
||||||
mdsrc = f.read()
|
mdsrc = f.read()
|
||||||
rawhtml = mdtohtml(mdsrc)
|
rawhtml = mdtohtml(mdsrc)
|
||||||
|
|
||||||
# html -> resume.template
|
base_name = infile.stem
|
||||||
print("processing rawhtml through resume.template")
|
|
||||||
template = j2_env.get_template("resume.template")
|
|
||||||
pdfhtml = template.render(name=name, content=rawhtml, download="")
|
|
||||||
|
|
||||||
print(f"processing html to '{outfilepdf}'")
|
# pretty pdf
|
||||||
htmltopdf(pdfhtml, outfilepdf)
|
print("Generating web PDF...")
|
||||||
|
web_template = j2_env.get_template("resume-web.template")
|
||||||
|
web_html = web_template.render(name=name, content=rawhtml)
|
||||||
|
web_pdf_path = destdir / f"{base_name}-web.pdf"
|
||||||
|
htmltopdf(web_html, web_pdf_path)
|
||||||
|
|
||||||
print(f"processing pdfhtml to '{outfile}'")
|
# ats friendly pdf
|
||||||
|
ats_template = j2_env.get_template("resume-ats.template")
|
||||||
|
ats_html = ats_template.render(name=name, content=rawhtml)
|
||||||
|
ats_pdf_path = destdir / f"{base_name}-ats.pdf"
|
||||||
|
htmltopdf(ats_html, ats_pdf_path)
|
||||||
|
|
||||||
|
# generate web html with download bar
|
||||||
download_template = j2_env.get_template("download.template")
|
download_template = j2_env.get_template("download.template")
|
||||||
download_bar = download_template.render(pdffile=outfilepdf.name)
|
download_bar = download_template.render(
|
||||||
pubhtml = template.render(content=rawhtml, download=download_bar)
|
web_pdf=f"{base_name}-web.pdf", ats_pdf=f"{base_name}-ats.pdf"
|
||||||
with outfile.open(mode="w", encoding="utf-8") as f:
|
)
|
||||||
|
|
||||||
|
pubhtml = web_template.render(name=name, content=rawhtml, download=download_bar)
|
||||||
|
|
||||||
|
html_path = destdir / f"{base_name}.html"
|
||||||
|
with html_path.open(mode="w", encoding="utf-8") as f:
|
||||||
f.write(pubhtml)
|
f.write(pubhtml)
|
||||||
|
|
||||||
|
print(f"Created: {web_pdf_path.name}")
|
||||||
|
print(f"Created: {ats_pdf_path.name}")
|
||||||
|
print(f"Created: {html_path.name}")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<div id="download-bar" style="position: sticky; top: 0; background: #f5f5f5; padding: 10px; text-align: center; border-bottom: 1px solid #ddd; z-index: 100;">
|
<div id="download-bar" style="position: sticky; top: 0; background: #f5f5f5; padding: 10px; text-align: center; border-bottom: 1px solid #ddd; z-index: 100;">
|
||||||
Download:
|
Download:
|
||||||
<a href="/resume/{{ pdffile }}">Resume (PDF)</a>
|
<a href="/resume/{{ web_pdf }}">Resume (web PDF)</a>
|
||||||
|
<a href="/resume/{{ ats_pdf }}">Resume (ats-friendly PDF)</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
@page { size: letter; margin: 0.75in; }
|
||||||
|
|
||||||
|
/* Hide web version */
|
||||||
|
.web-only { display: none !important; }
|
||||||
|
.ats-only { display: block; }
|
||||||
|
|
||||||
|
/* Simple, ATS-friendly styling */
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
font-size: 11pt;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 18pt;
|
||||||
|
margin: 0 0 5pt 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 12pt;
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 12pt 0 6pt 0;
|
||||||
|
border-bottom: 1pt solid #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 11pt;
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 8pt 0 2pt 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p { margin: 4pt 0; }
|
||||||
|
|
||||||
|
ul {
|
||||||
|
margin: 4pt 0;
|
||||||
|
padding-left: 20pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
li { margin-bottom: 2pt; }
|
||||||
|
|
||||||
|
/* Center contact info */
|
||||||
|
#contact p {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{{ content }}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
@page { size: letter; margin: 0.5in 0.75in; }
|
||||||
|
|
||||||
|
/* Hide ATS version */
|
||||||
|
.ats-only { display: none !important; }
|
||||||
|
.web-only { display: block; }
|
||||||
|
|
||||||
|
/* Your current beautiful styling */
|
||||||
|
#contact-table {
|
||||||
|
width: 100%;
|
||||||
|
table-layout: fixed;
|
||||||
|
/* ... rest of your styling ... */
|
||||||
|
}
|
||||||
|
|
||||||
|
.experience-table {
|
||||||
|
width: 100%;
|
||||||
|
table-layout: fixed;
|
||||||
|
/* ... */
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{{ content }}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user