Wir freuen uns, die Veröffentlichung von GroupDocs.Assembly for Python v26.11 bekannt zu geben, verfügbar seit November 2026. Dieses Release liefert bedeutende Verbesserungen der Plattformunterstützung – einschließlich der ersten Wheels für Linux und macOS – sowie native Unterstützung von Python‑Datenquellen, verbesserte Fehlerbehandlung und aktualisierte Abhängigkeiten. Es führt außerdem mehrere neue Funktionen und Breaking Changes ein, um sich an moderne Python‑Praktiken und .NET 10 anzupassen.

Was ist neu in diesem Release

  • [Feature] Wheels für Linux x64 und macOS (Intel und Apple Silicon) hinzufügen (ASSEMBLYPYTHON-26)
  • [Feature] Unterstützung für ein Python‑dict oder eine Liste als Datenquelle hinzufügen (ASSEMBLYPYTHON-27)
  • [Feature] Unterstützung für einen Python‑Handler zum Laden von Dokumenttabellen (IDocumentTableLoadHandler) hinzufügen (ASSEMBLYPYTHON-28)
  • [Feature] Unterstützung für Python‑Typen hinzufügen, wenn die API einen .NET Type erwartet (DocumentTableColumn.type, known_types) (ASSEMBLYPYTHON-29)
  • [Feature] Unterstützung für das Anwenden der Lizenz aus der Umgebungsvariable GROUPDOCS_LIC_PATH hinzufügen (ASSEMBLYPYTHON-30)
  • [Enhancement] GroupDocs.Assembly auf 26.7 aktualisieren und die eingebettete Runtime auf .NET 10.0.14 (ASSEMBLYPYTHON-31)
  • [Enhancement] Ein reines Python‑Paket für Python 3.5 – 3.14 anstelle der kompilierten Erweiterung bereitstellen (ASSEMBLYPYTHON-32)
  • [Enhancement] Einen einzelnen DataSourceInfo in assemble_document() sowie eine Liste akzeptieren (ASSEMBLYPYTHON-33)
  • [Enhancement] FileNotFoundError für eine fehlende Datei, LicenseError für eine Lizenz, die nicht angewendet werden kann, und GroupDocsAssemblyException für andere Engine‑Fehler auslösen (ASSEMBLYPYTHON-34)
  • [Enhancement] BarcodeSettings.x_resolution/y_resolution in xresolution/yresolution umbenennen und use_reflection_optimization zu einem Klassenattribut machen (ASSEMBLYPYTHON-35)
  • [Enhancement] Das 32‑Bit‑Windows‑Wheel entfernen (ASSEMBLYPYTHON-36)
  • [Fix] CVE‑Ergebnisse in 25.5.1 beheben: zlib 1.2.11 → 1.2.12 (+4 weitere) (ASSEMBLYPYTHON-11)

Änderungen der öffentlichen API

Upgrader müssen x_resolution/y_resolution und set_use_reflection_optimization() umbenennen und GroupDocsAssemblyException sowie LicenseError abfangen, wo zuvor RuntimeError abgefangen wurde. Alles andere ist ergänzend.

Neue Klassen und Mitglieder

  • groupdocs.assembly: FontSettings, FolderFontSource, IFontSource, SearchOption, OoxmlCompliance, GroupDocsAssemblyException, LicenseError, LicenseWarning.
  • LoadSaveOptions: ooxml_compliance.
  • KnownTypeSet: append().
  • DocumentTableCollection, DocumentTableColumnCollection: get().
  • DocumentTableRelationCollection: append(), get().

Umbenannt

  • BarcodeSettings.x_resolution → BarcodeSettings.xresolution
  • BarcodeSettings.y_resolution → BarcodeSettings.yresolution

Die alten Namen lösen ein AttributeError mit einem Hinweis „Meinten Sie“ aus, sowohl beim Lesen als auch beim Zuweisen.

Entfernt

  • DocumentAssembler.set_use_reflection_optimization(): Stattdessen das Klassenattribut zuweisen, DocumentAssembler.use_reflection_optimization = False.

Geändert

  • DataSourceInfo akzeptiert ein dict oder eine Liste.
  • assemble_document() akzeptiert einen einzelnen DataSourceInfo sowie eine Liste.
  • DocumentTableSet(path, load_handler) akzeptiert eine Python‑Funktion oder ein Objekt mit handle(args).
  • DocumentTableColumn.type und KnownTypeSet.add() akzeptieren einen Python‑Typ.
  • Engine‑Fehler lösen FileNotFoundError, RuntimeError, LicenseError oder GroupDocsAssemblyException aus. except Exception fängt die Fehler beider Releases ab.

Neue Funktionen

Linux und macOS

26.11 enthält Wheels für Linux x64 (manylinux_2_27_x86_64, glibc 2.27 oder neuer) und für macOS 12 oder neuer auf Intel (macosx_12_0_x86_64) sowie Apple Silicon (macosx_12_0_arm64), neben Windows x64. 25.5 hatte nur Windows‑Wheels. pip 20.3 oder neuer wählt das passende Wheel für die Plattform aus. Unter Linux benötigt die .NET‑Runtime ICU, und Präsentations‑Templates benötigen libgdiplus (siehe Requirements).

pip install groupdocs-assembly-net==26.11.0

Python‑Daten als Datenquelle

DataSourceInfo akzeptiert ein dict, eine Liste von dicts oder eine Liste von Werten, wie sie ist; 25.5 löste einen TypeError für ein dict aus. Der Wrapper wandelt die Daten in .NET‑Objekte um, die anhand ihrer Struktur typisiert werden, sodass Zahlen, Zeichenketten, bool, datetime, date und Decimal‑Werte im Template typisiert ankommen: <<[o.OrderDate.Month]>> und <<if [c.Vip]>> funktionieren wie bei .NET‑Objekten. Dicts in einer Liste teilen sich einen Typ, der die Vereinigung ihrer Schlüssel ist.

from groupdocs.assembly import DataSourceInfo, DocumentAssembler

orders = [
    {"Number": 10001, "Product": "Harbor Blend whole bean coffee", "Quantity": 30, "Price": 552.0},
    {"Number": 10004, "Product": "Aged harbour cheddar", "Quantity": 8, "Price": 132.0},
]

# order-table.docx: a table whose row <<foreach [o in orders]>><<[o.Number]>> ... <</foreach>> repeats per order
DocumentAssembler().assemble_document("order-table.docx", "order-table-report.docx", [
    DataSourceInfo("Quayside Bistro", "customer"),
    DataSourceInfo(orders, "orders"),
])

Eine Datenquelle ohne Liste

assemble_document() akzeptiert einen einzelnen DataSourceInfo oder eine Liste davon, wie .NETs params DataSourceInfo[] es tut. 25.5 erforderte eine Liste und löste TypeError: can't build Array value from 'groupdocs.assembly.DataSourceInfo' für einen einzelnen aus.

from groupdocs.assembly import DataSourceInfo, DocumentAssembler

customer = {"Name": "Quayside Bistro", "Product": "Harbor Blend whole bean coffee"}
DocumentAssembler().assemble_document("hello-world.docx", "hello-world-report.docx", DataSourceInfo(customer, "customer"))

Tabellen‑Lade‑Handler

DocumentTableSet(path, load_handler) akzeptiert eine Python‑Funktion (args) oder ein Objekt mit einer handle(args)‑Methode und ruft sie für jede Tabelle des Dokuments vor dem Laden auf. Der Handler setzt args.options für diese Tabelle oder überspringt die Tabelle mit args.is_loaded = False; args.table_index gibt an, welche Tabelle es ist. 25.5 löste einen TypeError für eine Python‑Funktion aus.

from groupdocs.assembly.data import DocumentTableOptions, DocumentTableSet


def on_table(args):
    options = DocumentTableOptions()
    options.first_row_contains_column_names = True
    args.options = options


tables = DocumentTableSet("contracts.xlsx", on_table)
for table in tables.tables:
    print(table.name, [column.name for column in table.columns])

Python‑Typen, wo die API einen .NET‑Typ erwartet

Ein Python‑Typ steht für den .NET‑Typ, den ein Mitglied erwartet: float für System.Double, int, str, bool, datetime. Eine Spalte einer Dokumenttabelle kann numerisch gemacht werden, sodass ein Diagramm sie summiert, und known_types ermöglicht es einem Template, statische Mitglieder eines Typs aufzurufen; es akzeptiert auch einen .NET‑Typnamen. 25.5 löste TypeError: can't build Type value from 'type' aus.

from groupdocs.assembly import DataSourceInfo, DocumentAssembler
from groupdocs.assembly.data import DocumentTable, DocumentTableOptions

options = DocumentTableOptions()
options.first_row_contains_column_names = True
contracts = DocumentTable("contracts.xlsx", 0, options)
contracts.columns["Price"].type = float

assembler = DocumentAssembler()
assembler.known_types.add("System.Math")  # templates can call <<[Math.Round(x, 1)]>>
assembler.assemble_document("table-row.docx", "table-row-report.docx", DataSourceInfo(contracts, "contracts"))

Lizenz aus der Umgebung

Setzen Sie GROUPDOCS_LIC_PATH auf den Pfad einer Lizenzdatei oder auf eine URL, die eine solche bereitstellt, und die Lizenz wird beim ersten Engine‑Aufruf angewendet, ohne Lizenzcode; 25.5 las die Variable nicht. Wenn diese Lizenz nicht angewendet werden kann (fehlende Datei, abgelaufenes Abonnement, Lizenz für ein anderes Produkt), löst jeder Engine‑Aufruf LicenseError aus, wobei die Variable und der Grund der Engine genannt werden, bis License().set_license() eine Lizenz anwendet. Setzen Sie GROUPDOCS_LIC_STRICT=0, um stattdessen ein LicenseWarning und den Evaluierungsmodus zu erhalten.

from groupdocs.assembly import DataSourceInfo, DocumentAssembler, LicenseError

customer = {"Name": "Quayside Bistro", "Product": "Harbor Blend whole bean coffee"}
try:
    DocumentAssembler().assemble_document("hello-world.docx", "hello-world-report.docx", DataSourceInfo(customer, "customer"))
except LicenseError as e:
    print(e)  # GROUPDOCS_LIC_PATH=... could not be applied: <reason>

Fehler nach Art

25.5 löste für jeden Engine‑Fehler ein einfaches RuntimeError("Proxy error(<.NET exception>): ...") aus. 26.11 löst FileNotFoundError für eine fehlende Template‑ oder Datendatei aus, das immer noch von RuntimeError abgeleitet ist; RuntimeError mit nur der Engine‑Nachricht für einen Template‑Fehler oder ein fehlendes Datenelement; LicenseError für eine Lizenz, die nicht angewendet werden kann; und GroupDocsAssemblyException für die anderen Engine‑Fehler. LicenseError und GroupDocsAssemblyException können aus groupdocs.assembly importiert werden und leiten nicht von RuntimeError ab.

from groupdocs.assembly import DataSourceInfo, DocumentAssembler, GroupDocsAssemblyException

try:
    DocumentAssembler().assemble_document("no-such-template.docx", "report.docx", DataSourceInfo({"Name": "A"}, "customer"))
except FileNotFoundError as e:
    print("missing:", e)
except (RuntimeError, GroupDocsAssemblyException) as e:
    print("engine:", e)

Code‑Beispiel

from groupdocs.assembly import DataSourceInfo, DocumentAssembler, FileFormat, LoadSaveOptions, OoxmlCompliance

options = LoadSaveOptions(FileFormat.DOCX)
options.ooxml_compliance = OoxmlCompliance.STRICT
customer = {"Name": "Quayside Bistro", "Product": "Harbor Blend whole bean coffee"}
DocumentAssembler().assemble_document("hello-world.docx", "hello-world-strict.docx", options, DataSourceInfo(customer, "customer"))

Wie Sie das Update erhalten

PyPI

Aktualisieren Sie das neueste Paket über PyPI:

groupdocs-assembly-net 26.11.0

pip install groupdocs-assembly-net==26.11.0

Direkter Download

Laden Sie Wheels für Ihre Plattform von der Seite GroupDocs.Assembly for Python v26.11 herunter.

Ressourcen