跳至内容
WebViewGold 从 Vibe Coding 到 App Store
中文
获取 WebViewGold

v0 + 打印

让您的 v0 应用支持 AirPrint 和 Android 打印

在浏览器里好用的打印按钮,到了应用里通常就没反应了,因为应用 WebView 不像 Safari 或 Chrome 那样处理 window.print()。WebViewGold 为您的 v0 应用提供了原生替代方案:printitem:// 从您的服务器下载 PDF 或图片,并打开系统打印对话框(iPhone 上是 AirPrint,Android 上是 Android 打印服务),还可以选择“另存为 PDF”。

每个平台一次性 $109 起,或由我们的团队全程代劳,$698 起。

  • 审核通过保证 – 否则 14 天内退款
  • 无需编程
  • 一次性付费,免费更新
  • 7×24 小时人工支持
  • 2014 年起德国出品 · ISO 27001

人们会从应用中打印什么

发票和收据

小企业工具、预订应用和交易平台:顾客或商家直接打印您的后端已经生成的发票。

门票、标签和胸牌

活动门票、快递面单、姓名胸牌、带二维码的签到凭证。按合适的纸张尺寸渲染成 PDF,点两下就能打印。

报告、练习题和食谱

每周报告、学校练习题、训练计划、食谱和清单:人们仍然希望拿到纸质版,或者一份整洁的 PDF。

证书和确认单

课程证书、预订确认单和已签署的协议,直接在用户查看它们的页面上打印或保存为 PDF。

给 v0 的提示词

把这段粘贴到 v0 中以实现 Web 应用端。检查结果,发布,然后在 WebViewGold 应用中测试。

粘贴到 v0 的提示词
为这个 Next.js App Router 应用添加面向 WebViewGold 应用封装的原生打印。1) 创建 app/print/[token]/route.ts:验证一个 5 分钟有效的签名 token(密钥来自 process.env.PRINT_SECRET),加载发票,并用 @react-pdf/renderer 渲染后以 Content-Type application/pdf 返回 PDF。2) 创建 Server Action createPrintLink(invoiceId):检查会话,并返回绝对 URL https://OUR_PRODUCTION_DOMAIN/print/TOKEN。3) 创建客户端组件 components/print-button.tsx:当 navigator.userAgent 包含 WebViewGold 时,await createPrintLink,然后跳转到 "printitem://?jobName=" + encodeURIComponent("发票 " + number) + "&printItem=" + url;否则在浏览器中打开该 URL。4) 绝不要基于预览部署构建 URL。5) 确保打印路由不在 Vercel Deployment Protection 或身份验证中间件之后。

在过去5年我们尝试过的所有应用平台中,WebViewGold为我们带来了有史以来最短、最高效的上市时间。我不知道为什么没有更早发现你们,但我真的非常满意。目前我们的应用在iOS App Store和Google Play商店的下载量已超过6000次,没有任何问题!

安东尼奥·达维拉 · CodeCanyon

添加一个真正可用的打印按钮

大约一小时,大部分时间花在 PDF 模板上。

  1. 渲染可打印的文件

    在服务器上把发票、门票或报告生成为 PDF(或 PNG/JPG),页面尺寸与预期的纸张一致:Letter 或 A4、4 × 6 英寸标签、门票。在 Android 上,图片会缩放以适应页面。

  2. 让 URL 无需登录即可访问

    应用会自己从 printItem 下载文件,文档要求该 URL 能从设备公开访问。请使用短期有效的签名链接,并确保其中不含 & 和 #,例如 https://app.yourdomain.com/print/8f3a2c.pdf。

  3. 从按钮调用 printitem://

    导航到 printitem://?jobName=Invoice%20%23123&printItem=https://…/invoice.pdf。printItem 是必填项,jobName 是可选项且必须经过 URL 编码(缺少它时 Android 会显示“Print Job”)。请像文档中那样把 printItem 放在最后。

  4. 保留浏览器中的打印方式

    通过您在 WebViewGold 中设置的自定义 User-Agent 识别应用。在普通浏览器中,继续使用 window.print(),或者打开 PDF,让浏览器的查看器来打印。

  5. 用打印机和“另存为 PDF”测试

    在 iPhone 和 Android 上分别打印一份多页 PDF 和一张图片,并试试“另存为 PDF”。检查页边距、分页以及打印队列中的作业名称。

同时适用于应用和浏览器的打印辅助代码

这段辅助代码向您的服务器请求一个短期有效的文件 URL,并选择正确的打印方式。对于您的 v0 应用,PDF 路由应放在:Next.js 路由处理程序和 Server Actions,通过 Neon 或 Supabase 使用 Postgres。

javascript
var IN_APP = navigator.userAgent.indexOf("WebViewGold") !== -1; // 您的自定义 User-Agent 标识

async function printInvoice(invoiceId) {
  // 服务器渲染 PDF,并返回一个短期有效、可公开访问的链接
  var res = await fetch("/api/invoices/" + invoiceId + "/print-link", { method: "POST" });
  var link = (await res.json()).url; // 例如 https://app.yourdomain.com/print/8f3a2c.pdf

  if (IN_APP) {
    var job = encodeURIComponent("发票 " + invoiceId);
    window.location.href = "printitem://?jobName=" + job + "&printItem=" + link; // printItem 放在最后
  } else {
    window.location.assign(link); // 浏览器:由 PDF 查看器打印
  }
}

发布前须知

  • 打印本身不会触发任何权限弹窗。文件会临时缓存在设备上;在 Android 上,作业进入队列后文件即被删除。
  • 既不支持 AirPrint 也不支持 Android 打印服务的蓝牙小票打印机不在支持范围内:它们需要厂商的 SDK,也就意味着需要定制的原生集成。
  • 不要在文件名和作业名称中包含个人数据;打印队列和打印机日志会保留它们。
  • 对于商务类应用(发票、门票、标签),打印是一项可信的原生功能。请在审核备注中把它和其他原生功能一起列出;单靠它不足以支撑准则 4.2 方面的论证。

常见问题

为什么 window.print() 在应用中没有任何反应?

应用 WebView 不像 Safari 和 Chrome 那样实现浏览器的打印命令,所以这个调用通常没有效果。printitem:// 则把文件交给原生打印系统,处理多页 PDF 也更可靠。

用户能保存为 PDF 而不是打印吗?

可以。Android 在打印对话框中提供“另存为 PDF”,在 iOS 上用户可以从打印选项中保存或分享文档。很多人正是用这种方式归档发票。

我能打印用户正在查看的页面吗?

printitem:// 打印的是来自某个 URL 的文件。请在服务器上把该视图渲染成 PDF(大多数技术栈都有 PDF 库或无头浏览器可用),然后传入链接;打印在纸上也比网页布局好看。

文件必须是公开的吗?

它必须能在不登录的情况下从设备访问。几分钟后就过期的签名链接既能满足这一点,又不会让发票永久暴露。

让您的应用上架商店的三种方式

结果相同,只是您需要投入的工作量不同。三种方式都附带审核通过保证和 7×24 小时人工支持。

自己动手

$109 每个平台,一次性付费

WebViewGold 许可证:一个现成的 Xcode 或 Android Studio 项目。粘贴您的 URL,设置名称和图标,开启所需功能,构建并提交。永久免费更新。

在主页查看方案

Cloud Builder

$349 每个许可证,一次性附加购买

无需 Mac、Xcode 或 Android Studio:在浏览器中完成配置,我们在云端构建两个应用,并将其交付到 App Store Connect 和 Play Console。

Cloud Builder 如何运作 试用免费演示

Full Service

$698 每个平台 $798

把您的 URL 和图标发给我们。我们的团队在 72 小时内完成配置、构建并交付您的应用,白标,附源码项目。两个平台共 $1,158。

Full Service 详情 服务提供方: WeSetupYourWebViewApp

冬季特惠价格有效期至 2026年12月31日。

准备好发布您的 v0 应用了吗?

App Store & Google Play 审核通过保证 – 否则 14 天内退款

想直接交给我们?Full Service:我们在 72 小时内完成配置、构建并交付,每个平台 $698 起。有疑问?通过 7×24 小时在线聊天联系我们。

退款依据我们 FAQ 中列出的条件:应用因非内容原因被 Apple 和/或 Google 拒审,并在购买后 14 天内提出申请。