0
我想在我的PDF上繪製兩個文本。 第一個文本應該與左上角對齊。 這工作正常。在第一個文本下面繪製第二個文本
我使用:
canvas = stamper.GetOverContent(i)
watermarkFont = iTextSharp.text.pdf.BaseFont.CreateFont(iTextSharp.text.pdf.BaseFont.HELVETICA, iTextSharp.text.pdf.BaseFont.CP1252, iTextSharp.text.pdf.BaseFont.NOT_EMBEDDED)
watermarkFontColor = iTextSharp.text.BaseColor.RED
canvas.MoveTo(0, 0) 'I think the canvas is the space that we draw onto. My documents always start at position X=0 and Y=0, so move to 0,0 should be fine
canvas.BeginText()
canvas.SetFontAndSize(watermarkFont, 12)
canvas.SetColorFill(watermarkFontColor)
canvas.ShowTextAligned(Element.ALIGN_TOP, uText, 0, 830, 0) 'is 830 the width of the available space?
canvas.EndText()
現在我想提請其他文本的第一個文本下方大約100像素。
我使用:
canvas.MoveTo(0, 100) 'let's draw the second text at X=100, Y=100
canvas.BeginText()
canvas.SetFontAndSize(watermarkFont, 12)
canvas.SetColorFill(watermarkFontColor)
canvas.ShowTextAligned(Element.ALIGN_CENTER, uBewirtung, 0, 830, 0)
canvas.EndText()
第二個文本但是不顯示在所有。 我懷疑我是在文檔外繪畫,但我沒有看到我的錯誤。
PDF默認座標與數學中的平常一樣,即當向上*時** y **值增加。 (應用轉換可以改變,但你沒有提到你已經轉換了座標系。) 因此,當在(0,0)處繪製文本1並且在(0,100)處繪製文本2時,後者不被繪製*下面*而是*上面*文本1.此外,座標系原點通常從頁面的左下角開始(這不是強制性的,但非常常見)。因此,如果您的第一個代碼塊確實在左上角添加了文本,您忘記提及一些關鍵細節。 – mkl
@mkl有關上升y值的信息非常棒!這是我的代碼,我不會錯過任何東西。文本確實在左上角繪製。 – tmighty
[再次查看你的代碼] ...啊,好的...在'canvas.ShowTextAligned'中,你有三個浮點參數,'0,830,0';他們是** x **,** y **和**旋轉**。因此,你的'830'不是你想知道的寬度,但它是繪製文本的** y **座標,縱向A4上的830與左下角的原點相當接近頂點頁。順便說一句,'Element.ALIGN_TOP'在那裏沒有意義,對齊可以是'ALIGN_CENTER','ALIGN_RIGHT'或'ALIGN_LEFT'。 – mkl