Skip to content
WebViewGold Vibe Coding to App Store
English
Get WebViewGold

v0 + printing

Printing from your v0 app with AirPrint and Android print

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 v0 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.

  • Approval guarantee – or money back within 14 days
  • No coding needed
  • One-time payment, free updates
  • 24/7 human support
  • Made in Germany since 2014 · ISO 27001

What people print from apps

Invoices and receipts

Small-business tools, booking apps and marketplaces: the customer or the shop prints the invoice that your backend already generates.

Tickets, labels and badges

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.

Reports, worksheets and recipes

Weekly reports, school worksheets, training plans, recipes and checklists that people still want on paper or as a tidy PDF.

Certificates and confirmations

Course certificates, booking confirmations and signed agreements, printed or saved as PDF straight from the screen where the user sees them.

Prompt for v0

Paste this into v0 to implement the web-app side. Review the result, publish, then test inside the WebViewGold app.

Prompt to paste into v0
Add native printing for the WebViewGold app wrapper to this Next.js App Router app. 1) Create app/print/[token]/route.ts that verifies a signed, 5-minute token (secret from process.env.PRINT_SECRET), loads the invoice and returns it as a PDF with Content-Type application/pdf, rendered with @react-pdf/renderer. 2) Create a Server Action createPrintLink(invoiceId) that checks the session and returns the absolute URL https://OUR_PRODUCTION_DOMAIN/print/TOKEN. 3) Create components/print-button.tsx as a client component: when navigator.userAgent includes WebViewGold, await createPrintLink and navigate to "printitem://?jobName=" + encodeURIComponent("Invoice " + number) + "&printItem=" + url; otherwise open the URL in the browser. 4) Never build the URL from a preview deployment. 5) Make sure the print route is not behind Vercel Deployment Protection or auth middleware.

WebViewGold has allowed us the shortest and most efficient time-to-market ever possible from among all the other app platforms we have ever tried during the past 5 years. I don’t know why I hadn’t discovered you sooner, but I am really, really glad I did. Currently nearing 6000 app downloads on both iOS App Store & Google Play Store without any problem!

Antonio Davila · CodeCanyon

Add a working print button

About an hour, most of it for the PDF template.

  1. Render a printable file

    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.

  2. Make the URL reachable without a login

    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.

  3. Call printitem:// from the button

    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.

  4. Keep the browser path

    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.

  5. Test with a printer and with Save as PDF

    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.

A print helper for app and browser

The helper asks your server for a short-lived file URL and picks the right path. For your v0 app, the PDF route belongs in: Next.js route handlers and server actions, Postgres via Neon or Supabase.

javascript
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
  }
}

Good to know before you ship

  • Printing itself triggers no permission prompt. The file is cached temporarily on the device; on Android it is deleted once the job is queued.
  • Bluetooth receipt printers that support neither AirPrint nor the Android print service are not covered: they need the vendor's SDK, which means a custom native integration.
  • Keep personal data out of file names and job names; print queues and printer logs keep them.
  • Printing is a credible native feature for business apps (invoices, tickets, labels). List it in the review notes with your other native features; on its own it will not carry a Guideline 4.2 argument.

Frequently asked questions

Why does window.print() do nothing in the app?

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.

Can users save a PDF instead of printing?

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.

Can I print the screen the user is looking at?

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.

Does the file have to be public?

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.

Three ways to get your app into the stores

Same result, different amount of work on your side. All three come with the approval guarantee and 24/7 human support.

Do it yourself

$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

Cloud Builder

$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

Full Service

$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 by WeSetupYourWebViewApp

Winter Sale prices valid until December 31, 2026.

Ready to ship your v0 app?

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.