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
методы:
- as_document()
- as_section()
- as_body()
- as_header_footer()
- as_table()
- as_row()
- as_cell()
- as_paragraph()
- as_bookmark_start()
- as_bookmark_end()
- as_editable_range_start()
- as_editable_range_end()
- as_group_shape()
- as_shape()
- as_comment()
- as_footnote()
- as_run()
- as_field_start()
- as_field_separator()
- as_field_end()
- as_form_field()
- as_special_char()
- as_smart_tag()
- as_structured_document_tag()
- as_structured_document_tag_range_start()
- as_structured_document_tag_range_end()
- as_glossary_document()
- as_building_block()
- as_comment_range_start()
- as_comment_range_end()
- as_office_math()
- as_sub_document()
- as_composite_node()
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
методы, которые перечислены ниже:
- as_field_unknown()
- as_field_merge_barcode()
- as_field_display_barcode()
- as_field_print()
- as_field_private()
- as_field_advance()
- as_field_form_check_box()
- as_field_form_drop_down()
- as_field_index()
- as_field_rd()
- as_field_ta()
- as_field_toa()
- as_field_ask()
- as_field_auto_text()
- as_field_auto_text_list()
- as_field_bibliography()
- as_field_citation()
- as_field_dde()
- as_field_dde_auto()
- as_field_fill_in()
- as_field_glossary()
- as_field_import()
- as_field_include()
- as_field_shape()
- as_field_database()
- as_field_skip_if()
- as_field_list_num()
- as_field_rev_num()
- as_field_section()
- as_field_section_pages()
- as_field_data()
- as_field_embed()
- as_field_ocx()
- as_field_auto_num()
- as_field_auto_num_lgl()
- as_field_auto_num_out()
- as_field_add_in()
- as_field_barcode()
- as_field_bidi_outline()
- as_field_eq()
- as_field_footnote_ref()
- as_field_info()
- as_field_user_address()
- as_field_user_initials()
- as_field_user_name()
- as_field_include_picture()
- as_field_page()
- as_field_create_date()
- as_field_edit_time()
- as_field_print_date()
- as_field_save_date()
- as_field_go_to_button()
- as_field_author()
- as_field_comments()
- as_field_file_name()
- as_field_file_size()
- as_field_keywords()
- as_field_last_saved_by()
- as_field_num_chars()
- as_field_num_pages()
- as_field_num_words()
- as_field_subject()
- as_field_template()
- as_field_title()
- as_field_formula()
- as_field_symbol()
- as_field_quote()
- as_field_set()
- as_field_address_block()
- as_field_compare()
- as_field_date()
- as_field_doc_property()
- as_field_doc_variable()
- as_field_greeting_line()
- as_field_hyperlink()
- as_field_if()
- as_field_include_text()
- as_field_link()
- as_field_macro_button()
- as_field_merge_field()
- as_field_merge_rec()
- as_field_merge_seq()
- as_field_next()
- as_field_next_if()
- as_field_note_ref()
- as_field_page_ref()
- as_field_ref()
- as_field_seq()
- as_field_style_ref()
- as_field_tc()
- as_field_time()
- as_field_toc()
- as_field_xe()
- as_field_form_text()
Стили кастинга
Кастинг также необходим для работы со стилями столов:
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
методы, которые перечислены ниже:
- as_file_font_source()
- as_folder_font_source()
- as_memory_font_source()
- as_stream_font_source()
- as_system_font_source()
Доступ к свойствам индекса
Aspose.Words для Python Позволяет индексировать только int Тип, в .NET Однако можно использовать и другие типы, например струны. Чтобы заполнить этот пробел, следующие классы имеют дополнительные методы:
- FormFieldCollection * get_by_name(bookmark_name)
- FontInfoCollection * get_by_name(name)
- CustomXmlPartCollection * get_by_id(id)
- CustomXmlPropertyCollection * get_by_name(name)
- BuiltInDocumentProperties * get_by_name(name)
- CustomDocumentProperties * get_by_name(name)
- BookmarksOutlineLevelCollection * get_by_name(name)
- VbaModuleCollection * get_by_name(name)
- BookmarkCollection * get_by_name(bookmark_name)
- BorderCollection * get_by_border_type(border_type)
- HeaderFooterCollection * get_by_header_footer_type(header_footer_type)
- StyleCollection * get_by_name(name) * get_by_style_identifier(sti)
- VariableCollection * get_by_name(name)
API Наименование членов
Быть ближе к Python Мир, API члены Aspose.Words для Python via .NET использует стиль питоновой змеи, однако в большинстве случаев они имеют один-один аналог в Aspose.Words для .NET API. Вы можете найти этот аналог в xml файл.