Weitere Steuerelemente mit Konvertereinstellungen
Letzte Änderung: Montag, 8. März 2010
Gilt für: SharePoint Server 2010
Wenn Sie einen benutzerdefinierten Dokumentkonverter erstellen müssen, müssen Sie möglicherweise weitere Informationen vom Administrator erfragen als die Optionen, die auf der standardmäßigen Seite für Dokumentkonfigurationseinstellungen in Microsoft SharePoint Server 2010 bereitgestellt sind. Zum Sammeln dieser Informationen können Sie ein benutzerdefiniertes ASCX-Steuerelement zum Hosten einer vorhandenen Konverterseite verwenden.
Legen Sie zum Angeben eines Steuerelements für benutzerdefinierte Konfigurationseinstellungen das ConverterSpecificSettingsUI-Element der Dokumentkonverterdefinition auf den Dateinamen des ASCX-Steuerelements fest, das Sie verwenden möchten. Dies ist ein optionales Element. Sie müssen eine Seite für die Konverterkonfigurationseinstellungen im ConverterSettingsForContentType-Element angeben, das das Steuerelement hosten soll.
Weitere Informationen zur Dokumentkonverterdefinition finden Sie unter Schema für die Dokumentkonverterdefinition.
Die von Ihnen angegebene Konfigurationseinstellungsseite muss Code enthalten, der die IDocumentConverterControl-Schnittstelle implementiert, wie im folgenden Beispiel zu sehen.
Darüber hinaus muss die Zeichenfolge, die vom Steuerelement zurückgegeben wird, als XML-Knoten gültig sein.
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
Externe Dateieinstellungen
Ein ASCX-Steuerelement, mit dem ein Benutzer auf eine Datei zeigen kann, stellt eine besondere Herausforderung dar: Der Konverter wird in seinem eigenen Prozess ausgeführt und hat daher keinen Zugriff auf Dateien auf dem Server. Aus diesem Grund muss der Inhalt von Dateien in die Konfigurationsinformationen gelesen werden, die an den Konverter übergeben werden. Die Infrastruktur des Dokumentkonverters enthält einen Mechanismus, mit dem bei einem Verweis auf eine Datei der Inhalt tatsächlich aus der Datei in die Konfigurationseinstellungsinformationen gezogen wird, wenn der Konverter aufgerufen wird.
Fügen Sie zum Lesen des Inhalts einer Datei in die Konfigurationseinstellungsinformationen ein FilePlaceholder-Element dem XML für Konfigurationseinstellungen hinzu. Dieses Element besitzt ein einzelnes Attribut, Url, das die URL der Datei darstellt, dessen Inhalt in die an den Konverter übergebenen Konfigurationseinstellungsinformationen gelesen werden soll.
Ein Beispiel:
<FilePlaceHolder Url="myUrlHere"><\FilePlaceHolder>
Bei Initiierung der Dokumentkonvertierung führt die Infrastruktur der Dokumentkonvertierung für jedes FilePlaceHolder-Element in den Konfigurationseinstellungen die folgenden Aktionen aus:
Löst die URL auf.
Öffnet die angegebene Datei.
Verschlüsselt den Dateiinhalt mit Base64-Codierung und platziert den verschlüsselten Inhalt im FilePlaceHolder-Elementknoten.
Wenn der Konverter die Konfigurationseinstellungen empfängt, muss der Inhalt der Datei konvertiert werden. Hierzu muss der Konverter auf den FilePlaceHolder-Knoten zugreifen und seinen Inhalt konvertieren. Ein Beispiel:
byte[] fileContent = System.Convert.FromBase64String(node.InnerXml);
Dim fileContent() As Byte = System.Convert.FromBase64String(node.InnerXml)
Weitere Informationen zum Konfigurationseinstellungen-XML, das an den Konverter übergeben wird, finden Sie unter Konfigurationseinstellungsschema für die Konvertierung von Dokumenten in Seiten.
Siehe auch
Konzepte
Übersicht über Dokumentkonverter
Bereitstellung von Dokumentkonvertern
Schema für die Dokumentkonverterdefinition
Konfigurationseinstellungsschema für die Konvertierung von Dokumenten in Seiten