perl PDF文本坐标

perl PDF文本坐标,perl,pdf,Perl,Pdf,这是一个用perl编写的简单hello world测试脚本,用于生成PDF文件: #!/usr/bin/perl use PDF::API2; # Create a blank PDF file $pdf = PDF::API2->new(); # Add a blank page $page = $pdf->page(); # Set the page size $page->mediabox('A4'); # Add a built-in font to the

这是一个用perl编写的简单hello world测试脚本,用于生成PDF文件:

#!/usr/bin/perl

use PDF::API2;

# Create a blank PDF file
$pdf = PDF::API2->new();

# Add a blank page
$page = $pdf->page();

# Set the page size
$page->mediabox('A4');

# Add a built-in font to the PDF
$font = $pdf->corefont('Helvetica-Bold');

# Add some text to the page
$text = $page->text();
$text->font($font, 20);
$text->translate(72, 28); # 1inch, 1cm
$text->text('Hello World!');

# Save the PDF
$pdf->saveas('test.pdf');
我希望我的文本底部比页面底部高1厘米,但事实并非如此(另一方面,x位置正确地位于页面左侧1英寸处)

在打印页上测量显示文本中心为1厘米(或多或少)。这是否意味着对象的y定位是从其垂直中间开始的


谢谢

这里有几个从输出PDF复制粘贴的关键对象,一旦解压缩:

页面对象:

5 0 obj
<< /Type /Page /Contents [ 7 0 R ] /MediaBox [ 0 0 595 842 ] /Parent 2 0 R
   /Resources << /Font << /HeBoCBA~1438376482 6 0 R >> /ProcSet
   [/PDF /Text /ImageB /ImageC /ImageI ] >> >>
endobj
50对象
> >>
endobj
页面内容:

7 0 obj
<< /Length 77 >>
stream
BT  /HeBoCBA~1438376482 20 Tf 1 0 0 1 72 28 Tm [ (Hello World!) ] TJ  ET
endstream
endobj
70对象
>
流动
BT/HeBoCBA~1438376482 20 Tf 1 0 0 1 72 28 Tm[(你好,世界!)]TJ ET
尾流
endobj
媒体盒是A4格式的
[0 0 0 595 842]

指令
1 0 0 1 72 28 Tm
(设置文本矩阵)正在将
Tx
设置为72,将
Ty
设置为28

因此,看看PDF,它似乎确实正确地将页面大小设置为
A4
,并从基线而不是中心定位文本

更新: 这是一个屏幕截图,显示了Hello World的外观


这似乎是你可以通过一些实验自己解决的问题。在这个过程中,不要杀死太多树木……最有可能的答案是字母基线,至少对PDF来说是这样。你的打印机有多精确?我的打印机不是杀手。。。三星M2070…好的,谢谢,那么你如何解释1厘米y位于文本中心,而x位于1英寸的正确位置?我试过Tx 72和ty 72,1英寸的y再次出现在文本的中心。。。奇怪。在尝试tx 0和Ty 0时,我正确地将文本从页面左下角水平和垂直开始!快速:不建议测量硬拷贝。AcrobatReader有一些非常好的内置测量工具<代码>缩放&
编辑>>分析>>测量工具
编辑>>首选项>>测量
都是您的朋友。根据Reader distance tool,我的文本在页面上的位置似乎正确。我想我得怪我的打印机。。。疯狂它是完全精确的x,而不是在所有的y坐标是你的打印机设置,可以帮助的东西。很可能是因为缩放而不考虑媒体盒的设置。我基本上是直接在硬拷贝上测量的,因为我试图在标签(A4纸)上打印条形码。检查我的打印机设置(我从未更改过),我注意到每英寸的行数设置为6。这似乎正确吗?