Itextsharp ShowTextAligned未准确输出文本

Itextsharp ShowTextAligned未准确输出文本,itextsharp,Itextsharp,我正在使用下面的代码片段。我希望文本之间的距离正好是一英寸,但事实并非如此。我做错了什么 Dim outputFile As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "test.pdf") Using fs As New FileStream(outputFile, FileMode.Create, FileAccess.Write, FileShare.Non

我正在使用下面的代码片段。我希望文本之间的距离正好是一英寸,但事实并非如此。我做错了什么

Dim outputFile As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "test.pdf")
    Using fs As New FileStream(outputFile, FileMode.Create, FileAccess.Write, FileShare.None)
        Using doc As New Document(PageSize.LETTER)
            Using writer As PdfWriter = PdfWriter.GetInstance(doc, fs)
                doc.Open()

                'This creates two lines of text using the iTextSharp abstractions
                '   doc.Add(New Paragraph("This is Paragraph 1"))
                '  doc.Add(New Paragraph("This is Paragraph 2"))

                'This does the same as above but line spacing needs to be calculated manually
                Dim cb As PdfContentByte = writer.DirectContent
                cb.SaveState()
                cb.SetColorFill(BaseColor.BLACK)
                cb.SetFontAndSize(BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED), 12.0F)
                cb.BeginText()
                ' rlm - dimensions are from the bottom
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "This is cb1", 20, 20, 0)
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "This is cb2", 20, 92, 0)
                cb.EndText()
                cb.RestoreState()
                doc.Close()
            End Using
        End Using
    End Using

我不确定你们是如何测量的,但我只是以实际分辨率打印出你们的样品,并将其与尺子进行比较,它们的基线确实相距一英寸

如果你在电脑屏幕上测量,你会遇到问题。基于Windows的计算机通常(尽管这正在改变)以96 DPI的速度运行,因此,如果您在计算机屏幕上以100%的速度查看测试并尝试测量它,您将获得大约4/3英寸(96/72)。所谓的“hi-DPI”设置和设备越来越普遍,因此无法保证屏幕的实际测量结果