C# itextsharp缩放图像作为字符串发送
我发送以下字符串C# itextsharp缩放图像作为字符串发送,c#,itextsharp,C#,Itextsharp,我发送以下字符串 string text = <img alt=\"\" src=\"http://localhost:6666/content/userfiles/admin/images/q4.png\" /><br/> 使用: document.Add(CreateSimpleHtmlParagraph("<span style='font-size:10;'>" + "<b><u>" +
string text = <img alt=\"\" src=\"http://localhost:6666/content/userfiles/admin/images/q4.png\" /><br/>
使用:
document.Add(CreateSimpleHtmlParagraph("<span style='font-size:10;'>" + "<b><u>" +
"Notes" + "</u></b>" + ": " + "<br/><br/>" + text + "</span>"));
document.Add(CreateSimpleHtmlParagraph(“+”)+
注释“+”+”:“+”
“+text+”);
要使用itextsharp生成PDF,除了图像太大之外,它工作得非常好!有没有办法检查字符串是否包含宽度和高度,如果没有,请添加缩放图像的方法?正如Bruno所说,请升级到XMLWorker 您需要做的是为您感兴趣的HTML标记实现不再支持的接口。您对
img
标记感兴趣,因此您只需要使用iText已经在做的事情,但需要使用您自己的逻辑。不幸的是,它们的类是私有的,所以您不能只是将其子类化,而是可以。基本上你会得到这样一个类:
public class MyImageTagProcessor : IHTMLTagProcessor {
void IHTMLTagProcessor.EndElement(HTMLWorker worker, string tag) {
//No used
}
void IHTMLTagProcessor.StartElement(HTMLWorker worker, string tag, IDictionary<string, string> attrs) {
if (!attrs.ContainsKey(HtmlTags.WIDTH)) {
//Do something special here
attrs.Add(HtmlTags.WIDTH, "400px");
}
if (!attrs.ContainsKey(HtmlTags.HEIGHT)) {
//Do something special here
attrs.Add(HtmlTags.HEIGHT, "400px");
}
worker.UpdateChain(tag, attrs);
worker.ProcessImage(worker.CreateImage(attrs), attrs);
worker.UpdateChain(tag);
}
}
最后,将解析调用更改为使用其中一个重载。我们不需要第四个参数(提供者),所以我们将null传递给它
var elements = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(sr, styles, processors, null);
iTextSharp不再支持
HTMLWorker
。请改用XML Worker。谢谢你,布鲁诺,我需要更新程序;不过,我正在尝试首先解决这个问题。谢谢Chris,我将尝试使用XMLWorker实现它。
var processors = new Dictionary<string, IHTMLTagProcessor>();
processors.Add(HtmlTags.IMG, new MyImageTagProcessor());
var elements = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(sr, styles, processors, null);