文本不规则列图像和文本自动换行

本文关键字:文本 自动换行 不规则 图像 | 更新日期: 2023-09-27 18:13:05

我正在使用iTextSharp生成PDF,而另一个部门坚持要我制作的PDF尽可能与他们的模型相匹配。我遇到了在列中围绕图像包装文本的问题。我从我的研究中知道,将图像与文本放在PDFCell中是行不通的,所以我尝试使用不规则列。下面是我的示例代码:

float width = 200.0f;
float height = 320.0f;
float gutter = 3;
PdfTemplate tempCanvas = writer.DirectContent.CreateTemplate(width, height);
float x1 = underPressure.ScaledWidth + gutter;
float y1 = height - underPressure.ScaledHeight - gutter;
float[] LEFT = new float[] { width, height, x1, y1, 0, y1, 0, 0 };
float[] RIGHT = new float[] {0,height,width,0};
ColumnText ct = new ColumnText(tempCanvas);
ct.SetColumns(LEFT, RIGHT);
underPressure.SetAbsolutePosition(x1 - 10, y1 - 120);
tempCanvas.AddImage(underPressure);
ct.SetText(tempPhrase);
...

我找到了将图像放在文本左侧的代码,并使文本根据图像进行换行,但我需要像下面这样的东西:

https://i.stack.imgur.com/xx4KU.png

我必须承认,我对LEFT和RIGHT列属性相当困惑。从书中,左和右数组定义多边形的边界,你正在尝试创建,但有人能给出更详细的描述,这是如何工作的?我一直试着去理解它,但失败得很惨。

文本不规则列图像和文本自动换行

所以我终于弄明白了,我想我会在这里发布。我不得不重读几次iText书来弄清楚这一点,但是LEFT和RIGHT数组只是你想要为你正在绘制的多边形指定的点,以使列。

//创建一个不规则的列,你必须指定你想要画的多边形的点在左侧坐标和右侧坐标的形式

//Because we only need a straight line for the left side of the shape of the column, we can specify two points: the top coordinate, and the bottom coordinate.
//The right is a little trickier, but using Math, you can create the points you need the scaled width and scaled height of the image.
float[] LEFT = new float[] { 0,height, 0,0 };
float[] RIGHT = new float[] {width,height,  width,y1 + 40,  width - x1 - 5,y1 + 40,  width - x1 - 5,y1 - underPressure.ScaledHeight / 2.0f + 10,  width, y1 - underPressure.ScaledHeight / 2.0f + 10, width, 0 };

给出了我需要的结果。LEFT仅是形状的顶部、左上点和左下点。我只需要左边缘的直线。右数组有点棘手,但它是我需要的形状,它可以用数学计算出来。

耶。