Python En .NET Weergawe Verskille
Aspose.Words vir Python via .NET is’n verpakking van Aspose.Words vir .NET, daarom het die twee produkte byna dieselfde stel kenmerke. Nietemin is daar’n paar nuanses van werk en verskille in kenmerke en API, wat op hierdie bladsy beskryf word.
Kenmerkende Verskille
As gevolg van die verpakking proses is daar’n paar funksies wat nie beskikbaar is in die Python weergawe. Hier is’n lys van die mees noemenswaardige kenmerke wat tans nie in die Python weergawe beskikbaar is nie.
- Implementering van koppelvlakke word nog nie ondersteun nie, daarom is dit nie moontlik om terugbel soos IWarningCallback, IReplacingCallback, IFieldUpdatingCallback, IFieldMergingCallback en so aan.
- Druk funksie is nie beskikbaar nie omdat .NET Standard 2.0 weergawe van Aspose.Words gebruik word as agterkant van die python weergawe, wat ook nie hierdie funksie bied nie.
- Slegs eenvoudige Mail Merge funksionaliteit word voorsien met skikkings van veld name en veld waardes as’n data bron.
- DocumentVisitor implementering is tans nie moontlik vanaf die Python kode nie.
Giet Aspose.Words Voorwerpe in Python
Alhoewel tipe giet is nie natuurlik vir Python ontwikkelaars sommige take kan nie bereik word sonder giet dokumente nodes of velde om konkrete tipe. Aspose.Words vir Python via .NET bied spesiale metodes wat toelaat giet voorwerpe waar dit nodig is.
Gietknope
Basis klas vir alle dokument nodes in Aspose.Words DOM is Node klas. Byvoorbeeld get_child metode terugkeer en geval van Node klas, maar as jy nodig het om die teruggekeer node verander, in die meeste gevalle moet jy dit te gooi om konkrete tipe. Die volgende kode demonstreer hoe om die lettertipe kleur van die eerste Run in die dokument te verander:
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")
Giet kan ook nodig wees wanneer clone metode gebruik word:
doc = aw.Document(docs_base.my_dir + "Document.docx")
clone = doc.clone().as_document()
clone.save(docs_base.artifacts_dir + "CloneAndCombineDocuments.cloning_document.docx")
Soos jy dalk opgemerk het waar in C# kode jy (Paragraph)node
sou gebruik vir giet, in Python moet jy node.as_paragraph()
metode gebruik. In die Python weergawe van Aspose.Words Node klas stel die volgende skakel van as_xxx
metodes:
- 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()
Die as_xxx
metode verhoog’n RuntimeError
met die boodskap soos die volgende as die knoop nie kan word in die gespesifiseerde tipe:
RuntimeError: Proxy error(InvalidCastException): Unable to cast object of type ‘Aspose.Words.XXX’ to type ‘Aspose.Words.Drawing.YYY’.
Gietvelde
Dieselfde situasie is op velde toegepas. Die volgende kode voorbeeld demonstreer hoe om hyper link skakels te vervang:
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")
Soos jy dalk opgemerk Field voorwerp bied ook stel van as_xxx
metodes, wat hieronder gelys:
- 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()
Gietstyle
Gietwerk is ook nodig om met tafelstyle te werk:
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")
Giet Ole Beheer
Die volgende kode voorbeeld demonstreer hoe Om ActiveX beheer eienskappe te lees:
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)
Giet Lettertipe Bronne
FontSourceBase klas bied stel van as_xxx
metodes, wat hieronder gelys word:
- as_file_font_source()
- as_folder_font_source()
- as_memory_font_source()
- as_stream_font_source()
- as_system_font_source()
Toegang Tot Indeksereienskappe
Aspose.Words vir Python laat indekser eienskappe slegs deur int tipe, in .NET maar dit is moontlik om ander tipes, byvoorbeeld strings gebruik. Om hierdie leemte te vul die volgende klasse het’n bykomende metodes:
- FormFieldCollection
- FontInfoCollection
- CustomXmlPartCollection
- CustomXmlPropertyCollection
- BuiltInDocumentProperties
- CustomDocumentProperties
- BookmarksOutlineLevelCollection
- VbaModuleCollection
- BookmarkCollection
- BorderCollection
- HeaderFooterCollection
- StyleCollection
- VariableCollection
API Lede Se Naam
Om nader aan Python wêreld te wees, API lede van Aspose.Words vir Python via .NET gebruik pythonic slang styl, maar in die meeste gevalle het hulle een tot een analoog in Aspose.Words vir .NET API. Jy kan hierdie analoog in die xml-lêer.