简体中文

文件·自由发票工具

浏览器如何在不向服务器发送数据的情况下构建发票 PDF

· 工作原理

发票 pdf 浏览器处理

发票表单字段通过布局网格流入 PDF 文档
原始 ToolAcre 矢量图

发票生成器不需要服务器:表单、计算、布局和 PDF 写入都可以在选项卡中进行。这篇文章遵循您从表单中输入的详细信息到下载的文件,并解释了每个步骤。

感觉像是提交的表单——为什么在网站上填写字段通常意味着发送它们,以及为什么它不必这样做

表单看起来必须提交到服务器,但提交是页面做出的决定,而不是文本字段的属性。 ToolAcre 发票编辑器将草稿保存在浏览器状态和本地存储中;重新打开页面即可恢复。如果您在共享计算机上输入客户端地址,这种持久性很重要:清除表单和浏览器存储是您的责任。该文档既不会发布到 ToolAcre 发票端点,也不会通过该工具通过电子邮件发送。

页面中的状态 — 您键入的字段如何由选项卡中网站自己的 JavaScript 保存,而不是发布到后端

当自由设计师键入收件人、发票号码、日期和行项目时,事件处理程序会更新文档模型。资金使用本地发票模型来表示和总计,而不是相信预览中出现的任何数字。预览版和 PDF 接收相同的计算总数,因此不匹配将是共享计算中的错误,而不是单独的服务器副本中的错误。重新加载可以恢复本地存储的草稿;不同的设备无法从帐户中获取它。

布置文档 - 将名称、日期和计费项目转换为页面上的定位文本

PDF 页面是坐标系,而不是流动的网页。本地作者设置 A4 页面、页边距、报头、聚会详细信息、项目栏和总计块。每个标签和金额都放置在测量位置,当文本跨越列边界时会换行。报价使用不同的文档标签,但使用相同的布局管道。较长的描述可能需要分页;始终预览导出的内容,而不是假设浏览器表单间距映射到 PDF 间距。

编写 PDF — 页面自己的代码如何组装 PDF 对象和文本并完全在内存中生成字节

发票呈现器调用其自己的 PDF 编写器将文本、规则、阴影带和可选徽标绘制到文档字节中。它不会拍摄 HTML 形式:文本和数字被写入 PDF 内容,因此输出可以保存为普通文档。作者收到已经计算好的金额;格式化的货币字符串是显示输出,而不是第二次计算。 PDF 序列化不需要网络交换,尽管加载 ToolAcre 网站最初需要网络交换。

下载 — 一个 Blob 和一个对象 URL,它向您提供一个文件,该文件除了您的设备之外从未存在于任何地方

写入后,应用程序将这些字节包装在 Blob 中,并使用浏览器下载机制来提供文件。临时对象 URL 引用此浏览器会话中的 Blob;它不是您的客户可以检索发票的公共 URL。当临时对象 URL 不再有用时,应用程序会撤销它们。如果您需要持久记录,请将 PDF 或 JSON 导出保留在您控制的某个位置;浏览器本地存储不是备份系统。

工作示例 - 构建两个项目的报价并观察网络面板从第一次击键到保存的 PDF 保持为空

尝试以 200 的价格获取徽标草图报价,以 300 的价格获取布局通行证,不含税或折扣。以您选择的货币计算的本地小计为 500。输入测试客户端名称,检查预览,导出并打开 PDF 以检查两行和总计。在 DevTools 中,区分网站资产和公开的 AdSense/分析请求与上传的草稿:发票数据不会发送到 ToolAcre 发票服务器。避免将真实的客户详细信息放入共享设备上的演示中。

这不包括什么 - 将发票发送给客户,您仍然可以通过自己的电子邮件或门户网站执行此操作

该工具生成草稿并将其存储在此设备上;它不会为您开具、交付、签署或核对发票。税收规则因司法管辖区而异,并且在表格中选择税率并不构成结果会计建议。您仍然需要验证标识符、金额和客户地址,然后通过您自己批准的渠道附加或上传 PDF。如果您在保存副本之前丢失了浏览器存储空间,则没有可用于恢复文档的服务器帐户。

要点 — 整个管道都在一个选项卡中,自由发票工具运行它,数据保存在您的设备上

从输入到下载的管道是本地状态、本地算术、PDF 页面绘制和传递给浏览器的 Blob。有用的区别在于生成文件和发送文件之间:ToolAcre 执行前者,而后者由您选择。打开 Freelance Invoice Tool 重现两行示例,并在共享之前检查实际导出的字节。