Python a .NET Rozdíly v verzích
Aspose.Words místo Python via .NET je obal Aspose.Words místo .NET, Proto mají oba produkty téměř stejný soubor funkcí. Nicméně, tam jsou některé nuance práce a rozdíly v funkcích a API, které jsou popsány na této stránce.
Rozdíly funkcí
Vzhledem k procesu balení existují některé funkce, které nejsou k dispozici v Python verze. Zde je seznam nejpozoruhodnějších funkcí, které jsou v současné době nejsou k dispozici v Python verze.
- Realizace rozhraní ještě není podporována, proto není možné použít zpětné volání jako IWarningCallback, IReplacingCallback, IFieldUpdatingCallback, IFieldMergingCallback atd.
- Tisk funkce není k dispozici, protože .NET Standard 2. 0 verze Aspose.Words se používá jako back-end python verze, která také neposkytuje tuto funkci.
- Pouze jednoduché Mail Merge funkce je vybavena polemi jmen polí a hodnot polí jako zdroj dat.
- DocumentVisitor V současné době není možné provést Python kód.
Odlévání Aspose.Words Objekty v Python
Ačkoli typ casting není přirozený pro Python vývojáři některé úkoly nelze splnit bez lití dokumentů uzlů nebo polí do betonového typu. Aspose.Words místo Python via .NET poskytuje speciální metody umožňující lití předmětů tam, kde je to nutné.
Uzel odlévání
Základní třída pro všechny uzly dokumentů v Aspose.Words DOM je Node třída. Například get_child metoda vrací a instance Node třída, ale pokud potřebujete upravit vrácený uzel, ve většině případů byste ho měli odhodit na konkrétní typ. Následující kód ukazuje, jak změnit barvu písma prvního Run v dokumentu:
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")
Odlévání může být nutné, pokud clone metoda se používá:
doc = aw.Document(docs_base.my_dir + "Document.docx")
clone = doc.clone().as_document()
clone.save(docs_base.artifacts_dir + "CloneAndCombineDocuments.cloning_document.docx")
Jak jste si mohli všimnout kde v C# kód, který byste použili (Paragraph)node
pro odlévání v Python musíte použít node.as_paragraph()
metoda. V Python verze Aspose.Words Node třída zavádí následující odkaz as_xxx
metody:
- 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()
• as_xxx
způsob zvýšení a RuntimeError
se zprávou, jako je následující, nelze-li uzel přiřadit k určenému typu:
RuntimeError: Proxy error(InvalidCastException): Unable to cast object of type ‘Aspose.Words.XXX’ to type ‘Aspose.Words.Drawing.YYY’.
Odlévání polí
Stejná situace platí i pro pole. Následující příklad kódu ukazuje, jak nahradit hyperlinkové odkazy:
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")
Jak jste si mohli všimnout Field objekt také poskytuje soubor as_xxx
metody uvedené níže:
- 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()
Casting Styles
Odlévání je také nutné pracovat s stolní styly:
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")
Odlévání Ole Controls
Následující příklad kódu ukazuje, jak číst vlastnosti ActiveX control:
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)
Zdroje odlévání písem
FontSourceBase třída poskytuje soubor as_xxx
metody uvedené níže:
- as_file_font_source()
- as_folder_font_source()
- as_memory_font_source()
- as_stream_font_source()
- as_system_font_source()
Přístup k vlastnostem indexéru
Aspose.Words místo Python umožňuje indexování pouze podle int typ, .NET lze však použít i jiné typy, například řetězce. Pro vyplnění této mezery mají tyto třídy další metody:
- 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 Pojmenování členů
Být blíž Python svět, API členové Aspose.Words místo Python via .NET používá pythonický had styl, ale ve většině případů mají jeden na jeden analog v Aspose.Words místo .NET API. Tyto analogy najdete v xml soubor.