Invoices and receipts
Small-business tools, booking apps and marketplaces: the customer or the shop prints the invoice that your backend already generates.
Bolt + printing
The print button that works in the browser usually goes quiet inside an app, because app WebViews do not handle window.print() the way Safari or Chrome do. WebViewGold gives your Bolt app a native alternative: printitem:// downloads a PDF or image from your server and opens the system print dialog, AirPrint on iPhone and the Android print service, with Save as PDF as an option.
From $109 one-time per platform, or let our team do it all from $698.
Small-business tools, booking apps and marketplaces: the customer or the shop prints the invoice that your backend already generates.
Event tickets, shipping labels, name badges, check-in passes with a QR code. Render them as a PDF in the right paper size and print in two taps.
Weekly reports, school worksheets, training plans, recipes and checklists that people still want on paper or as a tidy PDF.
Course certificates, booking confirmations and signed agreements, printed or saved as PDF straight from the screen where the user sees them.
Paste this into Bolt to implement the web-app side. Review the result, publish, then test inside the WebViewGold app.
Add native printing of tickets for the WebViewGold app wrapper. 1) Create a Netlify Function print-ticket served at the clean path /print/:token (no query string) that verifies an HMAC-signed token with PRINT_SIGNING_SECRET from the environment, loads the ticket from Supabase with the service role key and returns a PDF (Content-Type application/pdf) sized for A6 or 4 x 6 inch paper. 2) Add a Netlify Function print-link that, for the logged-in user, returns https://OUR_DOMAIN/print/TOKEN with a token valid for 5 minutes. 3) On the ticket page add a Print button: when navigator.userAgent contains WebViewGold, fetch the link and navigate to "printitem://?jobName=" + encodeURIComponent("Ticket " + code) + "&printItem=" + link; in a browser, open the link instead. 4) Never expose the signing secret or the service role key in a VITE_ variable. 5) Show a spinner while the PDF is prepared.
Great work! Never coded anything but managed to work with this. Easy and fast! Also with great help from the creators!
About an hour, most of it for the PDF template.
Generate the invoice, ticket or report as a PDF (or PNG/JPG) on the server, in the page size of the paper you expect: Letter or A4, a 4 × 6 inch label, a ticket. Images are scaled to fit the page on Android.
The app downloads the file from printItem itself, and the docs require that URL to be publicly reachable from the device. Use a short-lived signed link and keep it free of & and #, for example https://app.yourdomain.com/print/8f3a2c.pdf.
Navigate to printitem://?jobName=Invoice%20%23123&printItem=https://…/invoice.pdf. printItem is required, jobName is optional and must be URL-encoded (Android shows "Print Job" without it). Keep printItem last, as in the docs.
Detect the app through the custom user agent you set in WebViewGold. In a normal browser, keep window.print() or open the PDF so its viewer can print it.
Print a multi-page PDF and an image on iPhone and Android, and try Save as PDF. Check margins, page breaks and the job name in the print queue.
The helper asks your server for a short-lived file URL and picks the right path. For your Bolt app, the PDF route belongs in: Supabase, Firebase or your own API.
var IN_APP = navigator.userAgent.indexOf("WebViewGold") !== -1; // your custom user agent token
async function printInvoice(invoiceId) {
// the server renders a PDF and returns a short-lived, publicly reachable link
var res = await fetch("/api/invoices/" + invoiceId + "/print-link", { method: "POST" });
var link = (await res.json()).url; // e.g. https://app.yourdomain.com/print/8f3a2c.pdf
if (IN_APP) {
var job = encodeURIComponent("Invoice " + invoiceId);
window.location.href = "printitem://?jobName=" + job + "&printItem=" + link; // printItem last
} else {
window.location.assign(link); // browser: the PDF viewer prints it
}
}App WebViews do not implement the browser print command the way Safari and Chrome do, so the call usually has no effect. printitem:// hands a file to the native print system instead, which also handles multi-page PDFs more reliably.
Yes. Android offers Save as PDF in the print dialog, and on iOS users can save or share the document from the print options. Many people use exactly that to file invoices.
printitem:// prints a file from a URL. Render that view as a PDF on the server (most stacks have a PDF library or a headless browser for this) and pass the link; it also looks better on paper than the web layout.
It has to be reachable from the device without your login. A signed link that expires after a few minutes gives you that without exposing invoices permanently.
Same result, different amount of work on your side. All three come with the approval guarantee and 24/7 human support.
$109 per platform, one-time
The WebViewGold license: a finished Xcode or Android Studio project. Paste your URL, set name and icon, switch on features, build and submit. Free updates forever.
See plans on the main page$349 per license, one-time add-on
No Mac, no Xcode, no Android Studio: configure in the browser, we build both apps in the cloud and hand them to App Store Connect and the Play Console.
How the Cloud Builder works Try the free demo$698 per platform $798
Send us your URL and icon. Our team configures, builds and delivers your app within 72 hours, white-label, with source projects. Both platforms for $1,158.
Full Service details Powered byWinter Sale prices valid until December 31, 2026.
App Store & Google Play approval guarantee – or your money back within 14 days
Rather hand it over? Full Service: we configure, build and deliver within 72 hours, from $698 per platform. Questions? Chat with us 24/7.
Refunds are granted under the conditions listed in our FAQ: a non-content rejection by Apple and/or Google, claimed within 14 days after purchase.