本文整理汇总了C#中iTextSharp.text.Chunk.SetCharacterSpacing方法的典型用法代码示例。如果您正苦于以下问题:C# Chunk.SetCharacterSpacing方法的具体用法?C# Chunk.SetCharacterSpacing怎么用?C# Chunk.SetCharacterSpacing使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类iTextSharp.text.Chunk
的用法示例。
在下文中一共展示了Chunk.SetCharacterSpacing方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Write
// ---------------------------------------------------------------------------
public void Write(Stream stream) {
// step 1
using (Document document = new Document()) {
// step 2
PdfWriter.GetInstance(document, stream);
// step 3
document.Open();
// step 4
BaseFont bf1 = BaseFont.CreateFont(
"c:/windows/fonts/arial.ttf",
BaseFont.CP1252, BaseFont.EMBEDDED
);
Font font1 = new Font(bf1, 12);
document.Add(new Paragraph("Movie title: Moscou, Belgium", font1));
document.Add(new Paragraph(
"directed by Christophe Van Rompaey", font1
));
Chunk chunk = new Chunk(MOVIE, font1);
chunk.SetCharacterSpacing(10);
document.Add(new Paragraph(chunk));
}
}
示例2: Apply
/**
*
* @param c the Chunk to apply CSS to.
* @param t the tag containing the chunk data
* @return the styled chunk
*/
virtual public Chunk Apply(Chunk c, Tag t)
{
Font f = ApplyFontStyles(t);
float size = f.Size;
String value = null;
IDictionary<String, String> rules = t.CSS;
foreach (KeyValuePair<String, String> entry in rules)
{
String key = entry.Key;
value = entry.Value;
if (Util.EqualsIgnoreCase(CSS.Property.FONT_STYLE, key)) {
if (Util.EqualsIgnoreCase(CSS.Value.OBLIQUE, value)) {
c.SetSkew(0, 12);
}
} else if (Util.EqualsIgnoreCase(CSS.Property.LETTER_SPACING, key)) {
String letterSpacing = entry.Value;
float letterSpacingValue = 0f;
if (utils.IsRelativeValue(value)) {
letterSpacingValue = utils.ParseRelativeValue(letterSpacing, f.Size);
} else if (utils.IsMetricValue(value)) {
letterSpacingValue = utils.ParsePxInCmMmPcToPt(letterSpacing);
}
c.SetCharacterSpacing(letterSpacingValue);
} else if (Util.EqualsIgnoreCase(CSS.Property.XFA_FONT_HORIZONTAL_SCALE, key)) {
// only % allowed; need a catch block NumberFormatExc?
c.SetHorizontalScaling(
float.Parse(value.Replace("%", ""))/100);
}
}
// following styles are separate from the for each loop, because they are based on font settings like size.
if (rules.TryGetValue(CSS.Property.VERTICAL_ALIGN, out value))
{
if (Util.EqualsIgnoreCase(CSS.Value.SUPER, value)
|| Util.EqualsIgnoreCase(CSS.Value.TOP, value)
|| Util.EqualsIgnoreCase(CSS.Value.TEXT_TOP, value)) {
c.SetTextRise((float) (size/2 + 0.5));
} else if (Util.EqualsIgnoreCase(CSS.Value.SUB, value)
|| Util.EqualsIgnoreCase(CSS.Value.BOTTOM, value)
|| Util.EqualsIgnoreCase(CSS.Value.TEXT_BOTTOM, value)) {
c.SetTextRise(-size/2);
} else {
c.SetTextRise(utils.ParsePxInCmMmPcToPt(value));
}
}
String xfaVertScale;
if (rules.TryGetValue(CSS.Property.XFA_FONT_VERTICAL_SCALE, out xfaVertScale))
{
if (xfaVertScale.Contains("%"))
{
size *= float.Parse(xfaVertScale.Replace("%", ""))/100;
c.SetHorizontalScaling(100/float.Parse(xfaVertScale.Replace("%", "")));
}
}
if (rules.TryGetValue(CSS.Property.TEXT_DECORATION, out value)) {
String[] splitValues = new Regex(@"\s+").Split(value);
foreach (String curValue in splitValues) {
if (Util.EqualsIgnoreCase(CSS.Value.UNDERLINE, curValue)) {
c.SetUnderline(0.75f, -size/8f);
}
if (Util.EqualsIgnoreCase(CSS.Value.LINE_THROUGH, curValue)) {
c.SetUnderline(0.75f, size/4f);
}
}
}
if (rules.TryGetValue(CSS.Property.BACKGROUND_COLOR, out value))
{
c.SetBackground(HtmlUtilities.DecodeColor(value));
}
f.Size = size;
c.Font = f;
float? leading = null;
value = null;
if (rules.TryGetValue(CSS.Property.LINE_HEIGHT, out value)) {
if (utils.IsNumericValue(value)) {
leading = float.Parse(value) * c.Font.Size;
} else if (utils.IsRelativeValue(value)) {
leading = utils.ParseRelativeValue(value, c.Font.Size);
} else if (utils.IsMetricValue(value)) {
leading = utils.ParsePxInCmMmPcToPt(value);
}
}
if (leading != null) {
c.setLineHeight((float)leading);
}
return c;
}
示例3: CopyChunkStyles
/**
* Method used for copying styles from one chunk to another. Could be deprecated if the content of a chunk can be overwritten.
*
* @param source chunk which contains the required styles.
* @param target chunk which needs the required styles.
*/
virtual public void CopyChunkStyles(Chunk source, Chunk target)
{
target.Font = source.Font;
target.Attributes = source.Attributes;
target.SetCharacterSpacing(source.GetCharacterSpacing());
target.SetHorizontalScaling(source.HorizontalScaling);
target.SetHorizontalScaling(source.HorizontalScaling);
}
示例4: Apply
/**
*
* @param c the Chunk to apply CSS to.
* @param t the tag containing the chunk data
* @return the styled chunk
*/
public Chunk Apply(Chunk c, Tag t)
{
Font f = ApplyFontStyles(t);
float size = f.Size;
String value = null;
IDictionary<String, String> rules = t.CSS;
foreach (KeyValuePair<String, String> entry in rules)
{
String key = entry.Key;
value = entry.Value;
if (Util.EqualsIgnoreCase(CSS.Property.FONT_STYLE, key)) {
if (Util.EqualsIgnoreCase(CSS.Value.OBLIQUE, value))
{
c.SetSkew(0, 12);
}
} else if (Util.EqualsIgnoreCase(CSS.Property.LETTER_SPACING, key)) {
c.SetCharacterSpacing(utils.ParsePxInCmMmPcToPt(value));
} else if (Util.EqualsIgnoreCase(CSS.Property.XFA_FONT_HORIZONTAL_SCALE, key)) {
// only % allowed; need a catch block NumberFormatExc?
c.SetHorizontalScaling(
float.Parse(value.Replace("%", ""))/100);
}
}
// following styles are separate from the for each loop, because they are based on font settings like size.
if (rules.TryGetValue(CSS.Property.VERTICAL_ALIGN, out value))
{
if (Util.EqualsIgnoreCase(CSS.Value.SUPER, value)
|| Util.EqualsIgnoreCase(CSS.Value.TOP, value)
|| Util.EqualsIgnoreCase(CSS.Value.TEXT_TOP, value)) {
c.SetTextRise((float) (size/2 + 0.5));
} else if (Util.EqualsIgnoreCase(CSS.Value.SUB, value)
|| Util.EqualsIgnoreCase(CSS.Value.BOTTOM, value)
|| Util.EqualsIgnoreCase(CSS.Value.TEXT_BOTTOM, value)) {
c.SetTextRise(-size/2);
} else {
c.SetTextRise(utils.ParsePxInCmMmPcToPt(value));
}
}
String xfaVertScale;
if (rules.TryGetValue(CSS.Property.XFA_FONT_VERTICAL_SCALE, out xfaVertScale))
{
if (xfaVertScale.Contains("%"))
{
size *= float.Parse(xfaVertScale.Replace("%", ""))/100;
c.SetHorizontalScaling(100/float.Parse(xfaVertScale.Replace("%", "")));
}
}
if (rules.TryGetValue(CSS.Property.TEXT_DECORATION, out value))
{
// Restriction? In html a underline and a line-through is possible on one piece of text. A Chunk can set an underline only once.
if (Util.EqualsIgnoreCase(CSS.Value.UNDERLINE, value))
{
c.SetUnderline(0.75f, -size/8f);
}
if (Util.EqualsIgnoreCase(CSS.Value.LINE_THROUGH, value))
{
c.SetUnderline(0.75f, size/4f);
}
}
if (rules.TryGetValue(CSS.Property.BACKGROUND_COLOR, out value))
{
c.SetBackground(HtmlUtilities.DecodeColor(value));
}
f.Size = size;
c.Font = f;
return c;
}