Rob*_*y F 17 pdfbox unit-conversion
我是PDFBox(和PDF生成)的新手,我很难生成自己的PDF.
我确实有一些以英寸/厘米为单位坐标的文本,我需要将它们转换为PDFBox使用的单位.任何建议/实用程序都可以自动执行此操作?
PDPageContentStream.moveTextPositionByAmount(x,y) 对我毫无意义.
mkl*_*mkl 32
通常,PDFBox在创建PDF时使用PDF用户空间坐标.这意味着:
页面的坐标由其CropBox默认为其MediaBox分隔,值从左到右,从下到上增加.因此,如果您使用坐标系创建页面,new PDPage()或者new PDPage(PDPage.PAGE_SIZE_*)在页面的左下角开始坐标系的原点.
用户空间中的单位作为默认用户空间单位开始,该单位由页面的UserUnit定义.大多数情况下(例如,如果您使用任何PDPage构造函数创建页面并且未明确更改该值),则不会显式设置它,因此,其默认踢数为1/72英寸.
通过将一些矩阵连接到当前变换矩阵,可以相当任意地改变用户空间坐标系.当前变换矩阵以单位矩阵开始.
在PDFBox中,您可以使用其中一个PDPageContentStream.concatenate2CTM()重载来完成此操作.
一旦使用切换到文本模式,所使用PDPageContentStream.beginText()的坐标系还会受到文本矩阵引入的变换的影响.
在PDFBox中,您可以使用其中一个PDPageContentStream.setTextMatrix()重载来设置文本矩阵.
由于你是PDFBox的新手(正如你所说)和一般的新手(因为我认为因为你可能已经识别了坐标),我建议你最初不要在任何可能的地方使用转换,因此,留在坐标系从左下角开始的状态既不旋转也不倾斜,单位长度为1/72英寸.
对于此上下文,您实际上可以使用PDFBox提供的常量进行转换:
PDPage.DEFAULT_USER_SPACE_UNIT_DPI以获取默认用户空间坐标.PDPage.MM_TO_UNITS以获取默认用户空间坐标.但是,如果您想获得坐标的乐趣,请查看PDF规范ISO-32000-1并学习8.3 坐标系和9.4.4 文本空间详细信息.
| 归档时间: |
|
| 查看次数: |
9177 次 |
| 最近记录: |