Python ve .NET Versiyon Farkları
Python via .NET için Aspose.Words, .NET için Aspose.Words’in bir sarmalayıcısıdır; bu nedenle iki ürün neredeyse aynı özelliklere sahiptir. Bununla birlikte, bu sayfada açıklanan özelliklerde ve API’de bazı çalışma nüansları ve farklılıklar vardır.
Özellik Farkları
Sarma işlemi nedeniyle Python sürümünde bulunmayan bazı özellikler bulunmaktadır. Şu anda Python sürümünde bulunmayan en dikkat çekici özelliklerin bir listesini burada bulabilirsiniz.
- Arayüzlerin uygulanması henüz desteklenmemektedir, bu nedenle IWarningCallback, IReplacingCallback, IFieldUpdatingCallback, IFieldMergingCallback vb. gibi geri aramaların kullanılması mümkün değildir.
- Aspose.Words’nin .NET Standard 2.0 sürümü, bu işlevi sağlamayan python sürümünün arka ucu olarak kullanıldığından yazdırma özelliği mevcut değildir.
- Veri kaynağı olarak alan adları ve alan değerleri dizileriyle yalnızca basit Mail Merge işlevselliği sağlanır.
- Python kodundan DocumentVisitor uygulaması şu anda mümkün değildir.
Aspose.Words Nesnelerini Python’de Yayınlama
Her ne kadar Python geliştiricileri için tür dökümü doğal olmasa da bazı görevler, belge düğümleri veya alanları somut tipe dönüştürülmeden gerçekleştirilemez. Python via .NET için Aspose.Words, nesnelerin gerekli olduğu yerde yayınlanmasına olanak tanıyan özel yöntemler sağlar.
Döküm Düğümleri
Aspose.Words DOM’deki tüm belge düğümlerinin temel sınıfı Node sınıfıdır. Örneğin, get_child yöntemi, Node sınıfının örneğini döndürür, ancak döndürülen düğümü değiştirmeniz gerekiyorsa, çoğu durumda onu somut türe dönüştürmeniz gerekir. Aşağıdaki kod, belgedeki ilk Run‘un yazı tipi renginin nasıl değiştirileceğini gösterir:
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 yöntemi kullanıldığında döküm de gerekli olabilir:
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# kodunda yayınlama için (Paragraph)node
‘yi nerede kullanacağınızı fark etmiş olabileceğiniz gibi, Python’de node.as_paragraph()
yöntemini kullanmanız gerekir. Aspose.Words’un Python sürümünde Node sınıfı, as_xxx
yöntemlerinin aşağıdaki bağlantısını sunar:
- 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
yöntemi, düğüm belirtilen türe alınamıyorsa aşağıdaki gibi bir mesajla bir RuntimeError
oluşturur:
RuntimeError: Proxy error(InvalidCastException): Unable to cast object of type ‘Aspose.Words.XXX’ to type ‘Aspose.Words.Drawing.YYY’.
Döküm Alanları
Aynı durum sahalar için de geçerliydi. Aşağıdaki kod örneği, hiper bağlantı bağlantılarının nasıl değiştirileceğini gösterir:
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")
Fark edebileceğiniz gibi Field nesnesi ayrıca aşağıda listelenen bir dizi as_xxx
yöntemini de sağlar:
- 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()
Döküm Stilleri
Tablo stilleriyle çalışmak için döküm de gereklidir:
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 Kontrollerini Döküm
Aşağıdaki kod örneği, ActiveX denetimi özelliklerinin nasıl okunacağını gösterir:
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)
Yazı Tipi Kaynaklarını Döküm
FontSourceBase sınıfı, aşağıda listelenen as_xxx
yöntemleri kümesini sağlar:
- as_file_font_source()
- as_folder_font_source()
- as_memory_font_source()
- as_stream_font_source()
- as_system_font_source()
Dizin Oluşturucu Özelliklerine Erişim
Python için Aspose.Words, dizin oluşturucu özelliklerine yalnızca int türüne göre izin verir; .NET’de ise dizeler gibi diğer türleri kullanmak mümkündür. Bu boşluğu doldurmak için aşağıdaki sınıfların ek yöntemleri vardır:
- 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 Üyelerinin Adlandırılması
Python dünyasına daha yakın olmak amacıyla, Python via .NET için Aspose.Words’in API üyeleri Pythonic yılan stilini kullanır, ancak çoğu durumda .NET API için Aspose.Words’de bire bir analoga sahiptirler. Bu analogları xml dosyası‘de bulabilirsiniz.