在 FPDF 中显示值
Posted
技术标签:
【中文标题】在 FPDF 中显示值【英文标题】:Displaying values in FPDF 【发布时间】:2011-07-24 05:19:10 【问题描述】:这是我在 php 中使用 FPDF 生成 pdf 的代码。我想在 PDF 文件中显示学期、账单月份和账单年。我不想在表格中显示值。 我想显示在页面顶部。我怎样才能做到这一点?有什么建议吗?提前致谢。干杯。
<?php
session_start();
require('fpdf/fpdf.php');
//Connect to your database
$r1=$_SESSION['sem1'];
$con=mysql_connect('localhost','root','');
if(!$con)
die('Unable to connect'.mysql_error());
mysql_select_db('hostel',$con);
$result=mysql_query("SELECT r.hosteladmissionno,
r.student_name,
r.semester,
r.blockname
r.branch,
m.billmonth,m.billyear ,
(s.days_mess*perdayrate) AS mess_charges,
m.perdayrate,
s.days_mess,s.nv_tokens
FROM registration r,student_month s,messexp m
WHERE s.hosteladmissionno = r.hosteladmissionno
AND r.mess_type=m.messtype
AND m.billmonth = 'March' AND m.billyear= '2014'");
$number_of_products = mysql_numrows($result);
while($row = mysql_fetch_array($result))
$hostad = $row['hosteladmissionno'];
$name = $row['student_name'];
$block=$row['blockname'];
$branch=$row['branch'];
$perday=$row['perdayrate'];
$days=$row['days_mess'];
$messch= $row['mess_charges'];
$nv=$row['nv_tokens'];
$column_no = $column_no.$hostad."\n";
$column_name = $column_name.$name."\n";
$sem_details= $sem_details.$block."\n";
$comm_details= $comm_details.$branch."\n";
$course_details= $course_details.$perday."\n";
$courseyr_details= $courseyr_details.$days."\n";
$mess_details= $mess_details.$messch."\n";
$block_details= $block_details.$nv."\n";
mysql_close();
//Create a new PDF file
$pdf=new FPDF('P','mm','A4');
$pdf->AddPage();
//Fields Name position
$Y_Fields_Name_position = 40;
//Table position, under Fields Name
$Y_Table_Position = 46;
$pdf->Cell(15,50,'Anna University Hostels');
//First create each Field Name
//Gray color filling each Field Name box
$pdf->SetFillColor(232,232,232);
//Bold Font for Field Name
$pdf->SetFont('Arial','B',9);
$pdf->SetY($Y_Fields_Name_position);
$pdf->SetX(5);
$pdf->Cell(23,6,'Admission No',1,0,'L',1);
$pdf->SetX(28);
$pdf->Cell(37,6,'Student Name',1,0,'L',1);
$pdf->SetX(65);
$pdf->Cell(18,6,'Block Name',1,0,'L',1);
$pdf->SetX(83);
$pdf->Cell(20,6,'Branch',1,0,'L',1);
$pdf->SetX(103);
$pdf->Cell(22,6,'Per Day Rate',1,0,'L',1);
$pdf->SetX(125);
$pdf->Cell(22,6,'No of Days',1,0,'L',1);
$pdf->SetX(147);
$pdf->Cell(20,6,'Mess charge',1,0,'L',1);
$pdf->SetX(167);
$pdf->Cell(18,6,'NV Token',1,0,'L',1);
$pdf->SetX(185);
$pdf->Cell(25,6,'Block Name',1,0,'L',1);
$pdf->Ln();
//Now show the 3 columns
$pdf->SetFont('Arial','',12);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(5);
$pdf->MultiCell(23,6,$column_no,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(28);
$pdf->MultiCell(37,6,$column_name,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(65);
$pdf->MultiCell(18,6,$block,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(83);
$pdf->MultiCell(20,6,$branch,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(103);
$pdf->MultiCell(22,6,$perday,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(125);
$pdf->MultiCell(22,6,$days,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(147);
$pdf->MultiCell(20,6,$messch,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(167);
$pdf->MultiCell(18,6,$nv,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(185);
$pdf->MultiCell(25,6,$block_details,1);
$i = 0;
$pdf->SetY($Y_Table_Position);
while ($i < $number_of_products)
$pdf->SetX(5);
$pdf->MultiCell(205,6,'',1);
$i = $i +1;
$pdf->Output();
?>
【问题讨论】:
与您已经在做的几乎相同的事情...找到您想要的 X/Y 位置,添加一个单元格... 当我创建一个单独的单元格时,我无法显示它,它返回错误。 @Dinzy:Cell()
返回错误?您是否向其传递了无效参数?
@orbling,谢谢,我重新定位了 X/Y 位置并成功了。
我根本不想批评,FPDF 还不错,但绝对不是最推荐的 PDF 库。特别是如果您需要 Unicode 支持。它很旧而且没有维护。 TcPDF 是 FPDF 的一个分支,具有许多错误修复和更多功能。
【参考方案1】:
为什么不使用 FPDF 的标准“header()”扩展功能? http://fpdf.org/en/doc/header.htm
【讨论】:
【参考方案2】:将此添加到您的代码行 $Y_Table_Position = 46
和行 $pdf->Cell(15,50,'Anna University Hostels');
之间,它将在页面右上角显示“学期、月、年”颜色灰色(用实际值更改学期、月、年) .
//Fields Name position
$Y_Fields_Name_position = 40;
//Table position, under Fields Name
$Y_Table_Position = 46;
// ABOVE IS YOUR ORIGINAL CODE, ADD The FOLOWING LINES
$pdf->SetXY(160,0);
$pdf->SetFont('Times','B',6);
$pdf->SetTextColor('139','140','142');
$pdf->Cell(5,15,'Semester,Month,Year',0,0,'L');
$pdf->SetTextColor('0','0','0');
$pdf->SetXY(16,8);
// CONTINUE WITH ORIGINAL CODE
$pdf->Cell(15,50,'Anna University Hostels');
//First create each Field Name
//Gray color filling each Field Name box
$pdf->SetFillColor(232,232,232);
如您所见,我转到 X=160, Y=0 并使用所需的文本、自定义字体和颜色创建一个新单元格,之后,我将颜色更改为黑色(因为我的默认字体颜色是白色)和转到 X=16,Y=8,这样您的“安娜大学宿舍”就会打印在相同的位置。之后,您的表格将像以前一样打印。
希望我能理解您的问题,这就是您要找的。 (如果没有发表评论:))
【讨论】:
【参考方案3】:在标题函数中设置你谈到的内容。
function header()
$this->SetFont('whatever the font u like','B',23)//I just randomly set fonts
$this->Cell(30,10,'$_POST['user_id']',0,0,'C');
...
...
【讨论】:
以上是关于在 FPDF 中显示值的主要内容,如果未能解决你的问题,请参考以下文章
php中我用了thinkPHP 然后我要打印pdf报表 用了fpdf 但是现在不知道在action中怎么调用fpdf中的内容。