Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# itextsharp缩放图像作为字符串发送_C#_Itextsharp - Fatal编程技术网

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);