本文整理匯總了C#中iTextSharp.text.pdf.PdfContentByte.ShowText方法的典型用法代碼示例。如果您正苦於以下問題:C# PdfContentByte.ShowText方法的具體用法?C# PdfContentByte.ShowText怎麽用?C# PdfContentByte.ShowText使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類iTextSharp.text.pdf.PdfContentByte
的用法示例。
在下文中一共展示了PdfContentByte.ShowText方法的13個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: OnEndPage
public override void OnEndPage(PdfWriter writer, Document document)
{
base.OnEndPage(writer, document);
if (_isLastPage)
{
var relativeWidths = ColumnsHelper.GetRelativeColumnsForProducts(PageSize.A4);
//RODAPE
var pdfTableFooter = new BuilderTable().Create(relativeWidths).Standard();
pdfTableFooter.AddCell(new BuilderCell("", 5).Create("DADOS ADICIONAIS").FixedHeight(15).Bold().HorizontalLeft().VerticalBottom().Colspan(42).NoBorder().BorderBuilder(false, false, false, false).Standard());
pdfTableFooter.AddCell(new BuilderCell("", 5).Create("INFORMAÇÕES COMPLEMENTARES").FixedHeight(5).Bold().HorizontalLeft().VerticalTop().Colspan(32).NoBorder().BorderBuilder(true, true, false, true).Standard());
pdfTableFooter.AddCell(new BuilderCell("", 5).Create("RESERVADO AO FISCO").Bold().HorizontalLeft().VerticalTop().Colspan(10).NoBorder().BorderBuilder(true, true, false, true).Standard());
var infAdicional = _nfe.NFe.infNFe.infAdic;
pdfTableFooter.AddCell(new BuilderCell("", 5).Create(infAdicional.infCpl).FixedHeight(25).HorizontalLeft().VerticalTop().Colspan(32).NoBorder().BorderBuilder(true, true, false, false).Standard());
pdfTableFooter.AddCell(new BuilderCell("", 5).Create(" ").HorizontalLeft().VerticalTop().Colspan(10).NoBorder().BorderBuilder(true, true, false, false).Standard());
if (_isHomolog)
{
pdfTableFooter.AddCell(new BuilderCell("", 5).Create("SEM VALOR FISCAL").FixedHeight(5).HorizontalLeft().VerticalTop().Colspan(32).NoBorder().BorderBuilder(true, true, true, false).Standard());
pdfTableFooter.AddCell(new BuilderCell("", 5).Create(" ").HorizontalLeft().VerticalTop().Colspan(10).NoBorder().BorderBuilder(true, true, true, false).Standard());
}
document.Add(pdfTableFooter);
}
const float posX = 325f;
const float posY = 662f;
var pageN = writer.PageNumber;
var text = "Folha " + pageN + "/";
var len = _baseFont.GetWidthPoint(text, 8);
_pdfContent = writer.DirectContent;
_pdfContent.SetRGBColorFill(100, 100, 100);
_pdfContent.BeginText();
_pdfContent.SetFontAndSize(_baseFont, 8f);
_pdfContent.SetTextMatrix(posX, posY);
_pdfContent.ShowText(text);
_pdfContent.EndText();
_pdfContent.AddTemplate(_pageNumberTemplate, posX + len, posY);
_pdfContent.BeginText();
_pdfContent.SetFontAndSize(_baseFont, 8f);
_pdfContent.EndText();
}
示例2: FooterPdfInitialize
private static void FooterPdfInitialize(PdfWriter writer, Document document, PdfTemplate template, PdfContentByte contentByte, BaseFont baseFont, DateTime PrintTime)
{
int pageNumber = writer.PageNumber;
string footerText = string.Format("Strona {0}{1}", pageNumber, " z ");
float lenght = baseFont.GetWidthPoint(footerText, textSize);
Rectangle pageSize = document.PageSize;
contentByte.SetRGBColorFill(100, 100, 100);
contentByte.BeginText();
contentByte.SetFontAndSize(baseFont, textSize);
contentByte.SetTextMatrix(pageSize.GetLeft(left), pageSize.GetBottom(bottom));
contentByte.ShowText(footerText);
contentByte.EndText();
contentByte.AddTemplate(template, pageSize.GetLeft(left) + lenght, pageSize.GetBottom(bottom));
contentByte.BeginText();
contentByte.SetFontAndSize(baseFont, textSize);
contentByte.ShowTextAligned(PdfContentByte.ALIGN_RIGHT, string.Format("Utworzony: {0}", PrintTime.ToString()), pageSize.GetRight(right), pageSize.GetBottom(bottom), 0);
contentByte.EndText();
}
示例3: WriteLineToContent
//.........這裏部分代碼省略.........
float rise = 0;
Object[] textRender = (Object[])chunk.GetAttribute(Chunk.TEXTRENDERMODE);
int tr = 0;
float strokeWidth = 1;
BaseColor strokeColor = null;
object fr = chunk.GetAttribute(Chunk.SUBSUPSCRIPT);
if (textRender != null) {
tr = (int)textRender[0] & 3;
if (tr != PdfContentByte.TEXT_RENDER_MODE_FILL)
text.SetTextRenderingMode(tr);
if (tr == PdfContentByte.TEXT_RENDER_MODE_STROKE || tr == PdfContentByte.TEXT_RENDER_MODE_FILL_STROKE) {
strokeWidth = (float)textRender[1];
if (strokeWidth != 1)
text.SetLineWidth(strokeWidth);
strokeColor = (BaseColor)textRender[2];
if (strokeColor == null)
strokeColor = color;
if (strokeColor != null)
text.SetColorStroke(strokeColor);
}
}
if (fr != null)
rise = (float)fr;
if (color != null)
text.SetColorFill(color);
if (rise != 0)
text.SetTextRise(rise);
if (chunk.IsImage()) {
adjustMatrix = true;
}
else if (chunk.IsHorizontalSeparator()) {
PdfTextArray array = new PdfTextArray();
array.Add(-glueWidth * 1000f / chunk.Font.Size / hScale);
text.ShowText(array);
}
else if (chunk.IsTab() && tabPosition != xMarker)
{
PdfTextArray array = new PdfTextArray();
array.Add((tabPosition - xMarker) * 1000f / chunk.Font.Size / hScale);
text.ShowText(array);
}
// If it is a CJK chunk or Unicode TTF we will have to simulate the
// space adjustment.
else if (isJustified && numberOfSpaces > 0 && chunk.IsSpecialEncoding()) {
if (hScale != lastHScale) {
lastHScale = hScale;
text.SetWordSpacing(baseWordSpacing / hScale);
text.SetCharacterSpacing(baseCharacterSpacing / hScale + text.CharacterSpacing);
}
String s = chunk.ToString();
int idx = s.IndexOf(' ');
if (idx < 0)
text.ShowText(s);
else {
float spaceCorrection = - baseWordSpacing * 1000f / chunk.Font.Size / hScale;
PdfTextArray textArray = new PdfTextArray(s.Substring(0, idx));
int lastIdx = idx;
while ((idx = s.IndexOf(' ', lastIdx + 1)) >= 0) {
textArray.Add(spaceCorrection);
textArray.Add(s.Substring(lastIdx, idx - lastIdx));
lastIdx = idx;
}
textArray.Add(spaceCorrection);
textArray.Add(s.Substring(lastIdx));
text.ShowText(textArray);
示例4: PlaceBarcode
//.........這裏部分代碼省略.........
guard = GUARD_UPCA;
break;
case UPCE:
bars = GetBarsUPCE(code);
guard = GUARD_UPCE;
break;
case SUPP2:
bars = GetBarsSupplemental2(code);
break;
case SUPP5:
bars = GetBarsSupplemental5(code);
break;
}
float keepBarX = barStartX;
bool print = true;
float gd = 0;
if (font != null && baseline > 0 && guardBars) {
gd = baseline / 2;
}
if (barColor != null)
cb.SetColorFill(barColor);
for (int k = 0; k < bars.Length; ++k) {
float w = bars[k] * x;
if (print) {
if (Array.BinarySearch(guard, k) >= 0)
cb.Rectangle(barStartX, barStartY - gd, w - inkSpreading, barHeight + gd);
else
cb.Rectangle(barStartX, barStartY, w - inkSpreading, barHeight);
}
print = !print;
barStartX += w;
}
cb.Fill();
if (font != null) {
if (textColor != null)
cb.SetColorFill(textColor);
cb.BeginText();
cb.SetFontAndSize(font, size);
switch (codeType) {
case EAN13:
cb.SetTextMatrix(0, textStartY);
cb.ShowText(code.Substring(0, 1));
for (int k = 1; k < 13; ++k) {
string c = code.Substring(k, 1);
float len = font.GetWidthPoint(c, size);
float pX = keepBarX + TEXTPOS_EAN13[k - 1] * x - len / 2;
cb.SetTextMatrix(pX, textStartY);
cb.ShowText(c);
}
break;
case EAN8:
for (int k = 0; k < 8; ++k) {
string c = code.Substring(k, 1);
float len = font.GetWidthPoint(c, size);
float pX = TEXTPOS_EAN8[k] * x - len / 2;
cb.SetTextMatrix(pX, textStartY);
cb.ShowText(c);
}
break;
case UPCA:
cb.SetTextMatrix(0, textStartY);
cb.ShowText(code.Substring(0, 1));
for (int k = 1; k < 11; ++k) {
string c = code.Substring(k, 1);
float len = font.GetWidthPoint(c, size);
float pX = keepBarX + TEXTPOS_EAN13[k] * x - len / 2;
cb.SetTextMatrix(pX, textStartY);
cb.ShowText(c);
}
cb.SetTextMatrix(keepBarX + x * (11 + 12 * 7), textStartY);
cb.ShowText(code.Substring(11, 1));
break;
case UPCE:
cb.SetTextMatrix(0, textStartY);
cb.ShowText(code.Substring(0, 1));
for (int k = 1; k < 7; ++k) {
string c = code.Substring(k, 1);
float len = font.GetWidthPoint(c, size);
float pX = keepBarX + TEXTPOS_EAN13[k - 1] * x - len / 2;
cb.SetTextMatrix(pX, textStartY);
cb.ShowText(c);
}
cb.SetTextMatrix(keepBarX + x * (9 + 6 * 7), textStartY);
cb.ShowText(code.Substring(7, 1));
break;
case SUPP2:
case SUPP5:
for (int k = 0; k < code.Length; ++k) {
string c = code.Substring(k, 1);
float len = font.GetWidthPoint(c, size);
float pX = (7.5f + (9 * k)) * x - len / 2;
cb.SetTextMatrix(pX, textStartY);
cb.ShowText(c);
}
break;
}
cb.EndText();
}
return rect;
}
示例5: PlaceBarcode
/** Places the barcode in a <CODE>PdfContentByte</CODE>. The
* barcode is always placed at coodinates (0, 0). Use the
* translation matrix to move it elsewhere.<p>
* The bars and text are written in the following colors:<p>
* <P><TABLE BORDER=1>
* <TR>
* <TH><P><CODE>barColor</CODE></TH>
* <TH><P><CODE>textColor</CODE></TH>
* <TH><P>Result</TH>
* </TR>
* <TR>
* <TD><P><CODE>null</CODE></TD>
* <TD><P><CODE>null</CODE></TD>
* <TD><P>bars and text painted with current fill color</TD>
* </TR>
* <TR>
* <TD><P><CODE>barColor</CODE></TD>
* <TD><P><CODE>null</CODE></TD>
* <TD><P>bars and text painted with <CODE>barColor</CODE></TD>
* </TR>
* <TR>
* <TD><P><CODE>null</CODE></TD>
* <TD><P><CODE>textColor</CODE></TD>
* <TD><P>bars painted with current color<br>text painted with <CODE>textColor</CODE></TD>
* </TR>
* <TR>
* <TD><P><CODE>barColor</CODE></TD>
* <TD><P><CODE>textColor</CODE></TD>
* <TD><P>bars painted with <CODE>barColor</CODE><br>text painted with <CODE>textColor</CODE></TD>
* </TR>
* </TABLE>
* @param cb the <CODE>PdfContentByte</CODE> where the barcode will be placed
* @param barColor the color of the bars. It can be <CODE>null</CODE>
* @param textColor the color of the text. It can be <CODE>null</CODE>
* @return the dimensions the barcode occupies
*/
public override Rectangle PlaceBarcode(PdfContentByte cb, BaseColor barColor, BaseColor textColor)
{
String fullCode = code;
if (generateChecksum && checksumText)
fullCode = CalculateChecksum(code);
if (!startStopText)
fullCode = fullCode.Substring(1, fullCode.Length - 2);
float fontX = 0;
if (font != null) {
fontX = font.GetWidthPoint(fullCode = altText != null ? altText : fullCode, size);
}
byte[] bars = GetBarsCodabar(generateChecksum ? CalculateChecksum(code) : code);
int wide = 0;
for (int k = 0; k < bars.Length; ++k) {
wide += (int)bars[k];
}
int narrow = bars.Length - wide;
float fullWidth = x * (narrow + wide * n);
float barStartX = 0;
float textStartX = 0;
switch (textAlignment) {
case Element.ALIGN_LEFT:
break;
case Element.ALIGN_RIGHT:
if (fontX > fullWidth)
barStartX = fontX - fullWidth;
else
textStartX = fullWidth - fontX;
break;
default:
if (fontX > fullWidth)
barStartX = (fontX - fullWidth) / 2;
else
textStartX = (fullWidth - fontX) / 2;
break;
}
float barStartY = 0;
float textStartY = 0;
if (font != null) {
if (baseline <= 0)
textStartY = barHeight - baseline;
else {
textStartY = -font.GetFontDescriptor(BaseFont.DESCENT, size);
barStartY = textStartY + baseline;
}
}
bool print = true;
if (barColor != null)
cb.SetColorFill(barColor);
for (int k = 0; k < bars.Length; ++k) {
float w = (bars[k] == 0 ? x : x * n);
if (print)
cb.Rectangle(barStartX, barStartY, w - inkSpreading, barHeight);
print = !print;
barStartX += w;
}
cb.Fill();
if (font != null) {
if (textColor != null)
cb.SetColorFill(textColor);
cb.BeginText();
cb.SetFontAndSize(font, size);
cb.SetTextMatrix(textStartX, textStartY);
cb.ShowText(fullCode);
//.........這裏部分代碼省略.........
示例6: PlaceBarcode
//.........這裏部分代碼省略.........
* <TD><P><CODE>null</CODE></TD>
* <TD><P>bars and text painted with <CODE>barColor</CODE></TD>
* </TR>
* <TR>
* <TD><P><CODE>null</CODE></TD>
* <TD><P><CODE>textColor</CODE></TD>
* <TD><P>bars painted with current color<br>text painted with <CODE>textColor</CODE></TD>
* </TR>
* <TR>
* <TD><P><CODE>barColor</CODE></TD>
* <TD><P><CODE>textColor</CODE></TD>
* <TD><P>bars painted with <CODE>barColor</CODE><br>text painted with <CODE>textColor</CODE></TD>
* </TR>
* </TABLE>
* @param cb the <CODE>PdfContentByte</CODE> where the barcode will be placed
* @param barColor the color of the bars. It can be <CODE>null</CODE>
* @param textColor the color of the text. It can be <CODE>null</CODE>
* @return the dimensions the barcode occupies
*/
public override Rectangle PlaceBarcode(PdfContentByte cb, BaseColor barColor, BaseColor textColor) {
string fullCode;
if (codeType == CODE128_RAW) {
int idx = code.IndexOf('\uffff');
if (idx < 0)
fullCode = "";
else
fullCode = code.Substring(idx + 1);
}
else if (codeType == CODE128_UCC)
fullCode = GetHumanReadableUCCEAN(code);
else
fullCode = RemoveFNC1(code);
float fontX = 0;
if (font != null) {
fontX = font.GetWidthPoint(fullCode = altText != null ? altText : fullCode, size);
}
string bCode;
if (codeType == CODE128_RAW) {
int idx = code.IndexOf('\uffff');
if (idx >= 0)
bCode = code.Substring(0, idx);
else
bCode = code;
}
else {
bCode = GetRawText(code, codeType == CODE128_UCC);
}
int len = bCode.Length;
float fullWidth = (len + 2) * 11 * x + 2 * x;
float barStartX = 0;
float textStartX = 0;
switch (textAlignment) {
case Element.ALIGN_LEFT:
break;
case Element.ALIGN_RIGHT:
if (fontX > fullWidth)
barStartX = fontX - fullWidth;
else
textStartX = fullWidth - fontX;
break;
default:
if (fontX > fullWidth)
barStartX = (fontX - fullWidth) / 2;
else
textStartX = (fullWidth - fontX) / 2;
break;
}
float barStartY = 0;
float textStartY = 0;
if (font != null) {
if (baseline <= 0)
textStartY = barHeight - baseline;
else {
textStartY = -font.GetFontDescriptor(BaseFont.DESCENT, size);
barStartY = textStartY + baseline;
}
}
byte[] bars = GetBarsCode128Raw(bCode);
bool print = true;
if (barColor != null)
cb.SetColorFill(barColor);
for (int k = 0; k < bars.Length; ++k) {
float w = bars[k] * x;
if (print)
cb.Rectangle(barStartX, barStartY, w - inkSpreading, barHeight);
print = !print;
barStartX += w;
}
cb.Fill();
if (font != null) {
if (textColor != null)
cb.SetColorFill(textColor);
cb.BeginText();
cb.SetFontAndSize(font, size);
cb.SetTextMatrix(textStartX, textStartY);
cb.ShowText(fullCode);
cb.EndText();
}
return this.BarcodeSize;
}
示例7: WriteLine
internal void WriteLine(PdfLine line, PdfContentByte text, PdfContentByte graphics) {
PdfFont currentFont = null;
foreach(PdfChunk chunk in line) {
if (chunk.Font.CompareTo(currentFont) != 0) {
currentFont = chunk.Font;
text.SetFontAndSize(currentFont.Font, currentFont.Size);
}
BaseColor color = chunk.Color;
if (color != null)
text.SetColorFill(color);
text.ShowText(chunk.ToString());
if (color != null)
text.ResetRGBColorFill();
}
}
示例8: DrawBoxForCover
/// <summary>
/// Draws the box on the cover page that contains the date
/// </summary>
/// <param name="cb"></param>
/// <param name="doc"></param>
/// <param name="project"></param>
private void DrawBoxForCover(PdfContentByte cb, Document doc)
{
// set the colors
cb.SetColorStroke(_baseColor);
cb.SetColorFill(_baseColor);
// calculate the top left corner of the box
var x = doc.LeftMargin;
var y = doc.BottomMargin + 678;
var height = 60;
// move the cursor to starting position
cb.MoveTo(x, y);
// draw the top line
cb.LineTo(x + _pageWidth, y);
// draw the right line
cb.LineTo(x + _pageWidth, y - height);
// draw the bottom line
cb.LineTo(x, y - height);
// draw the left line
cb.LineTo(x, y);
cb.ClosePathFillStroke();
cb.Stroke();
// add the text inside the box
cb.BeginText();
cb.SetFontAndSize(_dateBaseFont, 26f);
cb.SetColorStroke(BaseColor.WHITE);
cb.SetColorFill(BaseColor.WHITE);
cb.SetTextMatrix(x + 10, y - 40);
cb.ShowText(string.Format("{0:MMMM dd, yyyy}", DateTime.Now));
cb.EndText();
}
示例9: WriteLine
internal void WriteLine(PdfLine line, PdfContentByte text, PdfContentByte graphics)
{
PdfFont currentFont = null;
foreach(PdfChunk chunk in line) {
if (chunk.Font.CompareTo(currentFont) != 0) {
currentFont = chunk.Font;
text.SetFontAndSize(currentFont.Font, currentFont.Size);
}
Object[] textRender = (Object[])chunk.GetAttribute(Chunk.TEXTRENDERMODE);
int tr = 0;
float strokeWidth = 1;
BaseColor color = chunk.Color;
BaseColor strokeColor = null;
if (textRender != null) {
tr = (int)textRender[0] & 3;
if (tr != PdfContentByte.TEXT_RENDER_MODE_FILL)
text.SetTextRenderingMode(tr);
if (tr == PdfContentByte.TEXT_RENDER_MODE_STROKE || tr == PdfContentByte.TEXT_RENDER_MODE_FILL_STROKE) {
strokeWidth = (float)textRender[1];
if (strokeWidth != 1)
text.SetLineWidth(strokeWidth);
strokeColor = (BaseColor)textRender[2];
if (strokeColor == null)
strokeColor = color;
if (strokeColor != null)
text.SetColorStroke(strokeColor);
}
}
object charSpace = chunk.GetAttribute(Chunk.CHAR_SPACING);
// no char space setting means "leave it as is".
if (charSpace != null && !curCharSpace.Equals(charSpace)) {
curCharSpace = (float)charSpace;
text.SetCharacterSpacing(curCharSpace);
}
if (color != null)
text.SetColorFill(color);
text.ShowText(chunk.ToString());
if (color != null)
text.ResetRGBColorFill();
if (tr != PdfContentByte.TEXT_RENDER_MODE_FILL)
text.SetTextRenderingMode(PdfContentByte.TEXT_RENDER_MODE_FILL);
if (strokeColor != null)
text.ResetRGBColorStroke();
if (strokeWidth != 1)
text.SetLineWidth(1);
}
}
示例10: WriteLine
internal void WriteLine(PdfLine line, PdfContentByte text, PdfContentByte graphics)
{
PdfFont currentFont = null;
foreach(PdfChunk chunk in line) {
if (chunk.Font.CompareTo(currentFont) != 0) {
currentFont = chunk.Font;
text.SetFontAndSize(currentFont.Font, currentFont.Size);
}
BaseColor color = chunk.Color;
object charSpace = chunk.GetAttribute(Chunk.CHAR_SPACING);
// no char space setting means "leave it as is".
if (charSpace != null && !curCharSpace.Equals(charSpace)) {
curCharSpace = (float)charSpace;
text.SetCharacterSpacing(curCharSpace);
}
if (color != null)
text.SetColorFill(color);
text.ShowText(chunk.ToString());
if (color != null)
text.ResetRGBColorFill();
}
}
示例11: WriteTextToDocument
private static void WriteTextToDocument(BaseFont bf,Rectangle tamPagina,
PdfContentByte over,PdfGState gs,string texto)
{
over.SetGState(gs);
over.SetRGBColorFill(220, 220, 220);
over.SetTextRenderingMode(PdfContentByte.TEXT_RENDER_MODE_STROKE);
over.SetFontAndSize(bf, 46);
Single anchoDiag =
(Single)Math.Sqrt(Math.Pow((tamPagina.Height - 120), 2)
+ Math.Pow((tamPagina.Width - 60), 2));
Single porc = (Single)100
* (anchoDiag / bf.GetWidthPoint(texto, 46));
over.SetHorizontalScaling(porc);
double angPage = (-1)
* Math.Atan((tamPagina.Height - 60) / (tamPagina.Width - 60));
over.SetTextMatrix((float)Math.Cos(angPage),
(float)Math.Sin(angPage),
(float)((-1F) * Math.Sin(angPage)),
(float)Math.Cos(angPage),
30F,
(float)tamPagina.Height - 60);
over.ShowText(texto);
}
示例12: WriteLineToContent
//.........這裏部分代碼省略.........
}
xMarker += width;
++chunkStrokeIdx;
}
if (chunk.Font.CompareTo(currentFont) != 0) {
currentFont = chunk.Font;
text.SetFontAndSize(currentFont.Font, currentFont.Size);
}
float rise = 0;
Object[] textRender = (Object[])chunk.GetAttribute(Chunk.TEXTRENDERMODE);
int tr = 0;
float strokeWidth = 1;
Color strokeColor = null;
object fr = chunk.GetAttribute(Chunk.SUBSUPSCRIPT);
if (textRender != null) {
tr = (int)textRender[0] & 3;
if (tr != PdfContentByte.TEXT_RENDER_MODE_FILL)
text.SetTextRenderingMode(tr);
if (tr == PdfContentByte.TEXT_RENDER_MODE_STROKE || tr == PdfContentByte.TEXT_RENDER_MODE_FILL_STROKE) {
strokeWidth = (float)textRender[1];
if (strokeWidth != 1)
text.SetLineWidth(strokeWidth);
strokeColor = (Color)textRender[2];
if (strokeColor == null)
strokeColor = color;
if (strokeColor != null)
text.SetColorStroke(strokeColor);
}
}
if (fr != null)
rise = (float)fr;
if (color != null)
text.SetColorFill(color);
if (rise != 0)
text.SetTextRise(rise);
if (chunk.IsImage()) {
adjustMatrix = true;
}
// If it is a CJK chunk or Unicode TTF we will have to simulate the
// space adjustment.
else if (isJustified && numberOfSpaces > 0 && chunk.IsSpecialEncoding()) {
if (hScale != lastHScale) {
lastHScale = hScale;
text.SetWordSpacing(baseWordSpacing / hScale);
text.SetCharacterSpacing(baseCharacterSpacing / hScale);
}
String s = chunk.ToString();
int idx = s.IndexOf(' ');
if (idx < 0)
text.ShowText(chunk.ToString());
else {
float spaceCorrection = - baseWordSpacing * 1000f / chunk.Font.Size / hScale;
PdfTextArray textArray = new PdfTextArray(s.Substring(0, idx));
int lastIdx = idx;
while ((idx = s.IndexOf(' ', lastIdx + 1)) >= 0) {
textArray.Add(spaceCorrection);
textArray.Add(s.Substring(lastIdx, idx - lastIdx));
lastIdx = idx;
}
textArray.Add(spaceCorrection);
textArray.Add(s.Substring(lastIdx));
text.ShowText(textArray);
}
}
else {
if (isJustified && hScale != lastHScale) {
lastHScale = hScale;
text.SetWordSpacing(baseWordSpacing / hScale);
text.SetCharacterSpacing(baseCharacterSpacing / hScale);
}
text.ShowText(chunk.ToString());
}
if (rise != 0)
text.SetTextRise(0);
if (color != null)
text.ResetRGBColorFill();
if (tr != PdfContentByte.TEXT_RENDER_MODE_FILL)
text.SetTextRenderingMode(PdfContentByte.TEXT_RENDER_MODE_FILL);
if (strokeColor != null)
text.ResetRGBColorStroke();
if (strokeWidth != 1)
text.SetLineWidth(1);
if (chunk.IsAttribute(Chunk.SKEW) || chunk.IsAttribute(Chunk.HSCALE)) {
adjustMatrix = true;
text.SetTextMatrix(xMarker, yMarker);
}
}
if (isJustified) {
text.SetWordSpacing(0);
text.SetCharacterSpacing(0);
if (line.NewlineSplit)
lastBaseFactor = 0;
}
if (adjustMatrix)
text.MoveText(baseXMarker - text.XTLM, 0);
currentValues[0] = currentFont;
currentValues[1] = lastBaseFactor;
}
示例13: OnEndPage
public override void OnEndPage(PdfWriter writer, Document document)
{
base.OnEndPage(writer, document);
int pageN = writer.PageNumber;
string text = pageN + " - ";
float len = baseFont.GetWidthPoint(text, 8);
Rectangle pageSize = document.PageSize;
pdfContent = writer.DirectContent;
pdfContent.SetRGBColorFill(100, 100, 100);
pdfContent.BeginText();
pdfContent.SetFontAndSize(baseFont, 8);
pdfContent.SetTextMatrix(pageSize.Width / 2, pageSize.GetBottom(30));
pdfContent.ShowText(text);
pdfContent.EndText();
pdfContent.AddTemplate(pageNumberTemplate, (pageSize.Width / 2) + len, pageSize.GetBottom(30));
pdfContent.BeginText();
pdfContent.SetFontAndSize(baseFont, 8);
pdfContent.ShowTextAligned(PdfContentByte.ALIGN_RIGHT, printTime.ToString(), pageSize.GetRight(40), pageSize.GetBottom(30), 0);
pdfContent.EndText();
}