本文整理匯總了C#中iTextSharp.text.pdf.PdfContentByte.CloseMCBlock方法的典型用法代碼示例。如果您正苦於以下問題:C# PdfContentByte.CloseMCBlock方法的具體用法?C# PdfContentByte.CloseMCBlock怎麽用?C# PdfContentByte.CloseMCBlock使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類iTextSharp.text.pdf.PdfContentByte
的用法示例。
在下文中一共展示了PdfContentByte.CloseMCBlock方法的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: WriteLineToContent
//.........這裏部分代碼省略.........
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);
}
}
else {
if (isJustified && hScale != lastHScale) {
lastHScale = hScale;
text.SetWordSpacing(baseWordSpacing / hScale);
text.SetCharacterSpacing(baseCharacterSpacing / hScale + text.CharacterSpacing);
}
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 (chunk.IsAttribute(Chunk.CHAR_SPACING)) {
text.SetCharacterSpacing(baseCharacterSpacing);
}
if (chunk.IsAttribute(Chunk.WORD_SPACING)) {
text.SetWordSpacing(baseWordSpacing);
}
if (IsTagged(writer) && chunk.accessibleElement != null) {
text.CloseMCBlock(chunk.accessibleElement);
}
}
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;
return lastX;
}
示例2: CloseTableBlock
private PdfPTableBody CloseTableBlock(PdfPTableBody block, PdfContentByte canvas) {
if (canvas.writer.GetStandardStructElems().Contains(block.Role))
canvas.CloseMCBlock(block);
return null;
}
示例3: Layout
virtual public int Layout(PdfContentByte canvas, bool useAscender, bool simulate, float llx, float lly, float urx, float ury)
{
float leftX = Math.Min(llx, urx);
float maxY = Math.Max(lly, ury);
float minY = Math.Min(lly, ury);
float rightX = Math.Max(llx, urx);
yLine = maxY;
bool contentCutByFixedHeight = false;
if (width != null && width > 0)
{
if (width < rightX - leftX)
rightX = leftX + (float) width;
else if (width > rightX - leftX)
return ColumnText.NO_MORE_COLUMN;
}
else if (percentageWidth != null)
{
contentWidth = (rightX - leftX)*(float) percentageWidth;
rightX = leftX + contentWidth;
}
if (height != null && height > 0)
{
if (height < maxY - minY)
{
contentCutByFixedHeight = true;
minY = maxY - (float) height;
}
else if (height > maxY - minY)
{
return ColumnText.NO_MORE_COLUMN;
}
}
else if (percentageHeight != null)
{
if (percentageHeight < 1.0)
contentCutByFixedHeight = true;
contentHeight = (maxY - minY)*(float) percentageHeight;
minY = maxY - contentHeight;
}
if (!simulate && position == PdfDiv.PositionType.RELATIVE)
{
float? translationX = null;
if (left != null)
translationX = left;
else if (right != null)
translationX = -right;
else
translationX = 0f;
float? translationY = null;
if (top != null)
translationY = -top;
else if (bottom != null)
translationY = bottom;
else
translationY = 0f;
canvas.SaveState();
canvas.Transform(new AffineTransform(1f, 0, 0, 1f, translationX.Value, translationY.Value));
}
if (!simulate)
{
if (backgroundColor != null && getActualWidth() > 0 && getActualHeight() > 0)
{
float backgroundWidth = getActualWidth();
float backgroundHeight = getActualHeight();
if (width != null)
backgroundWidth = width > 0 ? (float) width : 0;
if (height != null)
backgroundHeight = height > 0 ? (float) height : 0;
if (backgroundWidth > 0 && backgroundHeight > 0)
{
Rectangle background = new Rectangle(leftX, maxY - backgroundHeight, leftX + backgroundWidth, maxY);
background.BackgroundColor = backgroundColor;
PdfArtifact artifact = new PdfArtifact();
canvas.OpenMCBlock(artifact);
canvas.Rectangle(background);
canvas.CloseMCBlock(artifact);
}
}
}
if (percentageWidth == null)
contentWidth = 0;
if (percentageHeight == null)
contentHeight = 0;
minY += paddingBottom;
leftX += paddingLeft;
rightX -= paddingRight;
yLine -= paddingTop;
int status = ColumnText.NO_MORE_TEXT;
if (content.Count > 0) {
if (floatLayout == null) {
//.........這裏部分代碼省略.........
示例4: Layout
virtual public int Layout(PdfContentByte canvas, bool useAscender, bool simulate, float llx, float lly, float urx, float ury)
{
float leftX = Math.Min(llx, urx);
float maxY = Math.Max(lly, ury);
float minY = Math.Min(lly, ury);
float rightX = Math.Max(llx, urx);
yLine = maxY;
bool contentCutByFixedHeight = false;
if (width != null && width > 0)
{
if (width < rightX - leftX)
rightX = leftX + (float) width;
else if (width > rightX - leftX)
return ColumnText.NO_MORE_COLUMN;
}
else if (percentageWidth != null)
{
contentWidth = (rightX - leftX)*(float) percentageWidth;
rightX = leftX + contentWidth;
}
else if (percentageWidth == null)
{
if (this.floatType == FloatType.NONE && (this.display == DisplayType.DEFAULT_NULL_VALUE ||
this.display == DisplayType.BLOCK || this.display == DisplayType.LIST_ITEM ||
this.display == DisplayType.RUN_IN))
{
contentWidth = rightX - leftX;
}
}
if (height != null && height > 0)
{
if (height < maxY - minY)
{
contentCutByFixedHeight = true;
minY = maxY - (float) height;
}
else if (height > maxY - minY)
{
return ColumnText.NO_MORE_COLUMN;
}
}
else if (percentageHeight != null)
{
if (percentageHeight < 1.0)
contentCutByFixedHeight = true;
contentHeight = (maxY - minY)*(float) percentageHeight;
minY = maxY - contentHeight;
}
if (!simulate && position == PdfDiv.PositionType.RELATIVE)
{
float? translationX = null;
if (left != null)
translationX = left;
else if (right != null)
translationX = -right;
else
translationX = 0f;
float? translationY = null;
if (top != null)
translationY = -top;
else if (bottom != null)
translationY = bottom;
else
translationY = 0f;
canvas.SaveState();
canvas.Transform(new AffineTransform(1f, 0, 0, 1f, translationX.Value, translationY.Value));
}
if (!simulate)
{
if ((backgroundColor != null || backgroundImage != null) && getActualWidth() > 0 && getActualHeight() > 0)
{
float backgroundWidth = getActualWidth();
float backgroundHeight = getActualHeight();
if (width != null)
backgroundWidth = width > 0 ? (float) width : 0;
if (height != null)
backgroundHeight = height > 0 ? (float) height : 0;
if (backgroundWidth > 0 && backgroundHeight > 0)
{
Rectangle background = new Rectangle(leftX, maxY - backgroundHeight, leftX + backgroundWidth, maxY);
if (backgroundColor != null) {
background.BackgroundColor = backgroundColor;
PdfArtifact artifact = new PdfArtifact();
canvas.OpenMCBlock(artifact);
canvas.Rectangle(background);
canvas.CloseMCBlock(artifact);
}
if (backgroundImage != null) {
if (backgroundImageWidth == null) {
backgroundImage.ScaleToFit(background);
}
else {
backgroundImage.ScaleAbsolute((float)backgroundImageWidth, backgroundImageHeight);
}
backgroundImage.SetAbsolutePosition(background.Left, background.Bottom);
//.........這裏部分代碼省略.........
示例5: Layout
virtual public int Layout(PdfContentByte canvas, bool simulate)
{
compositeColumn.Canvas = canvas;
int status = ColumnText.NO_MORE_TEXT;
List<IElement> floatingElements = new List<IElement>();
List<IElement> content = simulate ? new List<IElement>(this.content) : this.content;
while (content.Count > 0)
{
if (content[0] is PdfDiv)
{
PdfDiv floatingElement = (PdfDiv)content[0];
if (floatingElement.Float == PdfDiv.FloatType.LEFT || floatingElement.Float == PdfDiv.FloatType.RIGHT)
{
floatingElements.Add(floatingElement);
content.RemoveAt(0);
}
else
{
if (floatingElements.Count > 0)
{
status = FloatingLayout(floatingElements, simulate);
if ((status & ColumnText.NO_MORE_TEXT) == 0)
{
break;
}
}
content.RemoveAt(0);
status = floatingElement.Layout(canvas, useAscender, true, floatLeftX, minY, floatRightX, yLine);
if (floatingElement.KeepTogether && (status & ColumnText.NO_MORE_TEXT) == 0)
{
//check for empty page
if (compositeColumn.Canvas.PdfDocument.currentHeight > 0 || yLine != maxY)
{
content.Insert(0, floatingElement);
break;
}
}
if (!simulate)
{
canvas.OpenMCBlock(floatingElement);
if (floatingElement.Position == PdfDiv.PositionType.ABSOLUTE)
{
if (floatingElement.Left == null && floatingElement.Right != null)
status = floatingElement.Layout(canvas, useAscender, simulate, floatRightX - floatingElement.ContentWidth - 1, minY, floatRightX, yLine);
else
status = floatingElement.Layout(canvas, useAscender, simulate, floatLeftX, minY, floatRightX, yLine);
}
else
status = floatingElement.Layout(canvas, useAscender, simulate, floatLeftX, minY, floatRightX, yLine);
canvas.CloseMCBlock(floatingElement);
}
if (floatingElement.getActualWidth() > filledWidth)
{
filledWidth = floatingElement.getActualWidth();
}
if ((status & ColumnText.NO_MORE_TEXT) == 0)
{
content.Insert(0, floatingElement);
yLine = floatingElement.YLine;
break;
}
else
{
yLine -= floatingElement.getActualHeight();
}
}
}
else
{
floatingElements.Add(content[0]);
content.RemoveAt(0);
}
}
if ((status & ColumnText.NO_MORE_TEXT) != 0 && floatingElements.Count > 0)
{
status = FloatingLayout(floatingElements, simulate);
}
content.InsertRange(0, floatingElements);
return status;
}