Initial commit: ZPL-native PDF printing, drop CUPS dependency

This commit is contained in:
randy committed 2026-09-12 00:22:35 +02:00
commit 2ea45b5f21
15 files changed
+626

No files matched your search

+61
View File
@@ -0,0 +1,61 @@
<div class="card" >
<div class="card-body">
<h5 class="card-title">Brother Label Designer</h5>
<p class="card-text">A web service to print labels on Brother QL label printers.</p>
<a href="http://rpi-printserver.local:8560/labeldesigner" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">QL-560</a>
<a href="http://rpi-printserver.local:8700/labeldesigner" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">QL-700</a>
<a href="http://rpi-printserver.local:9100/labeldesigner" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">QL-1100</a>
</div>
</div>
<div class="card" >
<div class="card-body">
<h5 class="card-title">Sticker Factory</h5>
<p class="card-text">Print images, text and cats on a Brother QL label printer</p>
<a href="http://rpi-printserver.local:8989" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">Go</a>
</div>
</div>
<div class="card" >
<div class="card-body">
<h5 class="card-title">Cups</h5>
<p class="card-text">The standards-based, open source printing system developed by Apple for iOS®, iPadOS®, and macOS®. CUPS uses IPP Everywhere™ to support printing to local and network printers.</p>
<a href="https://rpi-printserver.local:631/admin" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">Go</a>
</div>
</div>
<div class="card" >
<div class="card-body">
<h5 class="card-title">Cockpit</h5>
<p class="card-text">Cockpit is a web-based graphical interface for servers, intended for everyone</p>
<a href="https://rpi-printserver.local:9090" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">Go</a>
</div>
</div>
<div class="card" >
<div class="card-body">
<h5 class="card-title">ZPL Viewer</h5>
<p class="card-text">An useful tool for labels in ZPL format.</p>
<a href="https://labelary.com/viewer.html" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">Go</a>
</div>
</div>
<div class="card" >
<div class="card-body">
<h5 class="card-title">Creality Sonic Pad</h5>
<p class="card-text">3D Printer</p>
<a href="http://spad-9088.local" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">Fluidd</a>
<a href="http://spad-9088.local:8819" class="btn btn-outline-secondary" target="_blank" rel="noopener noreferrer">Mainsail</a>
<a href="http://spad-9088.local:7125" class="btn btn-outline-secondary" target="_blank" rel="noopener noreferrer">Moonraker</a>
</div>
</div>
<div class="card" >
<div class="card-body">
<h5 class="card-title">Bigtreetech Pad 7 CNC</h5>
<p class="card-text">CNC</p>
<a href="http://btt-pad7-cnc.local" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">Mainsail</a>
<a href="http://btt-pad7-cnc.local:7125" class="btn btn-outline-secondary" target="_blank" rel="noopener noreferrer">Moonraker</a>
</div>
</div>
<div class="card" >
<div class="card-body">
<h5 class="card-title">Bigtreetech Pad 7 CAN</h5>
<p class="card-text">CAN</p>
<a href="http://rpi-btt-pad7-can.local" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">Mainsail</a>
</div>
</div>
+56
View File
@@ -0,0 +1,56 @@
<!doctype html>
<html lang="en">
<head>
<title>Print server</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link href="data:image/x-icon;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAD9/f0AAAAAAOzs7ADl5eUA/Pz8ACsZBgD+/v4AAwMDAPv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWZmZmZmIxERZmZmZmZmERFmZmZmZmYREWZmZoZmZhERZmYUVmZmERFmYREWZmYREWYRERFmZhERZhYREXZmERFmZmYRZmYREWZmZhFmZhERZmZmERFmERFmZmYHEWYREWZmZmZmZhERZmZmZmZmERFmZmZmZmYREWZmZmZmZhHAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAA" rel="icon" type="image/x-icon" />
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<link href="https://unpkg.com/dropzone@6.0.0-beta.1/dist/dropzone.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="container">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="/">Print server</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavDropdown">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/upload">Shipping labels</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="row">
<% if @alert_success then %>
<div class="alert alert-success"><%=@alert_success%></div>
<% end %>
<% if @alert_danger then %>
<div class="alert alert-danger"><%=@alert_danger%></div>
<% end %>
<% if @alert_warning then %>
<div class="alert alert-warning"><%=@alert_warning%></div>
<% end %>
<%= yield %>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
<script src="https://unpkg.com/dropzone@6.0.0-beta.1/dist/dropzone-min.js"></script>
<script>
Dropzone.options.UploadForm = {
paramFile: "file",
accept: function(file, done) {
done ();
}
};
</script>
</body>
</html>
+4
View File
@@ -0,0 +1,4 @@
<form action='/login/attempt' method='post' class="form-inline well">
<input type="text" name='username' placeholder="username" autofocus>
<input class="btn primary" type='submit' value='log in'>
</form>
+11
View File
@@ -0,0 +1,11 @@
<form action="/upload" class="dropzone" id="upload-form" method="POST" enctype="multipart/form-data">
<div class="mb-3">
<label for="formFile" class="form-label">Upload .pdf or .zpl to print label</label>
<input name="file" class="form-control" type="file" id="formFile" accept=".pdf,.zpl" />
</div>
<button class="btn btn-secondary" type="submit">Upload</button>
</form>
<form action="/test-print" method="POST" class="mt-3">
<button class="btn btn-outline-secondary" type="submit">Print test label</button>
</form>