Jsme rádi, že můžeme oznámit vydání GroupDocs.Assembly for Python v26.11, dostupné od listopadu 2026. Toto vydání přináší významná vylepšení podpory platforem — včetně prvních balíčků wheel pro Linux a macOS — spolu s nativní podporou datových zdrojů v Pythonu, vylepšenou manipulací s chybami a aktualizovanými závislostmi. Také představuje několik nových funkcí a nekompatibilních změn, aby odpovídalo moderním praktikám v Pythonu a .NET 10.

Co je nového v tomto vydání

  • [Funkce] Přidat balíčky wheel pro Linux x64 a macOS (Intel a Apple Silicon) (ASSEMBLYPYTHON-26)
  • [Funkce] Přidat podporu pro Python dict nebo list jako datový zdroj (ASSEMBLYPYTHON-27)
  • [Funkce] Přidat podporu pro Python handler načítání tabulky dokumentu (IDocumentTableLoadHandler) (ASSEMBLYPYTHON-28)
  • [Funkce] Přidat podporu pro Python typy tam, kde API očekává .NET Type (DocumentTableColumn.type, known_types) (ASSEMBLYPYTHON-29)
  • [Funkce] Přidat podporu pro aplikaci licence z proměnné prostředí GROUPDOCS_LIC_PATH (ASSEMBLYPYTHON-30)
  • [Vylepšení] Aktualizovat GroupDocs.Assembly na verzi 26.7 a vestavěný runtime na .NET 10.0.14 (ASSEMBLYPYTHON-31)
  • [Vylepšení] Distribuovat čistý Python balíček pro Python 3.5 – 3.14 místo kompilovaného rozšíření (ASSEMBLYPYTHON-32)
  • [Vylepšení] Přijmout jeden DataSourceInfo v assemble_document() i jako seznam (ASSEMBLYPYTHON-33)
  • [Vylepšení] Vyvolat FileNotFoundError při chybějícím souboru, LicenseError pro licenci, kterou nelze použít, a GroupDocsAssemblyException pro ostatní chyby enginu (ASSEMBLYPYTHON-34)
  • [Vylepšení] Přejmenovat BarcodeSettings.x_resolution/y_resolution na xresolution/yresolution a učinit use_reflection_optimization atributem třídy (ASSEMBLYPYTHON-35)
  • [Vylepšení] Odebrat 32bitový Windows wheel (ASSEMBLYPYTHON-36)
  • [Oprava] Opravit zjištění CVE v 25.5.1: zlib 1.2.11 → 1.2.12 (+4 další) (ASSEMBLYPYTHON-11)

Změny veřejného API

Uživatelé aktualizace musí přejmenovat x_resolution/y_resolution a set_use_reflection_optimization(), a zachytit GroupDocsAssemblyException a LicenseError tam, kde dříve zachytávali RuntimeError. Všechno ostatní je doplňkové.

Nové třídy a členové

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

Přejmenováno

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

Staré názvy vyvolají AttributeError s nápovědou „Měli jste na mysli“, při čtení i při přiřazení.

Odebráno

  • DocumentAssembler.set_use_reflection_optimization(): místo toho přiřaďte atribut třídy, DocumentAssembler.use_reflection_optimization = False.

Změněno

  • DataSourceInfo přijímá dict nebo list.
  • assemble_document() přijímá jeden DataSourceInfo i jako seznam.
  • DocumentTableSet(path, load_handler) přijímá Python funkci nebo objekt s metodou handle(args).
  • DocumentTableColumn.type a KnownTypeSet.add() přijímají Python typ.
  • Chyby enginu vyvolávají FileNotFoundError, RuntimeError, LicenseError nebo GroupDocsAssemblyException. except Exception zachytí chyby obou vydání.

Nové funkce

Linux a macOS

26.11 má balíčky wheel pro Linux x64 (manylinux_2_27_x86_64, glibc 2.27 nebo novější) a pro macOS 12 nebo novější na Intel (macosx_12_0_x86_64) a Apple Silicon (macosx_12_0_arm64), kromě Windows x64. 25.5 měl pouze Windows wheel. pip 20.3 nebo novější vybere wheel pro danou platformu. Na Linuxu .NET runtime potřebuje ICU a šablony prezentací potřebují libgdiplus (viz Požadavky).

pip install groupdocs-assembly-net==26.11.0

Python data jako datový zdroj

DataSourceInfo přijímá dict, seznam dictů nebo seznam hodnot tak, jak jsou; 25.5 vyvolal TypeError pro dict. Wrapper převádí data na .NET objekty typované podle jejich struktury, takže čísla, řetězce, bool, datetime, date a Decimal hodnoty jsou dostupné v šabloně typované: <<[o.OrderDate.Month]>> a <<if [c.Vip]>> fungují stejně jako na .NET objektech. Dicty v jednom seznamu sdílejí jeden typ se sjednocením jejich klíčů.

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"),
])

Jeden datový zdroj bez seznamu

assemble_document() přijímá jeden DataSourceInfo nebo jejich seznam, stejně jako .NET params DataSourceInfo[]. 25.5 vyžadoval seznam a vyvolal TypeError: can't build Array value from 'groupdocs.assembly.DataSourceInfo' pro jediný.

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"))

Handlery načítání tabulek

DocumentTableSet(path, load_handler) přijímá Python funkci (args), nebo objekt s metodou handle(args), a volá ji pro každou tabulku dokumentu před jejím načtením. Handler nastaví args.options té tabulky, nebo přeskočí tabulku nastavením args.is_loaded = False; args.table_index udává, o kterou tabulku jde. 25.5 vyvolal TypeError pro Python funkci.

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 typy tam, kde API očekává .NET typ

Python typ představuje .NET typ, který člen očekává: float pro System.Double, int, str, bool, datetime. Sloupec tabulky dokumentu může být nastaven jako číselný, aby graf mohl součty provádět, a known_types umožňuje šabloně volat statické členy typu; také přijímá název .NET typu. 25.5 vyvolal TypeError: can't build Type value from 'type'.

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"))

Licence z prostředí

Nastavte GROUPDOCS_LIC_PATH na cestu k souboru licence nebo na URL, která licenci poskytuje, a licence bude aplikována při prvním volání enginu, bez licenčního kódu; 25.5 proměnnou nečtena. Pokud licence nemůže být aplikována (chybějící soubor, vypršené předplatné, licence pro jiný produkt), každé volání enginu vyvolá LicenseError, uvádějící proměnnou a důvod enginu, dokud License().set_license() neaplikuje licenci. Nastavte GROUPDOCS_LIC_STRICT=0 pro získání jednoho LicenseWarning a režimu hodnocení.

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>

Chyby podle typu

25.5 vyvolával prostý RuntimeError("Proxy error(<.NET exception>): ...") pro každou chybu enginu. 26.11 vyvolává FileNotFoundError pro chybějící šablonu nebo datový soubor, který stále dědí z RuntimeError; RuntimeError s pouhým zprávou enginu pro chybu šablony nebo chybějící člen dat; LicenseError pro licenci, kterou nelze aplikovat; a GroupDocsAssemblyException pro ostatní chyby enginu. LicenseError a GroupDocsAssemblyException lze importovat z groupdocs.assembly a nedědí z RuntimeError.

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)

Příklad kódu

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"))

Jak získat aktualizaci

PyPI

Aktualizujte na nejnovější balíček přes PyPI:

groupdocs-assembly-net 26.11.0

pip install groupdocs-assembly-net==26.11.0

Přímé stažení

Stáhněte si wheel balíčky pro vaši platformu ze stránky GroupDocs.Assembly for Python v26.11.

Zdroje