首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >仅在首页通过itext.Layout.Document.ShowTextAligned添加段落

仅在首页通过itext.Layout.Document.ShowTextAligned添加段落
EN

Stack Overflow用户
提问于 2021-05-19 10:16:57
回答 1查看 169关注 0票数 0

我试图用itext7和powershell将旋转的边框文本添加到PDF文档的第一页。

我从here中找到了一个很好的解决方案mkl,并将其移植到Powershell中:

代码语言:javascript
运行
复制
function SetRotatedTextStamp([String]$InFile, [String]$OutFile) {
  [iText.Kernel.Pdf.PdfReader]     $Reader   = [iText.Kernel.Pdf.PdfReader]::new($InFile)
  [iText.Kernel.Pdf.PdfWriter]     $Writer   = [iText.Kernel.Pdf.PdfWriter]::new($OutFile)
  [iText.Kernel.Pdf.PdfDocument]   $PDFDoc   = [iText.Kernel.Pdf.PdfDocument]::new($Reader, $Writer, $([iText.Kernel.Pdf.StampingProperties]::new()).UseAppendMode()) 
  [iText.Layout.Document]          $Doc      = [iText.Layout.Document]::new($PDFDoc)
  [iText.Layout.Element.Paragraph] $pCurPara = [iText.Layout.Element.Paragraph]::new("Hello World")
    
  $pCurPara.SetWidth(100)
  $pCurPara.SetBorder([iText.Layout.Borders.SolidBorder]::new([iText.Kernel.Colors.DeviceRgb]::new(255, 0, 0), 2))
  $pCurPara.SetRotationAngle([Math]::PI / 4)

  [iText.Kernel.Geom.Rectangle] $rect = $($PDFDoc.GetFirstPage()).GetCropBox()
  $Doc.ShowTextAligned($pCurPara, ($rect.GetLeft() + $rect.GetRight()) / 2,
                  ($rect.GetTop() + $rect.GetBottom()) / 2,
                  [iText.Layout.Properties.TextAlignment]::CENTER,
                  [iText.Layout.Properties.VerticalAlignment]::MIDDLE
                )
    
  $Doc.Close()
  $PDFDoc.Close()
  $Writer.Close()
  $Reader.Close()
}

但这一段以最后一页为中心,而不是第一页。我不知道我在这里做错了什么

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-19 14:07:46

实际上,在我最初的回答中,我使用了错误的showTextAligned重载,它使用的是最后一页,而不是第一页。我用一个没有显示的单页文档进行测试。

一般情况下,你必须替换

代码语言:javascript
运行
复制
  $Doc.ShowTextAligned($pCurPara, ($rect.GetLeft() + $rect.GetRight()) / 2,
                  ($rect.GetTop() + $rect.GetBottom()) / 2,
                  [iText.Layout.Properties.TextAlignment]::CENTER,
                  [iText.Layout.Properties.VerticalAlignment]::MIDDLE
                )

通过

代码语言:javascript
运行
复制
  $Doc.ShowTextAligned($pCurPara, ($rect.GetLeft() + $rect.GetRight()) / 2,
                  ($rect.GetTop() + $rect.GetBottom()) / 2,
                  1,
                  [iText.Layout.Properties.TextAlignment]::CENTER,
                  [iText.Layout.Properties.VerticalAlignment]::MIDDLE,
                  0
                )

要在第一页上绘图。1是页码;0是一个角度,是可以选择文本旋转的另一个地方。

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

https://stackoverflow.com/questions/67601323

复制
相关文章

相似问题

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