| 开发者 | naranili |
|---|---|
| 更新时间 | 2026年10月20日 02:03 |
| PHP版本: | 8.2 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
[spev_einvoice_viewer] shortcode to a page and your visitors can drag and drop an electronic invoice into the viewer. The document is read and rendered entirely in the visitor's own browser - it is never uploaded to your server. The result (invoice header, parties, order and delivery data, payment details, line items, VAT breakdown and totals) appears instantly, without a page reload and without a single byte of the invoice ever crossing the network. The layout is inspired by the official ZUGFeRD Quba viewer and is rendered inside a Shadow DOM, so it looks identical in every theme.
Supported formats
bt="1" / bt="0".DOMParser (no server-side XML parser, so no XXE surface for the upload itself); every invoice value is escaped on output. Sibling paid extensions that genuinely need server-side processing (validation, export, …) keep their own independent upload, nonce and rate-limit handling.extendModel and extendTooltip, and a einvoice-model-ready event hands it the finished model, the raw XML and the original file.assets/js/pdfjs/, Apache License 2.0, license text next to the files), used to pull the embedded XML out of a ZUGFeRD / Factur-X PDF. Everything else in the plugin is this plugin family's own code under GPL-2.0-or-later.
/wp-content/plugins/ or install it through the WordPress plugins screen.[spev_einvoice_viewer] to any page or post. To show the EN 16931 business-term numbers initially, use [spev_einvoice_viewer bt="1"].manual/ of the plugin ( manual/manual.en.html, German manual/manual.de.html ).No. The invoice is read and rendered entirely in the visitor's own browser - it is never sent to your server, so there is nothing to store, log or delete. Nothing is written to the uploads directory or the database. (Paid sibling extensions that genuinely need server-side processing, such as validation or export, do their own upload and say so.)
ZUGFeRD and Factur-X PDFs (the embedded XML is extracted), plus CII (UN/CEFACT) XML and UBL / XRechnung XML.
No. The viewer shows what the invoice says, and it marks amounts that do not add up from their parts and fields that break a rule following from the invoice itself. Whether an invoice complies with the rules of its specification is for a validator to judge. A PDF without embedded invoice data, such as a scan, cannot be read, and the viewer says so.
The Quba viewer transforms the invoice with the KoSIT XRechnung XSLT 3.0 via Saxon-JS. This plugin builds its own view instead: it reads the invoice directly, assembles an EN 16931 model from it and renders that model. The result is Quba-inspired and functionally equivalent, but it is not the identical KoSIT markup. The advantage of the own path is that it covers CII and UBL on their own terms and labels every field with its business-term number.
There is nothing to limit: the invoice never reaches your server. It is read and rendered in the visitor's own browser, so no request is made and no resource of yours is consumed, however many invoices a visitor looks at. The only setting that applies to the file is the maximum size, under Settings -> E-Invoice Viewer; a larger file is refused before it is read. Paid sibling extensions that genuinely do send the invoice to your server (KoSIT validation, Excel export, Visualizer) each carry their own daily limit per visitor, set on the same settings page.
[spev_einvoice_viewer]. A page that still uses [einvoice_viewer] shows nothing — please see the upgrade notice.<einvoice-viewer> element ignored its data-lang attribute for the upload area and the switches.spev_register_settings, which lets an add-on add its own block to the settings page.SPEV_Renderer::model_json() and new action spev_register_templates, used by the Visualizer add-on for its print layouts.POST /wp-json/einvoice/v1/render. Existing settings carry over unchanged.spev_invoice_model, which lets an add-on add sections to the invoice.spev_code_tooltip, which lets an add-on extend a business-term tooltip.spev_date_format.SPEV_Renderer::model() returns the invoice data instead of HTML, and the filter spev_label_locale chooses the language of the business terms.