Zend PDF中元素的Z轴层级问题:矩形覆盖文本求助
解决Zend PDF中矩形显示在文本上方的问题
嘿,我之前也踩过这个坑!其实Zend PDF(包括大部分PDF生成类库)根本没有所谓的Z轴定位概念——内容的层级完全由你的绘制顺序决定:先画的元素会被后画的元素覆盖。
你现在的问题大概率是先绘制了文本,再去画矩形,导致矩形把文本盖住了。只需要调换一下绘制顺序:先画矩形当背景,再在它上面绘制文本就行。
给你个简单的代码示例参考:
// 初始化PDF文档和页面 $pdf = new Zend_Pdf(); $page = $pdf->newPage(Zend_Pdf_Page::SIZE_A4); $pdf->pages[] = $page; // 设置矩形填充样式(比如浅灰色背景) $page->setFillColor(new Zend_Pdf_Color_GrayScale(0.8)); // 先绘制矩形:这里假设文本位置在(100, 700),宽200,高20 $page->drawRectangle(100, 700, 300, 720, Zend_Pdf_Page::SHAPE_DRAW_FILL); // 再设置文本样式并绘制文本 $page->setFillColor(new Zend_Pdf_Color_Rgb(0, 0, 0)); $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA); $page->setFont($font, 12); $page->drawText("这是显示在矩形上方的文本", 105, 705); // 保存生成的PDF $pdf->save('output.pdf');
如果是给已有的文本添加背景,你需要先确定文本的边界:比如用getTextWidth()计算文本宽度,结合字体大小估算高度,然后在对应位置先画矩形,再重新绘制文本即可。
另外提个小细节:Zend PDF的坐标系统是以页面左下角为原点的,绘制的时候注意别把Y轴位置算反了哦。
内容的提问来源于stack exchange,提问作者harri
相关产品推荐
相关产品推荐

