Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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,我正在填写PDF模板的表单字段,一切都很好。 字段中的单选按钮、复选框和纯文本都可以使用正确的字体 我有几个字段需要删除部分文本 例如:从22.50欧元到18.00欧元 所以我假设我需要将文本分割成块,对每个块应用不同的字体,并从中创建一个短语 问题是普通文本(不是删除线)没有使用我指定的字体 以下是我目前掌握的代码: const Int32 FONT_SIZE = 8; BaseFont _font = GetFont(BaseFont.CP1257); Font _standardFont

我正在填写PDF模板的表单字段,一切都很好。 字段中的单选按钮、复选框和纯文本都可以使用正确的字体

我有几个字段需要删除部分文本

例如:从22.50欧元到18.00欧元

所以我假设我需要将文本分割成块,对每个块应用不同的字体,并从中创建一个短语

问题是普通文本(不是删除线)没有使用我指定的字体

以下是我目前掌握的代码:

const Int32 FONT_SIZE = 8;
BaseFont _font = GetFont(BaseFont.CP1257);
Font _standardFont = new Font(_font, FONT_SIZE, Font.DEFAULTSIZE);
Font _strikethroughFont = new Font(_font, FONT_SIZE, Font.STRIKETHRU);

var c1 = new Chunk("From ", _standardFont);
var c2 = new Chunk(originalPrice.ToString("c", _culture), _strikethroughFont);
var c3 = new Chunk(String.Format(" to {0}", finalPrice.ToString("c", _culture)), _standardFont);
AddText("Abonnement_16", new [] {c1,c2,c3}, PdfContentByte.ALIGN_RIGHT);
这是一种似乎不起作用的方法:

private void AddText(String fieldName, IEnumerable<Chunk> textChunks, Int32 align) {
    var pos = _pdfstamper.AcroFields.GetFieldPositions(fieldName)[0].position;
    var phrase = new Phrase();

    foreach (var chunk in textChunks) phrase.Add(chunk);

    var ct = new ColumnText(_content);
    ct.SetSimpleColumn(pos.Left, pos.Bottom, pos.Right, pos.Top, 0, align);
    ct.AddElement(phrase);
    ct.Go();
}
private void AddText(字符串字段名、IEnumerable textChunks、Int32 align){
var pos=_pdfstamper.AcroFields.GetFieldPositions(fieldName)[0]。位置;
var短语=新短语();
foreach(文本块中的var chunk)短语。添加(chunk);
var ct=新列文本(_内容);
ct设置简单柱(位置左侧,位置底部,位置右侧,位置顶部,0,对齐);
增补(短语);
ct.Go();
}

谢谢。

什么不起作用?请注意,如果内容不符合矩形,则不会向文档中添加任何内容。
Go()
方法的返回值提供了这些信息。删除线部分以正确的字体正确显示。但是前后的文字字体要大得多。啊,没关系。这个可以关闭。它可以正常工作,我在没有设置字体大小的代码中调用了错误的构造函数。