首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iText7 MoveText与矩形对象

iText7 MoveText与矩形对象
EN

Stack Overflow用户
提问于 2022-03-16 15:29:18
回答 1查看 168关注 0票数 0

当我使用pdfCanvas对象时,我有一个MoveText方法,可以设置x和y坐标,但是在段落对象中看不到吗?第二件事是,为什么我需要矩形对象,我不添加任何矩形到pdf只是文本。在这里,我希望文本取整页宽度。如果我在centeredWidth中只有MoveText方法,那么我可以得到字体和文本的大小,然后计算MoveText和pdfCanvas吗?

代码语言:javascript
运行
复制
for (int i = 1; i <= numberOfPages; i++)
{
    PdfPage pdfPage = pdfDocument.GetPage(i);
    iText.Kernel.Geom.Rectangle pageSizeWithRotation = pdfPage.GetPageSizeWithRotation();

    float n2 = 15F;
    float n3 = pageSizeWithRotation.GetHeight() - 10F;

    float frontSize = 6.25f;

    PdfCanvas pdfCanvas = new PdfCanvas(pdfPage);
    iText.Kernel.Geom.Rectangle rectangle = new iText.Kernel.Geom.Rectangle(100, 100, 100, 100);
    Canvas canvas = new Canvas(pdfCanvas,  rectangle);

    PdfFont font = PdfFontFactory.CreateFont("C:\\Windows\\Fonts\\ARIALN.TTF");

    Paragraph p = new Paragraph()
        .Add(disclaimerText)
        .SetFont(font)
        .SetFontSize(frontSize)
        .SetTextAlignment(TextAlignment.CENTER);

    canvas.Add(p);
    canvas.Close();

    //pdfCanvas.BeginText()
    //      .SetFillColorRgb(0, 0, 0)
    //      .SetFontAndSize(PdfFontFactory.CreateFont("C:\\Windows\\Fonts\\ARIALN.TTF"), frontSize)
    //      .MoveText(n2, n3)
    //      .ShowText(disclaimerText)
    //      .EndText();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-16 19:57:41

首先,请注意,您使用的是iText API的不同部分,其中一边是PdfCanvas,另一边是Canvas

PdfCanvas仅仅是写入PDF的指令的薄包装。在使用这个类时,您必须确定要从哪里开始文本行、在哪里拆分行、在字符、单词和行之间添加多少空间等等。

另一方面,Canvas (和Document)具有它自己的布局引擎,您只需要使用PdfCanvas来初始化它,以及您希望它操作的坐标范围,然后输入Canvas正确安排的段落、表等。

因此,您基本上可以选择,您最重要的是自己安排所有事情,还是最重要的是将该任务留给iText处理。

话虽如此,让我们看看你的问题:

--当我使用pdfCanvas对象时,我有一个MoveText方法,可以设置x和y坐标,但是在段落对象中看不到吗?

Paragraph主要是由CanvasDocument为自动布局设计的。但是,您可以使用SetFixedPosition重载在给定的坐标下静态地排列它们。

第二件事是,为什么我需要矩形对象,我不添加任何矩形到pdf只是文本。

您需要矩形来告诉Canvas,在(理论上没完没了的) PdfCanvas坐标平面上,它应该安排给它的对象。

,在这里,我希望文本获得整个页面的宽度。

然后使用该页面的完整裁剪框,假设您指的是屏幕上页面的全部可见宽度或最终打印的产品。您可以使用PdfPage方法GetCropBox获得它。

如果您不确定有哪一个“页面的完整宽度”,请查看this answer

,我可以得到字体和文本的大小,然后计算centeredWidth和centeredHeight,如果我在pdfCanvas中只有MoveText方法?

如果没有字体大小,就设置它(如代码中显示的那样使用SetFontAndSize )。您还可以设置字体。您设置的PdfFont对象具有很好的GetWidth重载功能,以确定使用该字体绘制的某些文本的宽度。结合上面提到的“裁剪”框和琐碎的数学,您可以计算出简单文本绘图所需的一切。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71499865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档