Python и .NET Различия версий

Aspose.Words для Python via .NET Является оберткой Aspose.Words для .NET, Именно поэтому оба продукта имеют практически одинаковый набор функций. Тем не менее, есть некоторые нюансы работы и различия в особенностях и API, которые описаны на этой странице.

Особенности различий

Из-за процесса обертывания есть некоторые функции, которые не доступны в Python Версия. Вот список наиболее заметных функций, которые в настоящее время не доступны. Python Версия.

  • Реализация интерфейсов еще не поддерживается, поэтому невозможно использовать обратные вызовы, такие как: IWarningCallback, IReplacingCallback, IFieldUpdatingCallback, IFieldMergingCallback и т.д.
  • Функция печати недоступна, потому что .NET Standard Версия 2.0 Aspose.Words Используется в качестве бэкэнда 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 методы:

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

Источники Casting Font

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

Доступ к свойствам индекса

Aspose.Words для Python Позволяет индексировать только int Тип, в .NET Однако можно использовать и другие типы, например струны. Чтобы заполнить этот пробел, следующие классы имеют дополнительные методы:

API Наименование членов

Быть ближе к Python Мир, API члены Aspose.Words для Python via .NET использует стиль питоновой змеи, однако в большинстве случаев они имеют один-один аналог в Aspose.Words для .NET API. Вы можете найти этот аналог в xml файл.