将列文本定位在绝对点 itext 锐利

埃利多特网

我使用itextSharp即时创建PDF。我使用 ColumnText 是因为我正在处理从右到左的内容。通过在网上搜索,我了解到 column.SetSimpleColumn 接受 4 个参数 (x,y,w,h) 对吗?我的第一个问题是我不知道列的宽度和高度,我需要它是动态的文本内容。任何人都知道如何根据他的内容设置列宽和高度?

try
        {
            for (int j = 0; j < project.Slides[i].Labels.Count; j++)
            {
                string pageContext = project.Slides[i].Labels[j].Text;
                int fontNumber = Convert.ToInt32(project.Slides[i].Labels[j].Font);
                int fontSize = Convert.ToInt32(project.Slides[i].Labels[j].Size);
                float fontSizePoints = (float)fontSize * (float)2.3;
                string fontColor = project.Slides[i].Labels[j].Color;
                float fontX = (float)project.Slides[i].Labels[j].X;
                float fontY = (float)project.Slides[i].Labels[j].Y;
                var color = System.Drawing.ColorTranslator.FromHtml(fontColor);

                baseFont = GetBaseFont(fontNumber);

                float w = baseFont.GetWidthPoint(pageContext, fontSizePoints);
                Font dFont = new Font(baseFont, fontSizePoints);


                dFont.Color = new BaseColor(color);
                ColumnText column = new ColumnText(writer.DirectContent);
                column.SetSimpleColumn(fontX, fontY, w, 100);

                column.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
                column.AddElement(new Paragraph(pageContext, dFont));

                column.Go();
            }
        }
        catch (Exception)
        {

        }

我附上图片来描述这个问题。文档中可以有 1 个或 20 个文本列。我不知道字体的大小和这段文字有多长。它可以是 2 个字或 30 个字。我唯一的信息是左边的 x,y | 底部坐标(以及字体系列、大小、颜色...)我的问题是如何创建 TextColumn(由于 RTL 支持需要使用它)并按特定坐标位置放置它。在此处输入图片说明

埃利多特网

@mkl 感谢回复。我发现的最佳解决方案是。在绝对位置 + RTL 支持下工作得很好。

try
        {
            for (int j = 0; j < project.Slides[i].Labels.Count; j++)
            {
                string pageContext = project.Slides[i].Labels[j].Text;
                int fontNumber = Convert.ToInt32(project.Slides[i].Labels[j].Font);
                int fontSize = Convert.ToInt32(project.Slides[i].Labels[j].Size);
                float fontSizePoints = (float)fontSize * (float)2.1;
                string fontColor = project.Slides[i].Labels[j].Color;

                float X = (float)project.Slides[i].Labels[j].X;
                float Y = pHeightPoints - (float)project.Slides[i].Labels[j].Y;
                float width = (float)project.Slides[i].Labels[j].Widht;
                float height = (float)project.Slides[i].Labels[j].Heigh;

                float llx = X;
                float lly = Y + height;
                float urx = X + width;
                float ury = Y;

                var color = System.Drawing.ColorTranslator.FromHtml(fontColor);

                baseFont = GetBaseFont(fontNumber);
                float w = baseFont.GetWidthPoint(pageContext, fontSizePoints);
                Font dFont = new Font(baseFont, fontSizePoints);
                dFont.Color = new BaseColor(color);

                PlaceText(writer.DirectContent, pageContext, 
                    new Font(baseFont, fontSizePoints, 
                        Font.NORMAL,
                        new BaseColor(color)), llx, lly, urx, ury, 14, 
                        Element.ALIGN_RIGHT);
            }
        }
        catch (Exception)
        {

        }

和...

protected static void PlaceText(PdfContentByte pdfContentByte
                            , string text
                            , iTextSharp.text.Font font
                            , float lowerLeftx
                            , float lowerLefty
                            , float upperRightx
                            , float upperRighty
                            , float leading
                            , int alignment)
{
    ColumnText ct = new ColumnText(pdfContentByte);
    ct.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
    ct.SetSimpleColumn(new Phrase(text, font), lowerLeftx, lowerLefty, upperRightx, upperRighty, leading, alignment);
    ct.Go();
}

谢谢

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从文本文件 c 锐利读取内容

来自分类Dev

将Graphics2D嵌入到itext中,而无需绝对定位

来自分类Dev

itext:如何调整文本提取?

来自分类Dev

iText将文档与Acrofields合并

来自分类Dev

WebSockets。斑点或网络套接字锐利

来自分类Dev

锐化后的锐利者Redgate过多记录

来自分类Dev

锐利的dx包围字形的最小矩形

来自分类Dev

UISegmentedControll外观无边框锐利边缘

来自分类Dev

使用 Itext 5 定位 JFreeChart 图像

来自分类Dev

iText或iTextSharp基本文本编辑

来自分类Dev

使用矩形在iText中选择文本

来自分类Dev

利用iText PDF文件中的文本替换

来自分类Dev

使用itext7的addind文本

来自分类Dev

iText或iTextSharp基本文本编辑

来自分类Dev

使用itext从pdf提取数学文本

来自分类Dev

iText7 Java添加文本问题

来自分类Dev

在itext中的扫描文档上设置文本

来自分类Dev

使用iText的XMLWorker将表格水平居中

来自分类Dev

带n列的iText表分页符

来自分类Dev

CEF锐利的3个检索响应标头

来自分类Dev

按时间序列减少噪音,保持锐利边缘

来自分类Dev

锐利后捕获异常蜂被自己捕获并重新抛出

来自分类Dev

在iOS中,放大位图时如何保留锐利的边缘?

来自分类Dev

以编程方式创建带有包含图像的锐利边缘的按钮

来自分类Dev

使用推特锐利的收藏夹列表

来自分类Dev

使 Google Chrome 中的字体更清晰、更锐利

来自分类Dev

在 GTK 锐利中居中/右对齐两个标签

来自分类Dev

IText:在具有绝对位置的标题上添加图像

来自分类Dev

将控件定位在窗体上的绝对位置