跳轉到

Enterprise API 概覽

nextpdf/enterprise 需要 Enterprise 商業授權,包含 Pro 全部功能。所有類別位於 NextPDF\Enterprise\ 命名空間。

模組索引

模組 命名空間 說明
ZUGFeRD NextPDF\Enterprise\EInvoice ZUGFeRD 2.3 / Factur-X / XRechnung
HSM NextPDF\Enterprise\Signature PKCS#11 硬體安全模組
RAG NextPDF\Enterprise\Rag PDF 語意搜尋 + 向量索引
Extraction NextPDF\Enterprise\Extraction 結構化文字提取
Prisma Enterprise NextPDF\Enterprise\Accelerator Prisma Enterprise 加速引擎
Compliance Pro NextPDF\Enterprise\Compliance EN 16931 / Matterhorn 驗證

ZUGFeRD 電子發票模組

namespace NextPDF\Enterprise\EInvoice;

final class ZugferdBuilder
{
    public static function create(ZugferdProfile $profile): self

    public function build(
        string           $invoiceNumber,
        DateTimeImmutable $issueDate,
        DateTimeImmutable $dueDate,
        TradeParty       $seller,
        TradeParty       $buyer,
        list<LineItem>   $lineItems,
        PaymentTerms     $paymentTerms,
        string           $currency = 'EUR',
        string           $note     = '',
        string           $buyerOrderReference = '',
    ): ZugferdDocument

    public function validator(): ZugferdValidator
}

enum ZugferdProfile: string
{
    case MINIMUM    = 'urn:factur-x.eu:1p0:minimum';
    case BASIC_WL   = 'urn:factur-x.eu:1p0:basicwl';
    case BASIC      = 'urn:factur-x.eu:1p0:basic';
    case EN16931    = 'urn:cen.eu:en16931:2017';    // COMFORT
    case EXTENDED   = 'urn:factur-x.eu:1p0:extended';
    case XRECHNUNG  = 'urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_3.0';
}

final readonly class TradeParty
{
    public static function create(
        string           $name,
        Address          $address,
        TaxRegistration  $taxId,
        string           $globalId       = '',
        string           $contactEmail   = '',
        string           $contactPhone   = '',
        string           $buyerReference = '',  // Leitweg-ID(德國政府採購)
    ): self
}

final readonly class LineItem
{
    public static function create(
        string $id,
        string $name,
        string $description = '',
        float  $quantity    = 1.0,
        string $unitCode    = 'C62',   // UN/ECE Unit Code
        float  $unitPrice   = 0.0,
        Tax    $tax,
        ?float $allowancePercent = null,  // 折扣百分比
    ): self
}

HSM 硬體安全模組

namespace NextPDF\Enterprise\Signature;

final class HsmOrchestrator
{
    public static function create(
        HsmConnection      $hsm,
        TimestampAuthority $tsa,
        RevocationEmbedder $revocation,
        ?string            $keyLabel = null,  // null = 使用第一個可用私鑰
    ): self

    public function sign(Document $document, SignatureAppearance $appearance = SignatureAppearance::INVISIBLE): Document
}

final class HsmConnection
{
    /**
     * @param non-empty-string $pkcs11Library PKCS#11 動態庫路徑(.so / .dll)
     * @param positive-int     $slot          HSM Slot 編號
     * @param non-empty-string $pin           操作員 PIN
     */
    public static function create(
        string $pkcs11Library,
        int    $slot,
        string $pin,
    ): self

    /** 測試連接是否正常 */
    public function ping(): bool

    /** 列出可用的金鑰 */
    public function listKeys(): list<HsmKey>
}

RAG 語意搜尋模組

namespace NextPDF\Enterprise\Extraction;

final class PdfTextExtractor
{
    public static function create(): self

    public function extract(
        string           $path,
        ExtractionOptions $options = new ExtractionOptions(),
    ): ExtractedDocument
}

namespace NextPDF\Enterprise\Rag;

final class SemanticChunker
{
    public static function create(): self

    public function chunk(
        ExtractedDocument $document,
        ChunkingOptions   $options = new ChunkingOptions(),
    ): list<TextChunk>
}

final class VectorIndexer
{
    public static function create(
        EmbeddingProviderInterface $embeddingProvider,
        VectorStoreInterface       $vectorStore,
    ): self

    public function index(
        list<TextChunk>         $chunks,
        string                  $documentId,
        array<string, mixed>    $metadata = [],
        int                     $batchSize = 50,
    ): IndexingResult
}

final class SemanticSearcher
{
    public static function create(
        EmbeddingProviderInterface $embeddingProvider,
        VectorStoreInterface       $vectorStore,
    ): self

    public function search(
        SearchQuery    $query,
        SearchOptions  $options = new SearchOptions(),
    ): SearchResult
}

Prisma Enterprise 加速引擎

namespace NextPDF\Enterprise\Accelerator;

final class PrismaEnterpriseClient
{
    public static function create(PrismaEnterpriseConfig $config = new PrismaEnterpriseConfig()): self
    public function isAvailable(): bool
    public function engineVersion(): string
    public function capabilities(): list<string>  // 此裝置支援的加速功能列表
}

合規驗證模組

namespace NextPDF\Enterprise\Compliance;

final class En16931Validator
{
    public static function create(): self
    public function validate(ZugferdDocument $document): En16931ValidationResult
}

延伸閱讀