| 开发者 | naranili |
|---|---|
| 更新时间 | 2026年9月25日 23:41 |
| PHP版本: | 8.2 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
[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.spev_code_tooltip, spev_invoice_model) let an add-on extend the BT/BG tooltips and the invoice model itself.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 vendor/ is this plugin family's own code under GPL-2.0-or-later; composer.lock lists it.
/wp-content/plugins/ or install it through the WordPress plugins screen.[einvoice_viewer] to any page or post. To show the EN 16931 business-term numbers initially, use [einvoice_viewer bt="1"].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.
The Quba viewer transforms the invoice with the KoSIT XRechnung XSLT 3.0 via Saxon-JS. PHP only supports XSLT 1.0, so an own, Quba-inspired PHP template is used instead - functionally equivalent, but not the identical KoSIT markup.
Yes. Under Settings -> E-Invoice Viewer you can set a daily upload limit per visitor (logged-in users are counted by user ID, anonymous visitors by hashed IP address).
.mjs extension, which some servers have no correct file
type mapping for. Renamed to the universally-supported .js extension; no behaviour change.@einvoice/core Web Component uses. The paid companion extensions (KoSIT validator, Excel export, Visualizer, Identifier Check, Inbound Check, Technical Details) are unaffected and keep working exactly as before - they each still send the file to their own, independent endpoint when their own feature is used.spev_register_settings action lets a companion add-on (currently the Exporter) add its own settings block to this plugin's own Settings page.SPEV_Renderer::model_json() - the same model as model(), as a JSON string. Purely additive; model() itself is unchanged.spev_register_templates action: a companion plugin can register additional layouts from the outside without touching this plugin's code. First consumer: the new eInvoice Viewer - Visualizer add-on, four print-oriented layouts selectable in Settings -> E-Invoice Viewer -> Layout template.horstoeko/invoicesuite instead of horstoeko/zugferd (no visible change for existing installations).spev_invoice_model filter lets an add-on append whole additional sections to the invoice model.spev_code_tooltip filter lets an add-on extend a business-term tooltip with additional information (cardinality, data type, reference table, XSD level, XPath).spev_date_format filter), numbers and amounts use the separators the active locale declares. On an English installation the invoice date read 13.11.2017 and the total 6.125,00 EUR before this release. Calendar dates are formatted in their own time zone on purpose, so the day printed is always the day that stands in the XML.smalot/pdfparser under the LGPL-3.0, everything else is MIT and the plugin's own reading engine is GPL-2.0-or-later.spev_label_locale filter chooses the business-term language independently of the site language.sp-einvoice-viewer and hardened input handling (uploads and proxy headers) for the WordPress coding standards.