【问题标题】:SetAbsolutePosition starts at bottom?SetAbsolutePosition 从底部开始?
【发布时间】:2017-12-20 20:47:30
【问题描述】:

我正在创建 PDF,并向其中添加图像。

图像为 256x256 像素,没有什么特别之处。

我设置它的位置

nImg.SetAbsolutePosition(30, 30)

但是,图像似乎位于页面底部。

PDF 看起来像这样:

当我调用 SetAbsolutePosition(30, 30) 时,我希望它位于左上角。

这里可能发生了什么?

这是完整的代码:

       Dim nFs As System.IO.FileStream = New FileStream(sThis, FileMode.Create)

        Dim nDocument As Document = New Document(PageSize.A4, 25, 25, 25, 25)
        Dim nWriter As PdfWriter = PdfWriter.GetInstance(nDocument, nFs)
        nDocument.Open()

        Dim nCb As PdfContentByte = nWriter.DirectContent
        Dim nImg As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance("d:\myimage.png")

        nImg.SetAbsolutePosition(30, 30)
        nCb.AddImage(nImg)

        nDocument.Close()
        nWriter.Close()

        nFs.Close()

【问题讨论】:

  • @BrunoLowagie 每次我再次花时间使用 iTextSharp 时,我都会忘记这一点。我希望包装器可以使用 X-Y 坐标系的左上角坐标系。我并不是说他们是愚蠢的人,但存在其他解决方案。 MS及以上公司在处理表格等时不使用X-Y坐标系。也许您可以发表评论作为答案。

标签: vb.net itext


【解决方案1】:

首先您需要知道在哪里可以找到 PDF 页面的原点:Where is the Origin (x,y) of a PDF page? 通常,(0, 0) 坐标与左下角重合。当/MediaBox 以特殊方式创建时,或者有/CropBox 时,也有例外,但情况似乎并非如此。

那你需要知道x轴指向右边,y轴指向左边:

这在问题How should I interpret the coordinates of a rectangle in PDF?的答案中有解释

知道:

  1. 原点在左下角,
  2. y 轴向上,

(30, 30)位置添加的图片靠近页面底部是正常的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2021-02-01
    • 1970-01-01
    相关资源
    最近更新 更多