Python ve .NET Versiyon Farkları

Python via .NET için Aspose.Words, .NET için Aspose.Words’in bir sarmalayıcısıdır; bu nedenle iki ürün neredeyse aynı özelliklere sahiptir. Bununla birlikte, bu sayfada açıklanan özelliklerde ve API’de bazı çalışma nüansları ve farklılıklar vardır.

Özellik Farkları

Sarma işlemi nedeniyle Python sürümünde bulunmayan bazı özellikler bulunmaktadır. Şu anda Python sürümünde bulunmayan en dikkat çekici özelliklerin bir listesini burada bulabilirsiniz.

  • Arayüzlerin uygulanması henüz desteklenmemektedir, bu nedenle IWarningCallback, IReplacingCallback, IFieldUpdatingCallback, IFieldMergingCallback vb. gibi geri aramaların kullanılması mümkün değildir.
  • Aspose.Words’nin .NET Standard 2.0 sürümü, bu işlevi sağlamayan python sürümünün arka ucu olarak kullanıldığından yazdırma özelliği mevcut değildir.
  • Veri kaynağı olarak alan adları ve alan değerleri dizileriyle yalnızca basit Mail Merge işlevselliği sağlanır.
  • Python kodundan DocumentVisitor uygulaması şu anda mümkün değildir.

Aspose.Words Nesnelerini Python’de Yayınlama

Her ne kadar Python geliştiricileri için tür dökümü doğal olmasa da bazı görevler, belge düğümleri veya alanları somut tipe dönüştürülmeden gerçekleştirilemez. Python via .NET için Aspose.Words, nesnelerin gerekli olduğu yerde yayınlanmasına olanak tanıyan özel yöntemler sağlar.

Döküm Düğümleri

Aspose.Words DOM’deki tüm belge düğümlerinin temel sınıfı Node sınıfıdır. Örneğin, get_child yöntemi, Node sınıfının örneğini döndürür, ancak döndürülen düğümü değiştirmeniz gerekiyorsa, çoğu durumda onu somut türe dönüştürmeniz gerekir. Aşağıdaki kod, belgedeki ilk Run‘un yazı tipi renginin nasıl değiştirileceğini gösterir:

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

clone yöntemi kullanıldığında döküm de gerekli olabilir:

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

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

C# kodunda yayınlama için (Paragraph)node‘yi nerede kullanacağınızı fark etmiş olabileceğiniz gibi, Python’de node.as_paragraph() yöntemini kullanmanız gerekir. Aspose.Words’un Python sürümünde Node sınıfı, as_xxx yöntemlerinin aşağıdaki bağlantısını sunar:

as_xxx yöntemi, düğüm belirtilen türe alınamıyorsa aşağıdaki gibi bir mesajla bir RuntimeError oluşturur:

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

Döküm Alanları

Aynı durum sahalar için de geçerliydi. Aşağıdaki kod örneği, hiper bağlantı bağlantılarının nasıl değiştirileceğini gösterir:

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

Fark edebileceğiniz gibi Field nesnesi ayrıca aşağıda listelenen bir dizi as_xxx yöntemini de sağlar:

Döküm Stilleri

Tablo stilleriyle çalışmak için döküm de gereklidir:

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

Ole Kontrollerini Döküm

Aşağıdaki kod örneği, ActiveX denetimi özelliklerinin nasıl okunacağını gösterir:

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)

Yazı Tipi Kaynaklarını Döküm

FontSourceBase sınıfı, aşağıda listelenen as_xxx yöntemleri kümesini sağlar:

Dizin Oluşturucu Özelliklerine Erişim

Python için Aspose.Words, dizin oluşturucu özelliklerine yalnızca int türüne göre izin verir; .NET’de ise dizeler gibi diğer türleri kullanmak mümkündür. Bu boşluğu doldurmak için aşağıdaki sınıfların ek yöntemleri vardır:

API Üyelerinin Adlandırılması

Python dünyasına daha yakın olmak amacıyla, Python via .NET için Aspose.Words’in API üyeleri Pythonic yılan stilini kullanır, ancak çoğu durumda .NET API için Aspose.Words’de bire bir analoga sahiptirler. Bu analogları xml dosyası‘de bulabilirsiniz.