Paso 3: creación de una página de la aplicación web para iniciar conversiones

Última modificación: jueves, 08 de abril de 2010

Hace referencia a: SharePoint Server 2010

En este tema se crea una página de aplicación de SharePoint Server 2010 que sirve para iniciar la conversión de documentos de Servicios de automatización de Word.

Creación de una página de aplicación para iniciar conversiones

El nuevo elemento de menú contextual de documento que creó en el paso 2 de este tutorial abre una página de aplicación que permite a los usuarios iniciar la conversión de documentos de Servicios de automatización de Word. Los siguientes procedimientos muestran cómo escribir código en una página .aspx de página de aplicación y su página .cs de "código subyacente" asociada, que permite a los usuarios realizar la conversión de documentos de un documento específico.

Para crear la página de la aplicación

  1. En la ventana Explorador de soluciones, haga clic con el botón secundario en el proyecto, elija Agregar y, a continuación, haga clic en Nuevo elemento....

  2. Seleccione Página de la aplicación de la lista de elementos.

  3. Escriba un nombre para la página de la aplicación, por ejemplo, ConvertItem.aspx.

  4. Haga clic en Agregar para agregar la página de la aplicación al proyecto.

    Esta página especifica tres áreas de contenido heredadas de la página maestra de SharePoint Server 2010 que se invalidan para crear la página de la aplicación personalizada.

  5. En el código HTML de la página ConvertItem.aspx, busque la etiqueta <asp:Content> con un valor de atributo de ID de PageTitle. Agregue una cadena para el título de la página; por ejemplo, Convertir documento.

  6. Busque la etiqueta <asp:Content> con un valor de atributo de ID de PageTitleInTitleArea. Agregue una cadena para esta área de la página; por ejemplo, Convertir documento.

  7. Busque la etiqueta <asp:Content> con un valor de atributo de ID de Main. Agregue el siguiente HTML para la página.

    <table cellpadding="5">
    <tr><td colspan="2"><h1>Convert Document</h1></td></tr>
    <tr><td colspan="2">Choose the output location of the converted document, and the desired output file type below. By default, the converted document will be placed in the same location as the input document.</td></tr>
    <tr><td>Document to convert:</td><td></td></tr>
    <tr><td>Output location:</td><td></td></tr>
    <tr><td>Output file type:</td><td></td></tr>
    <tr><td></td></tr>
    </table>
    
    
  8. En la segunda celda de la tercera fila de la tabla, agregue un control Etiqueta, que va a incluir el nombre del archivo de entrada.

    <asp:Label ID="lblInputItem" runat="server"/>
    
  9. En la segunda celda de la cuarta fila de la tabla, agregue un control Cuadro de texto, que va a incluir el nombre del archivo de salida.

    <asp:TextBox ID="tbOutputItem" runat="server" Width="600"/>
    
  10. En la segunda celda de la quinta fila de la tabla, agregue un control Lista desplegable, que va a incluir el formato de archivo del archivo de salida.

    <asp:DropDownList ID="ddFileTypes" runat="server" AutoPostBack="true"><asp:ListItem Text="PDF" /><asp:ListItem Text="XPS" /><asp:ListItem Text="DOCX" /><asp:ListItem Text="DOCM" /><asp:ListItem Text="DOC" /><asp:ListItem Text="DOTX" /><asp:ListItem Text="DOTM" /><asp:ListItem Text="DOT" /><asp:ListItem Text="XML" /><asp:ListItem Text="RTF" /><asp:ListItem Text="MHT" /></asp:DropDownList>
    
  11. En la celda de la sexta fila de la tabla, agregue un control Botón que iniciará la conversión.

    <asp:Button ID="btnConvert" runat="server" Text="Convert"/>
    

Una vez que escriba el código HTML de la página ConvertItem.aspx, deberá agregar código de Visual C# que usa Servicios de automatización de Word a la página de código subyacente ConvertItem.aspx.cs.

Para agregar código a la página de código subyacente

  1. En el Explorador de soluciones, expanda ConvertItem.aspx y, a continuación, haga doble clic en ConvertItem.aspx.cs.

  2. Agregue una directiva using para el espacio de nombres que contiene el modelo de objetos de Servicios de automatización de Word que usa para realizar conversiones de documentos.

    using Microsoft.Office.Word.Server.Conversions;
    
  3. En el evento Page_Load para la página, agregue código para rellenar los nombres de archivo de entrada y salida en la página.

    // Only set up the values the first time the page is loaded
    if (!IsPostBack)
    {
        // Get the input file URL from the query string
        string itemUrl = Request.QueryString["ItemUrl"];
        string inputPath = Site.Url + itemUrl;
        lblInputItem.Text = inputPath;
    
        // Write the output file URL
        // Since the default on the drop-down is PDF, set that by default
        string outputPath = Path.ChangeExtension(inputPath, "pdf");
        tbOutputItem.Text = outputPath;
    }
    

    El código anterior obtiene la dirección URL relativa del sitio del elemento de menú de la cadena de consulta, que se define como parte de la acción de dirección URL anterior, la concatena con la dirección URL del sitio para obtener la ruta de acceso completa al archivo y, a continuación, almacena la ruta de acceso completa del control Etiqueta para el archivo de entrada.

    A continuación, el código obtiene la ubicación del archivo de entrada, cambia la extensión a .PDF (establecida como valor predeterminado) y, a continuación, lo coloca en el control de cuadro de texto para el archivo de salida.

  4. Agregue un controlador de eventos a la página ConvertItem.aspx, para que cambie automáticamente la extensión del archivo de salida cuando se cambie la lista desplegable. Agregue el siguiente código HTML al elemento <asp:DropDownList>.

    OnTextChanged="ddFileTypes_TextChanged"
    
  5. Agregue el código del controlador de eventos ddFileTypes_TextChanged a la página de código subyacente.

    protected void ddFileTypes_TextChanged(object sender, EventArgs e)
    {
        // Update the output path based on the selected item
        tbOutputItem.Text = Path.ChangeExtension(tbOutputItem.Text, ddFileTypes.SelectedValue.ToLowerInvariant());
    }
    

    Este código cambia la extensión de archivo del archivo de salida por el valor seleccionado en la lista desplegable.

  6. Agregue un controlador de eventos a la página ConvertItem.aspx que inicie las conversiones cuando se presione el botón. Agregue el siguiente código HTML al elemento <asp:Button>.

    OnClick="btnConvert_Click"
    
  7. Agregue el código del controlador de eventos btnConvert_Click a la página de código subyacente.

    protected void btnConvert_Click(object sender, EventArgs e)
    {
        try
        {
            // Create a conversion job
            ConversionJob job = new ConversionJob("Word Automation Services"); // This is the default name of the service application
    
            // Set the settings
            job.UserToken = Site.UserToken;
            if (Site.SiteSubscription != null)
                job.SubscriptionId = Site.SiteSubscription.Id;
            job.Settings.OutputFormat = GetSaveFormat(ddFileTypes.SelectedValue);
            job.Name = "Conversion from Convert Item Menu";
    
            // Add the file
            job.AddFile(lblInputItem.Text, tbOutputItem.Text);
    
            // Start conversion
            job.Start();        
        }
        catch (Exception ex)
        {
            // Show standard SharePoint error page
            Response.Redirect("/_layouts/Error.aspx?ErrorText=" + Server.UrlEncode(ex.Message));
        }
    }
    
    private SaveFormat GetSaveFormat(string saveFormat)
    {
        switch (saveFormat.ToLowerInvariant())
        {
            case "pdf":
                return SaveFormat.PDF;
            case "xps":
                return SaveFormat.XPS;
            case "doc":
                return SaveFormat.Document97;
            case "docx":
                return SaveFormat.Document;
            case "docm":
                return SaveFormat.DocumentMacroEnabled;
            case "dot":
                return SaveFormat.Template97;
            case "dotx":
                return SaveFormat.Template;
            case "dotm":
                return SaveFormat.TemplateMacroEnabled;
            case "mht":
                return SaveFormat.MHTML;
            case "rtf":
                return SaveFormat.RTF;
            case "xml":
                return SaveFormat.XML;
            default:
                throw new InvalidCastException("unsupported file type");
        }
    }
    

    El código anterior crea una instancia de un ConversionJob nuevo, que define un conjunto de conversiones, y proporciona el nombre de la aplicación de servicio al método de constructor ConversionJob(String).

    Nota

    En este ejemplo se da por hecho que el nombre de la aplicación de servicio es "Word Automation Services", que es el nombre predeterminado que recibe cuando se crea mediante el Asistente para la configuración del conjunto de servidores. Si usó un nombre diferente para la aplicación de servicio, úselo en su lugar.

    A continuación, el código establece la configuración necesaria para la conversión:

    • La propiedad UserToken especifica las credenciales de usuario que se usan para leer el archivo de entrada y escribir el archivo de salida.

    • La propiedad SubscriptionId especifica el identificador de suscripción de sitio del sitio.

      Nota

      Este parámetro únicamente es necesario si el conjunto o granja de servidores de SharePoint se ha configurado en modo particionado.

    • La propiedad OutputFormat especifica el formato de archivo de salida para la conversión.

    Además, el código especifica un valor de configuración opcional:

    • La propiedad Name especifica un nombre descriptivo para la conversión.
  8. Por último, agregue código inmediatamente después de la llamada al método Start() para redirigir la página después de haber iniciado un trabajo de conversión correctamente.

    // Redirect to the success page, including the original location as a query parameter
    SPList list = Web.Lists[new Guid(Request.QueryString["ListId"])];
    SPListItem item = list.GetItemById(int.Parse(Request.QueryString["ItemId"]));
    Response.Redirect("/_layouts/ConvertItem/ConvertStatus.aspx?url=" + Server.UrlEncode(Web.Url + "/" + item.File.ParentFolder.Url) + "&jobId=" + job.JobId.ToString(), false);
    

    Una vez iniciada la conversión, este código redirige a una segunda página web (que se crea en el siguiente paso de este tutorial) y se pasan dos parámetros: una dirección URL que apunta a la ubicación original del archivo y el identificador para el trabajo de conversión (que permite al usuario final supervisar el estado de la conversión).

Vea también

Tareas

Paso 4: creación de una página de la aplicación web para supervisar conversiones

Paso 5: creación e implementación de la solución del menú ECB

Conceptos

Tutorial: Uso de un elemento de menú de bloque de control de edición para crear un trabajo de conversión

Otros recursos

Programación de Word Automation Services