feat: Carbone Word template integration with DOCX merge and LibreOffice PDF conversion

This commit is contained in:
root
2026-07-16 09:03:44 +00:00
parent ffa4655d39
commit 9dc14b0f58
11 changed files with 2696 additions and 3 deletions

View File

@@ -23,6 +23,7 @@
<li><a href="#" class="nav-link" data-page="candidates">Candidates</a></li>
<li><a href="#" class="nav-link" data-page="upload">Upload CV</a></li>
<li><a href="#" class="nav-link" data-page="templates">Templates</a></li>
<li><a href="#" class="nav-link" data-page="carbone">Word Templates</a></li>
<li><a href="#" class="nav-link" data-page="requirements">Requirements</a></li>
<li><a href="#" class="nav-link" data-page="generated">Generated CVs</a></li>
<li><a href="#" class="nav-link" data-page="chat">AI Chat</a></li>
@@ -76,7 +77,38 @@
<div id="templates-list"></div>
</div>
<!-- REQUIREMENTS -->
<!-- CARBONE WORD TEMPLATES -->
<div id="page-carbone" class="page">
<h2 style="margin-bottom:20px">Word Templates (Carbone)</h2>
<div class="card mb-16">
<div class="card-header"><span class="card-title">How It Works</span></div>
<div class="text-sm text-muted">
1. Download the master template (.docx) with all data tags<br>
2. Open in Microsoft Word, customize fonts/colors/layout, save<br>
3. Upload your customized .docx back here<br>
4. Generate CVs by merging candidate data with your template -> PDF
</div>
<button class="btn mt-16" onclick="downloadMasterTemplate()">Download Master Template (.docx)</button>
</div>
<div class="card mb-16">
<div class="card-header"><span class="card-title">Upload Custom Template</span></div>
<div class="form-group">
<label>Template Name</label>
<input type="text" id="carbone-template-name" placeholder="e.g. Corporate Blue, Minimalist Professional">
</div>
<div class="upload-zone" id="carbone-upload-zone" onclick="document.getElementById('carbone-file-input').click()">
<p style="font-size:16px; margin-bottom:8px">Drop your .docx file here or click to browse</p>
<p class="text-muted text-sm">Must be a .docx file with Carbone tags from the master template</p>
</div>
<input type="file" id="carbone-file-input" accept=".docx,.doc,.odt,.rtf" style="display:none" onchange="uploadCarboneTemplate(this.files[0])">
<div id="carbone-upload-status" style="margin-top:12px"></div>
</div>
<div class="card">
<div class="card-header"><span class="card-title">Saved Templates</span></div>
<div id="carbone-templates-list"></div>
</div>
</div>
<div id="page-requirements" class="page">
<h2 style="margin-bottom:20px">Requirement Requests</h2>
<div class="flex mb-16 gap-8">
@@ -113,5 +145,6 @@
<script src="/static/app.js"></script>
<script src="/static/builder.js"></script>
<script src="/static/designer.js"></script>
<script src="/static/carbone.js"></script>
</body>
</html>