Python en .NET Versieverschillen
Aspose.Words voor Python via .NET is een verpakking van Aspose.Words voor .NET, Daarom hebben de twee producten bijna dezelfde set functies. Toch zijn er enkele nuances van werk en verschillen in functies en API, die op deze pagina worden beschreven.
Kenmerken
Door het wikkelproces zijn er een aantal functies die niet beschikbaar zijn in de Python versie. Hier is een lijst van de meest opmerkelijke functies die momenteel niet beschikbaar zijn in de Python versie.
- De implementatie van interfaces wordt nog niet ondersteund, daarom is het niet mogelijk om callbacks te gebruiken zoals IWarningCallback, IReplacingCallback, IFieldUpdatingCallback, IFieldMergingCallback enz.
- Afdrukken functie is niet beschikbaar omdat .NET Standard 2.0 versie van Aspose.Words wordt gebruikt als back-end van de python versie, die ook niet voorziet in deze functionaliteit.
- Alleen simpel Mail Merge De functionaliteit is voorzien van arrays van veldnamen en veldwaarden als gegevensbron.
- DocumentVisitor uitvoering is momenteel niet mogelijk van de Python code.
Gieten Aspose.Words Objecten in Python
Hoewel type casting is niet natuurlijk voor Python ontwikkelaars sommige taken kunnen niet worden uitgevoerd zonder het gieten van documenten knooppunten of velden om concrete type. Aspose.Words voor Python via .NET biedt speciale methoden die het gieten van objecten mogelijk maken wanneer dit nodig is.
Casting Nodes
Basisklasse voor alle documentnodes in Aspose.Words DOM is Node Klasse. Bijvoorbeeld get_child methode geeft terug en instantie van Node klasse, maar als je de terugkeerknoop moet wijzigen, moet je het in de meeste gevallen op beton gieten. De volgende code laat zien hoe je de lettertypekleur van de eerste moet veranderen Run in het document:
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")
Casting kan ook nodig zijn wanneer clone de methode wordt gebruikt:
doc = aw.Document(docs_base.my_dir + "Document.docx")
clone = doc.clone().as_document()
clone.save(docs_base.artifacts_dir + "CloneAndCombineDocuments.cloning_document.docx")
Zoals je zou kunnen merken waar in C# code die u zou gebruiken (Paragraph)node
voor gietgieten, in Python u moet gebruiken node.as_paragraph()
methode. In de Python versie van Aspose.Words Node klasse introduceert de volgende koppeling van as_xxx
methoden:
- 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()
De as_xxx
methode verhogen a RuntimeError
met het bericht als volgt als de knoop niet kan worden gecased naar het opgegeven type:
RuntimeError: Proxy error(InvalidCastException): Unable to cast object of type ‘Aspose.Words.XXX’ to type ‘Aspose.Words.Drawing.YYY’.
Gietende velden
Dezelfde situatie geldt voor de velden. Het volgende voorbeeld van code laat zien hoe hyperlink links te vervangen:
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")
Zoals je zou kunnen merken Field object biedt ook set van as_xxx
methoden, die hieronder zijn opgesomd:
- 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()
Gietende stijlen
Casting is ook nodig om te werken met tafel stijlen:
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")
Casting Ole Controls
Het volgende voorbeeld van code laat zien hoe je ActiveX controle eigenschappen kunt lezen:
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)
Lettertypebronnen
FontSourceBase klasse biedt set van as_xxx
methoden, die hieronder zijn opgesomd:
- as_file_font_source()
- as_folder_font_source()
- as_memory_font_source()
- as_stream_font_source()
- as_system_font_source()
Toegang tot indexeigenschappen
Aspose.Words voor Python laat indexer eigenschappen alleen door int type in .NET Het is echter mogelijk om andere types te gebruiken, bijvoorbeeld strings. Om deze leemte op te vullen heeft de volgende klasse een aanvullende methode:
- 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 Ledennaam
Om dichter bij Python wereld, API leden van Aspose.Words voor Python via .NET gebruikt python slang stijl, maar in de meeste gevallen hebben ze één tot één analoge in Aspose.Words voor .NET API. U kunt deze analoge vinden in de xml-bestand.