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
DataSourceInfovassemble_document()i jako seznam (ASSEMBLYPYTHON-33) - [Vylepšení] Vyvolat
FileNotFoundErrorpři chybějícím souboru,LicenseErrorpro licenci, kterou nelze použít, aGroupDocsAssemblyExceptionpro ostatní chyby enginu (ASSEMBLYPYTHON-34) - [Vylepšení] Přejmenovat
BarcodeSettings.x_resolution/y_resolutionnaxresolution/yresolutiona učinituse_reflection_optimizationatributem 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.xresolutionBarcodeSettings.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
DataSourceInfopřijímá dict nebo list.assemble_document()přijímá jedenDataSourceInfoi jako seznam.DocumentTableSet(path, load_handler)přijímá Python funkci nebo objekt s metodouhandle(args).DocumentTableColumn.typeaKnownTypeSet.add()přijímají Python typ.- Chyby enginu vyvolávají
FileNotFoundError,RuntimeError,LicenseErrorneboGroupDocsAssemblyException.except Exceptionzachytí 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.