Autres contrôles de paramètres de convertisseur
Dernière modification : lundi 8 mars 2010
S’applique à : SharePoint Server 2010
Si vous devez créer un convertisseur de documents personnalisé, il est possible que vous deviez recueillir d'autres informations auprès de l'administrateur que celles proposées dans la page des paramètres de configuration de document par défaut de Microsoft SharePoint Server 2010. Pour recueillir ces informations, vous pouvez spécifier un contrôle .ascx personnalisé de sorte qu'il soit hébergé dans une page de convertisseur existante.
Pour spécifier un contrôle de paramètres de configuration personnalisés, vous pouvez définir l'élément ConverterSpecificSettingsUI du convertisseur de documents sur le nom de fichier du contrôle .ascx que vous souhaitez utiliser. Il s'agit d'un élément facultatif. Vous devez spécifier une page de paramètres de configuration de convertisseur dans l'élément ConverterSettingsForContentType pour héberger le contrôle.
Pour plus d'informations sur la définition de convertisseur de documents, voir Schéma de définition du convertisseur de documents.
La page de paramètres de configuration que vous spécifiez doit contenir du code qui implémente l'interface IDocumentConverterControl, comme illustré dans l'exemple ci-après.
La chaîne retournée par le contrôle doit être en outre un nœud XML valide.
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;
}
}
Public Class XslApplicatorSettingsControl
Inherits UserControl
Implements IDocumentConverterControl
''' <summary>
''' XSLT asset selector control
''' </summary>
Public assetSelectedXsl As AssetUrlSelector
''' <summary>
''' Validator to make sure user picks XSLT
''' </summary>
Public fileExtensionValidator As FileExtensionValidator
''' <summary>
''' Input form section, used only to get the display title of the
''' section.
''' </summary>
Public inputSection As InputFormSection
Protected Overrides Sub OnLoad(ByVal e As EventArgs)
MyBase.OnLoad(e)
Me.fileExtensionValidator.ControlToValidate = Me.assetSelectedXsl.ID
End Sub
Private Const ConverterSettingsXmlName As String = "XslApplicatorConverterSettings"
''' <summary>
''' Property that is the interface to the outer world - get/set a
''' string
''' that persists the settings
''' </summary>
Public Property ConverterSettings() As String
Get
Dim sb As New StringBuilder("<", 256)
sb.Append(ConverterSettingsXmlName)
sb.Append(" Version=""1"" >")
sb.Append("<FilePlaceHolder Url=\")
sb.Append(Me.assetSelectedXsl.AssetUrl)
sb.Append(""">")
sb.Append("</FilePlaceHolder>")
sb.Append("</")
sb.Append(ConverterSettingsXmlName)
sb.Append(">")
Return sb.ToString()
End Get
Set(ByVal value As String)
If Not String.IsNullOrEmpty(value) Then
Dim xmlDoc As New XmlDocument()
xmlDoc.LoadXml(value)
RcaUtilities.FilePlaceHolderElementName
Dim cl As XmlNodeList = xmlDoc.SelectNodes("//FilePlaceHolder")
If cl.Count > 0 Then
Dim node As XmlNode = cl(0)
Dim attribute As XmlAttribute = node.Attributes("Url")
Dim fileUrl As String = String.Empty
If attribute IsNot Nothing AndAlso attribute.Value IsNot Nothing Then
fileUrl = attribute.Value
End If
Me.assetSelectedXsl.AssetUrl = fileUrl
End If
End If
End Set
End Property
''' <summary>
''' Implement setter to fulfill the interface
''' </summary>
Public Property ContentType() As SPContentType
Set(ByVal value As SPContentType)
End Set
Get
Return Nothing
End Get
End Property
''' <summary>
''' This control always requires configuration
''' </summary>
Public ReadOnly Property RequiresConfiguration() As Boolean
Get
Return True
End Get
End Property
''' <summary>
''' Display title, used to direct user to this section in the page in
''' case of validation errors
''' </summary>
Public ReadOnly Property SectionDisplayTitle() As String
Get
Return Me.inputSection.Title
End Get
End Property
Paramètres de fichier externe
Un contrôle .ascx permettant à l'utilisateur de pointer vers un fichier représente un défi spécial : le convertisseur exécute son propre processus et n'a pas accès aux fichiers sur le serveur. Le contenu de tous les fichiers doit par conséquent être lu dans les informations de configuration passées au convertisseur. L'infrastructure du convertisseur de documents contient un mécanisme par lequel une référence à un fichier transmet le contenu du fichier aux informations de paramètres de configuration lorsque le convertisseur est appelé.
Pour lire le contenu d'un fichier dans les informations de paramètres de configuration, vous devez ajouter un élément FilePlaceholder au code XML des paramètres de configuration. Cet élément possède un seul attribut, Url, qui représente l'URL du fichier dont vous souhaitez lire le contenu dans les informations de paramètres de configuration passées au convertisseur.
Par exemple :
<FilePlaceHolder Url="myUrlHere"><\FilePlaceHolder>
Lorsqu'une conversion de documents est démarrée, l'infrastructure de celle-ci effectue les opérations suivantes pour chaque élément FilePlaceHolder des paramètres de configuration :
résolution de l'adresse URL ;
ouverture du fichier spécifié ;
codage en base64 du contenu du fichier et placement du contenu codé dans le nœud FilePlaceHolder.
Lorsque le convertisseur reçoit les paramètres de configuration, il doit convertir le contenu du fichier. Pour ce faire, il doit accéder au nœud FilePlaceHolder et convertir son contenu. Par exemple :
byte[] fileContent = System.Convert.FromBase64String(node.InnerXml);
Dim fileContent() As Byte = System.Convert.FromBase64String(node.InnerXml)
Pour plus d'informations sur les éléments XML des paramètres de configuration passés au convertisseur, voir Schéma des paramètres de configuration de convertisseur documents/pages.
Voir aussi
Concepts
Vue d'ensemble des convertisseurs de documents
Déploiement de conversion de document
Schéma de définition du convertisseur de documents
Schéma des paramètres de configuration de convertisseur documents/pages