Python en .NET Versieverschillen

Aspose.Words voor Python via .NET is een verpakking van Aspose.Words voor .NET, Daarom hebben de twee producten bijna dezelfde set functies. Toch zijn er enkele nuances van werk en verschillen in functies en API, die op deze pagina worden beschreven.

Kenmerken

Door het wikkelproces zijn er een aantal functies die niet beschikbaar zijn in de Python versie. Hier is een lijst van de meest opmerkelijke functies die momenteel niet beschikbaar zijn in de Python versie.

  • De implementatie van interfaces wordt nog niet ondersteund, daarom is het niet mogelijk om callbacks te gebruiken zoals IWarningCallback, IReplacingCallback, IFieldUpdatingCallback, IFieldMergingCallback enz.
  • Afdrukken functie is niet beschikbaar omdat .NET Standard 2.0 versie van Aspose.Words wordt gebruikt als back-end van de python versie, die ook niet voorziet in deze functionaliteit.
  • Alleen simpel Mail Merge De functionaliteit is voorzien van arrays van veldnamen en veldwaarden als gegevensbron.
  • DocumentVisitor uitvoering is momenteel niet mogelijk van de Python code.

Gieten Aspose.Words Objecten in Python

Hoewel type casting is niet natuurlijk voor Python ontwikkelaars sommige taken kunnen niet worden uitgevoerd zonder het gieten van documenten knooppunten of velden om concrete type. Aspose.Words voor Python via .NET biedt speciale methoden die het gieten van objecten mogelijk maken wanneer dit nodig is.

Casting Nodes

Basisklasse voor alle documentnodes in Aspose.Words DOM is Node Klasse. Bijvoorbeeld get_child methode geeft terug en instantie van Node klasse, maar als je de terugkeerknoop moet wijzigen, moet je het in de meeste gevallen op beton gieten. De volgende code laat zien hoe je de lettertypekleur van de eerste moet veranderen Run in het document:

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

Casting kan ook nodig zijn wanneer clone de methode wordt gebruikt:

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

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

Zoals je zou kunnen merken waar in C# code die u zou gebruiken (Paragraph)node voor gietgieten, in Python u moet gebruiken node.as_paragraph() methode. In de Python versie van Aspose.Words Node klasse introduceert de volgende koppeling van as_xxx methoden:

De as_xxx methode verhogen a RuntimeError met het bericht als volgt als de knoop niet kan worden gecased naar het opgegeven type:

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

Gietende velden

Dezelfde situatie geldt voor de velden. Het volgende voorbeeld van code laat zien hoe hyperlink links te vervangen:

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

Zoals je zou kunnen merken Field object biedt ook set van as_xxx methoden, die hieronder zijn opgesomd:

Gietende stijlen

Casting is ook nodig om te werken met tafel stijlen:

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

Casting Ole Controls

Het volgende voorbeeld van code laat zien hoe je ActiveX controle eigenschappen kunt lezen:

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)

Lettertypebronnen

FontSourceBase klasse biedt set van as_xxx methoden, die hieronder zijn opgesomd:

Toegang tot indexeigenschappen

Aspose.Words voor Python laat indexer eigenschappen alleen door int type in .NET Het is echter mogelijk om andere types te gebruiken, bijvoorbeeld strings. Om deze leemte op te vullen heeft de volgende klasse een aanvullende methode:

API Ledennaam

Om dichter bij Python wereld, API leden van Aspose.Words voor Python via .NET gebruikt python slang stijl, maar in de meeste gevallen hebben ze één tot één analoge in Aspose.Words voor .NET API. U kunt deze analoge vinden in de xml-bestand.