Python și .NET diferențe de versiune

Aspose.Words pentru Python via .NET este un înveliș de Aspose.Words pentru .NET, de aceea cele două produse au aproape același set de caracteristici. Cu toate acestea, există unele nuanțe de lucru și diferențe în caracteristici și API, care sunt descrise pe această pagină.

Diferențe De Caracteristici

Datorită procesului de împachetare există unele caracteristici care nu sunt disponibile în versiunea Python. Iată o listă cu cele mai notabile caracteristici care sunt în prezent nu sunt disponibile în versiunea Python.

  • Implementarea interfețelor nu este încă acceptată, de aceea nu este posibil să se utilizeze apeluri inverse, cum ar fi IWarningCallback, IReplacingCallback, IFieldUpdatingCallback, IFieldMergingCallback etc.
  • Funcția de imprimare nu este disponibilă deoarece versiunea .NET Standard 2.0 a Aspose.Words este utilizată ca back-end al versiunii python, care, de asemenea, nu oferă această funcționalitate.
  • Doar funcționalitatea simplă Mail Merge este furnizată cu matrice de nume de câmpuri și valori de câmp ca sursă de date.
  • DocumentVisitor implementarea nu este posibilă în prezent din Codul Python.

Turnare Aspose.Words obiecte în Python

Deși turnarea de tip nu este naturală pentru dezvoltatorii Python, unele sarcini nu pot fi realizate fără turnarea nodurilor sau câmpurilor de documente la tipul concret. Aspose.Words pentru Python via .NET oferă metode speciale care permit turnarea obiectelor acolo unde este necesar.

Noduri De Turnare

Clasa de bază pentru toate nodurile documentului din Aspose.Words DOM este Node clasă. De exemplu, metoda get_child returnează și instanța clasei Node, dar dacă trebuie să modificați nodul returnat, în majoritatea cazurilor ar trebui să îl aruncați la tipul concret. Următorul cod demonstrează modul de schimbare a culorii fontului primului Run din 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")

Turnarea poate fi, de asemenea, necesară atunci când se utilizează metoda clone:

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

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

După cum ați observat unde în codul C# ați folosi (Paragraph)node pentru turnare, în Python trebuie să utilizați metoda node.as_paragraph(). În versiunea Python a clasei Aspose.Words Node se introduce următorul link al metodelor as_xxx:

Metoda as_xxx ridică un RuntimeError cu mesajul ca următorul dacă nodul nu poate fi casetat la tipul specificat:

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

Câmpuri De Turnare

Aceeași situație s-a aplicat câmpurilor. Următorul exemplu de cod demonstrează cum să înlocuiți linkurile hyper link:

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

După cum ați observat, obiectul Field oferă, de asemenea, un set de metode as_xxx, care sunt enumerate mai jos:

Stiluri De Turnare

Turnarea este, de asemenea, necesară pentru a lucra cu stiluri de masă:

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

Turnare Ole Controale

Următorul exemplu de cod demonstrează modul de citire a proprietăților de control ActiveX:

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)

Surse De Font De Turnare

FontSourceBase clasa oferă set de as_xxx metode, care sunt enumerate mai jos:

Accesarea Proprietăților Indexatorului

Aspose.Words pentru Python permite proprietățile indexatorului numai prin int tip, în .NET cu toate acestea este posibil să se utilizeze alte tipuri, de exemplu șiruri. Pentru a umple acest gol, următoarele clase au metode suplimentare:

API Denumirea Membrilor

Pentru a fi mai aproape de Python Lume, API membri ai Aspose.Words pentru Python via .NET folosește stilul pitonic snake, cu toate acestea, în majoritatea cazurilor, au un analog în Aspose.Words pentru .NET API. Puteți găsi aceste analogice în fișier xml.