Trabalhando com controle de Conteúdo SDT

Em Microsoft Word, você pode criar um formulário começando com um modelo e adicionando controles de conteúdo, incluindo caixas de seleção, caixas de texto, selecionadores de data e listas suspensas. Em Aspose.Words, uma Tag de documento estruturado ou controle de conteúdo de qualquer documento carregado em Aspose.Words é importado como um nó StructuredDocumentTag. As etiquetas de documentos estruturados (SDT ou controlo de conteúdo) permitem incorporar a semântica definida pelo cliente, bem como o seu comportamento e aparência num documento. StructuredDocumentTag pode ocorrer num documento nos seguintes locais:

  • Nível de bloco - entre parágrafos e tabelas, como filho de um corpo, HeaderFooter, comentário, nota de rodapé ou um nó de forma
  • Row-level-entre linhas em uma tabela, como filho de um nó de tabela
  • Cell-level-entre células em uma linha de tabela, como filho de um nó de linha
  • Inline-level-entre o conteúdo inline dentro, como filho de um parágrafo
  • Aninhado dentro de outro StructuredDocumentTag

Como definir o estilo para formatar o texto digitado no controle de conteúdo

Se pretender definir o estilo de controlo de conteúdo, pode utilizar as Propriedades StructuredDocumentTag.Style ou StructuredDocumentTag.StyleName. Quando você digita o texto no controle de conteúdo no documento de saída, o texto digitado terá o estilo “citação”.

O exemplo de código a seguir mostra como definir o estilo do controle de conteúdo:

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"input.docx");
System::SharedPtr<StructuredDocumentTag> sdt = System::DynamicCast<StructuredDocumentTag>(doc->GetChild(NodeType::StructuredDocumentTag, 0, true));
System::SharedPtr<Style> style = doc->get_Styles()->idx_get(StyleIdentifier::Quote);
sdt->set_Style(style);
System::String outputPath = outputDataDir + u"WorkingWithSDT.SetContentControlStyle.docx";
// Save the document to disk.
doc->Save(outputPath);

Trabalhando com controle de conteúdo de seção repetida

O controlo de conteúdo da secção de repetição permite repetir o conteúdo nele contido. Usando Aspose.Words, os nós de tag de documento estruturado da seção de repetição e os tipos de item de seção de repetição podem ser criados e, para esse fim, o tipo de enumeração SdtType fornece a propriedade RepeatingSectionItem.

O exemplo de código a seguir mostra como vincular um controle de conteúdo de seção repetida a uma tabela:

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
System::String xml = System::String(u"<books><book><title>Everyday Italian</title><author>Giada De Laurentiis</author></book>") +
u"<book><title>Harry Potter</title><author>J K. Rowling</author></book>" +
u"<book><title>Learning XML</title><author>Erik T. Ray</author></book></books>";
System::SharedPtr<CustomXmlPart> xmlPart = doc->get_CustomXmlParts()->Add(u"Books", xml);
System::SharedPtr<Table> table = builder->StartTable();
builder->InsertCell();
builder->Write(u"Title");
builder->InsertCell();
builder->Write(u"Author");
builder->EndRow();
builder->EndTable();
System::SharedPtr<StructuredDocumentTag> repeatingSectionSdt = System::MakeObject<StructuredDocumentTag>(doc, Aspose::Words::Markup::SdtType::RepeatingSection, Aspose::Words::Markup::MarkupLevel::Row);
repeatingSectionSdt->get_XmlMapping()->SetMapping(xmlPart, u"/books[1]/book", u"");
table->AppendChild(repeatingSectionSdt);
System::SharedPtr<StructuredDocumentTag> repeatingSectionItemSdt = System::MakeObject<StructuredDocumentTag>(doc, Aspose::Words::Markup::SdtType::RepeatingSectionItem, Aspose::Words::Markup::MarkupLevel::Row);
repeatingSectionSdt->AppendChild(repeatingSectionItemSdt);
System::SharedPtr<Row> row = System::MakeObject<Row>(doc);
repeatingSectionItemSdt->AppendChild(row);
System::SharedPtr<StructuredDocumentTag> titleSdt = System::MakeObject<StructuredDocumentTag>(doc, Aspose::Words::Markup::SdtType::PlainText, Aspose::Words::Markup::MarkupLevel::Cell);
titleSdt->get_XmlMapping()->SetMapping(xmlPart, u"/books[1]/book[1]/title[1]", u"");
row->AppendChild(titleSdt);
System::SharedPtr<StructuredDocumentTag> authorSdt = System::MakeObject<StructuredDocumentTag>(doc, Aspose::Words::Markup::SdtType::PlainText, Aspose::Words::Markup::MarkupLevel::Cell);
authorSdt->get_XmlMapping()->SetMapping(xmlPart, u"/books[1]/book[1]/author[1]", u"");
row->AppendChild(authorSdt);
doc->Save(outputDataDir + u"WorkingWithSDT.CreatingTableRepeatingSectionMappedToCustomXmlPart.docx");