开发者

C#.NET: Change elements in a CSS file from dynamically generated HTML?

开发者 https://www.devze.com 2023-02-16 00:33 出处:网络
I have a C# code behind file that gets dynamically generated HTML from a server and converts it to a PDF. In the HTML there are <link rel=\"stylesheet\"> elements that reference external stylesh

I have a C# code behind file that gets dynamically generated HTML from a server and converts it to a PDF. In the HTML there are <link rel="stylesheet"> elements that reference external stylesheets as well as many <img> tags.

All of these files, images and stylesheets, come from www.example.com, and I'm trying to make all elements come from static.example.com wit开发者_StackOverflow中文版h the same url instead. I've used the obvious stringName.Replace("www.example.com","static.example.com") to replace the elements in the HTML, but is there any way to do so for the references in the CSS file?

FOR EXAMPLE:

background-image:url('www.example.com/bg.png');

needs to become

background-image:url('static.example.com/bg.png');

in the external file.

Any ideas on approach? Creativity is welcome; I'm up for anything!

Thanks :)


Since you say "code behind file"... are you doing this in ASP.NET?

You could use String.Replace functions in the HTML code to change <link href="www.example.com/cssfile.css"> to <link href="fixcss.ashx?file=www.example.com/cssfile.css">. Then write a fixcss.ashx to retrieve the CSS file and perform the string replacements on it.


You may use filestream to get the file and then replace by the code you have used.Other approaches are open

You may find this like helpful

CSS Parser

Reading and Parsing a CSS file


Aha, so here's an idea I had. This might be inefficient, but here's what I think I could do:

Change each <link rel="stylesheet"> into a <style> ... </style> tag and read the file contents, replacing the external stylesheet with an embedded one.

This might be inefficient, thoughts?

Thank you!


Just for some variety (and for other folks who might be in a different environment), if you have access to the to it, you can (and should) use the URL Rewrite module. It can not only redirect (like .htaccess in PHP apps would) but also rewrite the URL in files that are served (so for example, your CSS file).

0

精彩评论

暂无评论...
验证码 换一张
取 消