2

我有一个 C# 代码隐藏文件,它从服务器获取动态生成的 HTML 并将其转换为 PDF。在 HTML 中有<link rel="stylesheet">引用外部样式表的元素以及许多<img>标签。

所有这些文件、图像和样式表都来自www.example.com,我试图让所有元素都来自static.example.com相同的 url。我已经用明显stringName.Replace("www.example.com","static.example.com")的方法替换了 HTML 中的元素,但是对于 CSS 文件中的引用有什么办法吗?

FOR 例如:
background-image:url('www.example.com/bg.png');
需要成为
background-image:url('static.example.com/bg.png');
外部文件。

关于方法的任何想法?欢迎创意;我什么都愿意!

谢谢 :)

4

4 回答 4

3

既然您说“文件后面的代码”...您是在 ASP.NET 中执行此操作吗?

您可以在 HTML 代码中使用 String.Replace 函数来更改<link href="www.example.com/cssfile.css"><link href="fixcss.ashx?file=www.example.com/cssfile.css">. 然后编写一个 fixcss.ashx 来检索 CSS 文件并对其执行字符串替换。

于 2011-03-09T19:05:33.053 回答
2

您可以使用 filestream 获取文件,然后替换为您使用的代码。其他方法是开放的

您可能会发现这很有帮助

CSS 解析器

读取和解析 CSS 文件

于 2011-03-09T18:36:26.813 回答
1

啊哈,所以这是我的一个想法。这可能效率低下,但这是我认为我可以做的:

将每个更改<link rel="stylesheet">为一个<style> ... </style>标签并读取文件内容,将外部样式表替换为嵌入的样式表。

这可能效率低下,想法?

谢谢!

于 2011-03-09T18:59:19.053 回答
1

仅针对某些种类(以及可能处于不同环境中的其他人),如果您可以访问它,则可以(并且应该)使用URL Rewrite 模块。它不仅可以重定向(就像 PHP 应用程序中的 .htaccess 一样),还可以重写提供的文件中的 URL(例如,您的 CSS 文件)。

于 2011-03-09T19:23:41.600 回答