Python și .NET diferențe de versiune
Aspose.Words pentru Python via .NET este un înveliș de Aspose.Words pentru .NET, de aceea cele două produse au aproape același set de caracteristici. Cu toate acestea, există unele nuanțe de lucru și diferențe în caracteristici și API, care sunt descrise pe această pagină.
Diferențe De Caracteristici
Datorită procesului de împachetare există unele caracteristici care nu sunt disponibile în versiunea Python. Iată o listă cu cele mai notabile caracteristici care sunt în prezent nu sunt disponibile în versiunea Python.
- Implementarea interfețelor nu este încă acceptată, de aceea nu este posibil să se utilizeze apeluri inverse, cum ar fi IWarningCallback, IReplacingCallback, IFieldUpdatingCallback, IFieldMergingCallback etc.
- Funcția de imprimare nu este disponibilă deoarece versiunea .NET Standard 2.0 a Aspose.Words este utilizată ca back-end al versiunii python, care, de asemenea, nu oferă această funcționalitate.
- Doar funcționalitatea simplă Mail Merge este furnizată cu matrice de nume de câmpuri și valori de câmp ca sursă de date.
- DocumentVisitor implementarea nu este posibilă în prezent din Codul Python.
Turnare Aspose.Words obiecte în Python
Deși turnarea de tip nu este naturală pentru dezvoltatorii Python, unele sarcini nu pot fi realizate fără turnarea nodurilor sau câmpurilor de documente la tipul concret. Aspose.Words pentru Python via .NET oferă metode speciale care permit turnarea obiectelor acolo unde este necesar.
Noduri De Turnare
Clasa de bază pentru toate nodurile documentului din Aspose.Words DOM este Node clasă. De exemplu, metoda get_child returnează și instanța clasei Node, dar dacă trebuie să modificați nodul returnat, în majoritatea cazurilor ar trebui să îl aruncați la tipul concret. Următorul cod demonstrează modul de schimbare a culorii fontului primului Run din 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")
Turnarea poate fi, de asemenea, necesară atunci când se utilizează metoda 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")
După cum ați observat unde în codul C# ați folosi (Paragraph)node
pentru turnare, în Python trebuie să utilizați metoda node.as_paragraph()
. În versiunea Python a clasei Aspose.Words Node se introduce următorul link al metodelor 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()
Metoda as_xxx
ridică un RuntimeError
cu mesajul ca următorul dacă nodul nu poate fi casetat la tipul specificat:
RuntimeError: Proxy error(InvalidCastException): Unable to cast object of type ‘Aspose.Words.XXX’ to type ‘Aspose.Words.Drawing.YYY’.
Câmpuri De Turnare
Aceeași situație s-a aplicat câmpurilor. Următorul exemplu de cod demonstrează cum să înlocuiți linkurile hyper link:
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")
După cum ați observat, obiectul Field oferă, de asemenea, un set de metode as_xxx
, care sunt enumerate mai jos:
- 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()
Stiluri De Turnare
Turnarea este, de asemenea, necesară pentru a lucra cu stiluri de masă:
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")
Turnare Ole Controale
Următorul exemplu de cod demonstrează modul de citire a proprietăților de control 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)
Surse De Font De Turnare
FontSourceBase clasa oferă set de as_xxx
metode, care sunt enumerate mai jos:
- as_file_font_source()
- as_folder_font_source()
- as_memory_font_source()
- as_stream_font_source()
- as_system_font_source()
Accesarea Proprietăților Indexatorului
Aspose.Words pentru Python permite proprietățile indexatorului numai prin int tip, în .NET cu toate acestea este posibil să se utilizeze alte tipuri, de exemplu șiruri. Pentru a umple acest gol, următoarele clase au metode suplimentare:
- FormFieldCollection
- FontInfoCollection
- CustomXmlPartCollection
- CustomXmlPropertyCollection
- BuiltInDocumentProperties
- CustomDocumentProperties
- BookmarksOutlineLevelCollection
- VbaModuleCollection
- BookmarkCollection
- BorderCollection
- HeaderFooterCollection
- StyleCollection
- VariableCollection
API Denumirea Membrilor
Pentru a fi mai aproape de Python Lume, API membri ai Aspose.Words pentru Python via .NET folosește stilul pitonic snake, cu toate acestea, în majoritatea cazurilor, au un analog în Aspose.Words pentru .NET API. Puteți găsi aceste analogice în fișier xml.