Python En .NET Weergawe Verskille

Aspose.Words vir Python via .NET is’n verpakking van Aspose.Words vir .NET, daarom het die twee produkte byna dieselfde stel kenmerke. Nietemin is daar’n paar nuanses van werk en verskille in kenmerke en API, wat op hierdie bladsy beskryf word.

Kenmerkende Verskille

As gevolg van die verpakking proses is daar’n paar funksies wat nie beskikbaar is in die Python weergawe. Hier is’n lys van die mees noemenswaardige kenmerke wat tans nie in die Python weergawe beskikbaar is nie.

  • Implementering van koppelvlakke word nog nie ondersteun nie, daarom is dit nie moontlik om terugbel soos IWarningCallback, IReplacingCallback, IFieldUpdatingCallback, IFieldMergingCallback en so aan.
  • Druk funksie is nie beskikbaar nie omdat .NET Standard 2.0 weergawe van Aspose.Words gebruik word as agterkant van die python weergawe, wat ook nie hierdie funksie bied nie.
  • Slegs eenvoudige Mail Merge funksionaliteit word voorsien met skikkings van veld name en veld waardes as’n data bron.
  • DocumentVisitor implementering is tans nie moontlik vanaf die Python kode nie.

Giet Aspose.Words Voorwerpe in Python

Alhoewel tipe giet is nie natuurlik vir Python ontwikkelaars sommige take kan nie bereik word sonder giet dokumente nodes of velde om konkrete tipe. Aspose.Words vir Python via .NET bied spesiale metodes wat toelaat giet voorwerpe waar dit nodig is.

Gietknope

Basis klas vir alle dokument nodes in Aspose.Words DOM is Node klas. Byvoorbeeld get_child metode terugkeer en geval van Node klas, maar as jy nodig het om die teruggekeer node verander, in die meeste gevalle moet jy dit te gooi om konkrete tipe. Die volgende kode demonstreer hoe om die lettertipe kleur van die eerste Run in die dokument te verander:

doc = aw.Document(docs_base.my_dir + "Document.docx")

# Get the first Run node and cast it to Run object.
run = doc.get_child(aw.NodeType.RUN, 0, True).as_run()

# Make changes to the run 
run.font.color = drawing.Color.red

# Save the result
doc.save(docs_base.artifacts_dir + "WorkingWithNode.change_run_color.docx")

Giet kan ook nodig wees wanneer clone metode gebruik word:

doc = aw.Document(docs_base.my_dir + "Document.docx")

clone = doc.clone().as_document()
clone.save(docs_base.artifacts_dir + "CloneAndCombineDocuments.cloning_document.docx")

Soos jy dalk opgemerk het waar in C# kode jy (Paragraph)node sou gebruik vir giet, in Python moet jy node.as_paragraph() metode gebruik. In die Python weergawe van Aspose.Words Node klas stel die volgende skakel van as_xxx metodes:

Die as_xxx metode verhoog’n RuntimeError met die boodskap soos die volgende as die knoop nie kan word in die gespesifiseerde tipe:

RuntimeError: Proxy error(InvalidCastException): Unable to cast object of type ‘Aspose.Words.XXX’ to type ‘Aspose.Words.Drawing.YYY’.

Gietvelde

Dieselfde situasie is op velde toegepas. Die volgende kode voorbeeld demonstreer hoe om hyper link skakels te vervang:

doc = aw.Document(docs_base.my_dir + "Hyperlinks.docx")

for field in doc.range.fields :
            
    if field.type == aw.fields.FieldType.FIELD_HYPERLINK:
                
        hyperlink = field.as_field_hyperlink()
    
        # Some hyperlinks can be local (links to bookmarks inside the document), ignore these.
        if hyperlink.sub_address != None :
            continue
    
        hyperlink.address = "https:#www.aspose.com"
        hyperlink.result = "Aspose - The .net & Java Component Publisher"

doc.save(docs_base.artifacts_dir + "WorkingWithFields.replace_hyperlinks.docx")

Soos jy dalk opgemerk Field voorwerp bied ook stel van as_xxx metodes, wat hieronder gelys:

Gietstyle

Gietwerk is ook nodig om met tafelstyle te werk:

doc = aw.Document()
builder = aw.DocumentBuilder(doc)

table = builder.start_table()
builder.insert_cell()
builder.write("Name")
builder.insert_cell()
builder.write("Value")
builder.end_row()
builder.insert_cell()
builder.insert_cell()
builder.end_table()

# Add a table style and modify it's properties.
tableStyle = doc.styles.add(aw.StyleType.TABLE, "MyTableStyle1").as_table_style()
tableStyle.borders.line_style = aw.LineStyle.DOUBLE
tableStyle.borders.line_width = 1
tableStyle.left_padding = 18
tableStyle.right_padding = 18
tableStyle.top_padding = 12
tableStyle.bottom_padding = 12

table.style = tableStyle

doc.save(docs_base.artifacts_dir + "WorkingWithTableStylesAndFormatting.create_table_style.docx")

Giet Ole Beheer

Die volgende kode voorbeeld demonstreer hoe Om ActiveX beheer eienskappe te lees:

doc = aw.Document(docs_base.my_dir + "ActiveX controls.docx")

properties = ""
for shape in doc.get_child_nodes(aw.NodeType.SHAPE, True) :
            
    shape = shape.as_shape()
            
    if shape.ole_format == None :
        break
    
    oleControl = shape.ole_format.ole_control
    if oleControl.is_forms2_ole_control :
                
        checkBox =  oleControl.as_forms2_ole_control()
        properties = properties + "\nCaption: " + checkBox.caption
        properties = properties + "\nValue: " + checkBox.value
        properties = properties + "\nEnabled: " + str(checkBox.enabled)
        properties = properties + "\nType: " + str(checkBox.type)
    
        if checkBox.child_nodes != None :
            properties = properties + "\nChildNodes: " + checkBox.child_nodes
    
        properties += "\n"

properties = properties + "\nTotal ActiveX Controls found: " + str(doc.get_child_nodes(aw.NodeType.SHAPE, True).count)
print("\n" + properties)

Giet Lettertipe Bronne

FontSourceBase klas bied stel van as_xxx metodes, wat hieronder gelys word:

Toegang Tot Indeksereienskappe

Aspose.Words vir Python laat indekser eienskappe slegs deur int tipe, in .NET maar dit is moontlik om ander tipes, byvoorbeeld strings gebruik. Om hierdie leemte te vul die volgende klasse het’n bykomende metodes:

API Lede Se Naam

Om nader aan Python wêreld te wees, API lede van Aspose.Words vir Python via .NET gebruik pythonic slang styl, maar in die meeste gevalle het hulle een tot een analoog in Aspose.Words vir .NET API. Jy kan hierdie analoog in die xml-lêer.