Compartilhar via


Controles configurações adicionais do conversor

Se você precisar criar um personalizado conversor documento, talvez seja necessário para coletar mais informações a partir de administrador que as opções que são apresentadas na usar como padrão Microsoft Office do SharePoint Server 2007 documento configuração configurações página. Para coletar essa informações, você pode especificar um personalizado controle .ascx para hospedar em uma página conversor existente.

Para especificar um personalizado controle as configurações configuração, defina o elemento ConverterSpecificSettingsUI ConverterSpecificSettingsUI de definição conversor de documento com o nome arquivo de controle de .ascx você desejar usar. Este é um opcional elemento. Você deve especificar uma página Configurações configuração conversor no elemento ConverterSettingsForContentType ConverterSettingsForContentType para hospedar o controle.

Para obter mais informações sobre definição conversor de documento, consulte Documento converter definição de esquema.

A página Configurações configuração você especificar deve conter codificar que implementa a interface IDocumentConverterControl T:Microsoft.SharePoint.Publishing.IDocumentConverterControl, conforme o seguinte exemplo.

Além disso, o seqüência de caracteres que retorna o controle devem ser válido como um nó XML.

public class XslApplicatorSettingsControl : UserControl, 
             IDocumentConverterControl
{
  /// <summary>
  /// XSLT asset selector control
  /// </summary>
  public AssetUrlSelector assetSelectedXsl;

  /// <summary>
  /// Validator to make sure user picks XSLT
  /// </summary>
  public FileExtensionValidator fileExtensionValidator;

  /// <summary>
  /// Input form section, used only to get the display title of the 
      section
  /// </summary>
  public InputFormSection inputSection;

  protected override void OnLoad(EventArgs e)
  {
    base.OnLoad(e);
    this.fileExtensionValidator.ControlToValidate = 
      this.assetSelectedXsl.ID;
  }

  private const string ConverterSettingsXmlName = 
      "XslApplicatorConverterSettings";

  /// <summary>
  /// Property that is the interface to the outer world - get/set a 
      string 
      that persists the settings
  /// </summary>
  public string ConverterSettings
  {
    get
    {
      StringBuilder sb = new StringBuilder("<", 256);
      sb.Append(ConverterSettingsXmlName);
      sb.Append(" Version=\"1\" >");

      sb.Append("<FilePlaceHolder Url=\");
      sb.Append(this.assetSelectedXsl.AssetUrl);
      sb.Append("\">");

      sb.Append("</FilePlaceHolder>");

      sb.Append("</");
      sb.Append(ConverterSettingsXmlName);
      sb.Append(">");

      return sb.ToString();
    }

    set
    {
      if (!String.IsNullOrEmpty(value))
      {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(value);

          RcaUtilities.FilePlaceHolderElementName;
        XmlNodeList cl = xmlDoc.SelectNodes("//FilePlaceHolder");

        if (cl.Count > 0)
        {
          XmlNode node = cl[0];
          XmlAttribute attribute = node.Attributes["Url"];
          string fileUrl = String.Empty;

          if (attribute != null && attribute.Value != null)
          {
            fileUrl = attribute.Value;
          }

          this.assetSelectedXsl.AssetUrl = fileUrl;
        }
      }
    }
  }

  /// <summary>
  /// Implement setter to fulfill the interface
  /// </summary>
  public SPContentType ContentType
  {
    set
    {
    }
    get
    {
      return null;
    }
  }

  /// <summary>
  /// This control always requires configuration
  /// </summary>
  public bool RequiresConfiguration
  {
    get
    {
      return true;
    }
  }

  /// <summary>
  /// Display title, used to direct user to this section in the page in 
      case of validation errors
  /// </summary>
  public string SectionDisplayTitle
  {
    get
    {
      return this.inputSection.Title;
    }
  }

Configurações do arquivo externo

Um controle .ascx que permite que o usuário apontar para um arquivo apresenta um desafio especial: O conversor executa em seu próprio processo e portanto não tem acessar arquivos no servidor. Portanto, o conteúdo de todos os arquivos deve ser ler em informações de configuração que são passadas para o conversor. A infra-estrutura conversor documento inclui um mecanismo pelo qual uma referência a um arquivo realmente extrai o conteúdo do arquivo em informações definições de configuração quando o conversor é chamado.

Para ler o conteúdo de um arquivo em informações definições de configuração, adicionar um elemento FilePlaceholder FilePlaceholder às configurações de configuração XML. Este elemento tem um único atributo, Url, que representa a URL do arquivo cujo conteúdo você desejar ler para as informações configurações configuração passadas para o conversor.

Por exemplo:

<FilePlaceHolder Url="myUrlHere"><\FilePlaceHolder>

Quando uma conversão documento é iniciada, a infra-estrutura documento conversão faz o seguinte para cada elemento FilePlaceHolder FilePlaceHolder nas definições de configuração:

  • Resolve a URL.

  • Abre o arquivo especificado.

  • Codifica o arquivo de conteúdo com codificação na Base 64 e coloca o de conteúdo codificado para o nó elemento FilePlaceHolder FilePlaceHolder.

Quando o conversor recebe as configurações configuração, ela deve converter o conteúdo de arquivo. Para fazer isso, o conversor necessário acessar o nó FilePlaceHolder FilePlaceHolder e converter seu de conteúdo. Por exemplo:

byte[] fileContent = System.Convert.FromBase64String(node.InnerXml);

Para obter mais informações sobre as configurações configuração XML que é passado para o conversor, consulte Documento para Esquema de Configurações de configuração do Conversor de página.

Consulte também

Outros recursos

Visão geral sobre Conversores de documentos
Conversores de documentos
Implantação converter de documentos
Documento converter definição de esquema
Documento para Esquema de Configurações de configuração do Conversor de página