HtmlAgilityPack HtmlDocument.Save () Se comporta de manera diferente según el directorio donde se guarde

c# html-agility-pack

Pregunta

Necesito guardar el resultado de una página web como un archivo .html para poder convertirlo en una imagen más adelante. Aquí está el código que estoy usando para eliminar los componentes no deseados y dejar solo la tabla:

protected override void Render(HtmlTextWriter writer)
{
    using (HtmlTextWriter htmlwriter = new HtmlTextWriter(new StringWriter()))
    {
        base.Render(htmlwriter);
        string renderedContent = htmlwriter.InnerWriter.ToString();
        string output = renderedContent.Replace(@"<input type=""submit"" name=""viewReport"" value=""View Report"" id=""viewReport"" />", "");
        output = output.Replace(@"<input type=""submit"" name=""redoEdits"" value=""Redo Edits"" id=""redoEdits"" />", "");
        output = output.Replace(@"<a href=""http://w3.td.com/td/intranet/tdweb""><img src=""Trends/TDBFGLogo5.gif"" alt=""TD Home"" title=""TD Home"" height=""40px"" width=""40px"" style=""float: left; border: none"" /></a>", "");
        output = output.Replace(@"<hr style=""background-color: #8bb093; height: 30px; width: 100%; float: left"" />", "");
        output = output.Replace(@"<h1>Network Operations Dashboard</h1>", "");

        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(output);

        HtmlNode node = doc.DocumentNode.SelectSingleNode("//select[@name='Archives']");
        node.Remove();
        node = doc.DocumentNode.SelectSingleNode("//ul[@id='mainNav']");
        node.Remove();
        string fileName = currDir + "\\dashboardTableOutput.html";
        doc.Save(fileName);

        writer.Write(renderedContent);
    }
}

Cuando llamo:

protected override void Render(HtmlTextWriter writer)
{
    using (HtmlTextWriter htmlwriter = new HtmlTextWriter(new StringWriter()))
    {
        base.Render(htmlwriter);
        string renderedContent = htmlwriter.InnerWriter.ToString();
        string output = renderedContent.Replace(@"<input type=""submit"" name=""viewReport"" value=""View Report"" id=""viewReport"" />", "");
        output = output.Replace(@"<input type=""submit"" name=""redoEdits"" value=""Redo Edits"" id=""redoEdits"" />", "");
        output = output.Replace(@"<a href=""http://w3.td.com/td/intranet/tdweb""><img src=""Trends/TDBFGLogo5.gif"" alt=""TD Home"" title=""TD Home"" height=""40px"" width=""40px"" style=""float: left; border: none"" /></a>", "");
        output = output.Replace(@"<hr style=""background-color: #8bb093; height: 30px; width: 100%; float: left"" />", "");
        output = output.Replace(@"<h1>Network Operations Dashboard</h1>", "");

        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(output);

        HtmlNode node = doc.DocumentNode.SelectSingleNode("//select[@name='Archives']");
        node.Remove();
        node = doc.DocumentNode.SelectSingleNode("//ul[@id='mainNav']");
        node.Remove();
        string fileName = currDir + "\\dashboardTableOutput.html";
        doc.Save(fileName);

        writer.Write(renderedContent);
    }
}

Terminé con un archivo .html que se muestra de esta manera:

introduzca la descripción de la imagen aquí

Cuando llamo

protected override void Render(HtmlTextWriter writer)
{
    using (HtmlTextWriter htmlwriter = new HtmlTextWriter(new StringWriter()))
    {
        base.Render(htmlwriter);
        string renderedContent = htmlwriter.InnerWriter.ToString();
        string output = renderedContent.Replace(@"<input type=""submit"" name=""viewReport"" value=""View Report"" id=""viewReport"" />", "");
        output = output.Replace(@"<input type=""submit"" name=""redoEdits"" value=""Redo Edits"" id=""redoEdits"" />", "");
        output = output.Replace(@"<a href=""http://w3.td.com/td/intranet/tdweb""><img src=""Trends/TDBFGLogo5.gif"" alt=""TD Home"" title=""TD Home"" height=""40px"" width=""40px"" style=""float: left; border: none"" /></a>", "");
        output = output.Replace(@"<hr style=""background-color: #8bb093; height: 30px; width: 100%; float: left"" />", "");
        output = output.Replace(@"<h1>Network Operations Dashboard</h1>", "");

        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(output);

        HtmlNode node = doc.DocumentNode.SelectSingleNode("//select[@name='Archives']");
        node.Remove();
        node = doc.DocumentNode.SelectSingleNode("//ul[@id='mainNav']");
        node.Remove();
        string fileName = currDir + "\\dashboardTableOutput.html";
        doc.Save(fileName);

        writer.Write(renderedContent);
    }
}

Terminé con un archivo .html que se muestra de esta manera:

introduzca la descripción de la imagen aquí

Con todo el diseño y la información gráfica que faltan. No puedo pensar en ninguna razón por la cual el cambio del directorio en el que guardo tendría este efecto.

Cualquier consejo es apreciado.

Saludos.

Respuesta aceptada

Mi conjetura es que ya tiene un archivo .CSS en algún lugar (tal vez en currDir + "\\" + reportDir ?) Al que el archivo .html hace referencia correctamente, en un caso, y no correctamente, en el otro.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué