我们项目里需要用C1Report对象生成PDF文件。
文件里需要有C1Anchor和C1Hyperlink。
现在我们是按照如下方法设定的,但是发现有性能问题。
每多设置一个C1Anchor或C1Hyperlink,内存占用就会增加1.5M左右,
这样的话,只设置了几百个,内存占用就增加了很多。
请问是否有什么改善的方法?
protected virtual void EditC1PrintDocument(C1Report report)
{
int idx = 0;
string preMaruchi = string.Empty;
for (int i = 0; i < report.C1Document.Body.Children.Count; i++)
{
var field = report.C1Document.Body.Children[i];
if (field != null)
{
if (field.GetType() == typeof(RenderText))
{
if (((RenderText)field).Text.IndexOf("Anchors:") == 0)
{
string[] currentMaruchi = ((RenderText)field).Text.Split(':');
if (!preMaruchi.Equals(currentMaruchi[1]))
{
preMaruchi = currentMaruchi[1];
string text = ((RenderText)field).Text.Replace("Anchors:", string.Empty);
((RenderText)field).Text = string.Empty;
field.Anchors.Add(new C1Anchor(string.Format("Anchors{04}", (idx + 1))));
report.C1Document.Outlines.Add(text, field);
idx++;
}
else
{
((RenderText)field).Text = string.Empty;
}
}
if (((RenderText)field).Text.Contains("HyperLink"))
{
var str = ((RenderText)field).Text.Split('-');
((RenderText)field).Text = str[0];
field.Hyperlink = new C1Hyperlink(new C1LinkTargetAnchor(str[1].Replace("HyperLink", "Anchors")));
}
}
}
}
}
|
|