Python і .NET Версія Відмінності

Aspose.Words для Python via .NET є обгорткою Aspose.Words для .NET, Ось чому дві вироби мають майже однаковий набір функцій. Тим не менш, є деякі нюанси роботи і відмінностей в особливостях і API, які описані на цій сторінці.

Особливі відмінності

У зв’язку з процесом обгортання є деякі функції, які не доступні в Python версія. Ось список найбільш нездатних функцій, які наразі недоступні Python версія.

  • Реалізація інтерфейсів ще не підтримується, тому не можна використовувати зворотні дзвінки, такі як IWarningCallback, IReplacingCallback, IFieldUpdatingCallback, IFieldMergingCallback і т.д.
  • Функція друку не доступна, тому .NET Standard 2.0 версія Aspose.Words використовується як Back-end версії python, яка також не забезпечує функціональність.
  • Ім’я * Тільки простий Mail Merge функціональність забезпечується масивами назв і значень поля як джерела даних.
  • Ім’я * DocumentVisitor неможливе виконання Python код.

Кастинг Aspose.Words Об’єкти в Python

Неприємний тип лиття не є природним для Python розробники не можуть виконуватися без заливки вузлів або полів на бетонний тип. Aspose.Words для Python via .NET надає спеціальні методи, які дозволяють вилити предмети, де це необхідно.

Кастинг Ноди

Базовий клас для всіх вузлів документів Aspose.Words DOM є Node клас. Приклад get_child метод повертає і екземпляр Node клас, але якщо потрібно змінити повернутий вузол, в більшості випадків потрібно його відлити до бетонного типу. Наступний код показує, як змінити колір шрифту першого Run в документі:

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 метод використовується:

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# Ви будете використовувати (Paragraph)node для лиття, в Python Ви повинні використовувати node.as_paragraph() метод. У Python версія Aspose.Words Node Клас знайомить з наступним посиланням as_xxx методи:

Про нас as_xxx метод підняти RuntimeError з повідомленням, як наступне, якщо вершина не може бути припущена до вказаного типу:

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

Кастинг поля

Так само ситуація наноситься на поля. Приклад коду показує, як замінити гіперпосилання:

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

Як ви помітили Field об’єкт також забезпечує набір as_xxx методи, які вказані нижче:

Кастинг Стилі

Кастинг також потрібно для роботи з стилістикою:

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 Controls

Приклад коду показує, як читати властивості керування 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)

Лиття джерела шрифту

FontSourceBase Клас надає набір комплектів as_xxx методи, які вказані нижче:

Доступ до облікових записів

Aspose.Words для Python дозволяє індексувати властивості тільки int тип, в .NET Однак можна використовувати інші типи, наприклад рядки. Щоб заповнити цей проміжок, такі класи мають додаткові методи:

API Члени

Щоб бути ближче Python світ, API членів Aspose.Words для Python via .NET використовує стиль pythonic змія, проте в більшості випадків вони мають один до одного аналога в Aspose.Words для .NET APIй Ви можете знайти ці аналоги в xml файлй