Я использую библиотеку TCPDF для создания PDF-файла для отображения результатов опроса. У меня есть возможность создать собственный заголовок, который будет добавлен в опрос, который может быть любым, от изображения до текста, который может быть любого размера / длины.
Моя проблема связана с автоматическим прерыванием. Позиция Y на следующей странице сбрасывается и запускается с заголовком.
Я могу изменить первую страницу, захватив текущую позицию Y и установив ее после функции «AddPage ()». Моя проблема связана с возникающими авторазрывами, но я не могу найти, чтобы проверить, произошло ли это, и вызвать что-то, чтобы это произошло.
Я нашел «checkpagebreak», но он не работает, когда разрыв страницы происходит во время многоклеточного блока текста. Я проверил пример «настраиваемого заголовка», который есть в TCPDF, но, похоже, он использует поле заголовка размером в * * * *, нужно найти способ сделать это значение динамическим c.
Я использую следующий код
// **************************************************************************************
// Process Selection
// **************************************************************************************
function RunReport()
{
// Make all global variables available here
foreach($GLOBALS as $arraykey=>$arrayvalue)
{
if ($arraykey != "GLOBALS")
{
global $$arraykey;
}
}
require_once('tcpdf/tcpdf.php');
class PDF extends tcpdf
{
function Header()
{
//This is pulled from a database but is filled in only to show the current data I am working with***
// $this->S1LDESC = "<center>Test Application<br><img src=\"link/to/image\" width='208'; height='80'></img></center>";
if(trim($this->S1LDESC) <> "")
{
$this->SetFont('Times','',11);
$this->Cell(0, .5, "" , 0,1,'C', 0);
$newX = $this->GetX();
$newY = $this->GetY();
$this->writeHTMLCell(0, .5, $newX, $newY, trim($this->S1LDESC) , 0,1,0, true, 'C', true);
}
$this->SetFont('Times','B',11);
$this->Cell(0, .5, "" , 0,1,'C', 0);
$this->Cell(0, .5, trim($this->S1DESC), 0, 1, 'C', 0, '', 0, false, 'M', 'M');
$this->HeadY = $this->GetY();
$this->SetY($this->GetY() + 5);
}
}
$pdf = new PDF("P", PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SelComp = $SelComp;
$pdf->SelSchool = $SelSchool;
// set auto page breaks
$pdf->SetAutoPageBreak(true, PDF_MARGIN_BOTTOM);
$pdf->setFontSubsetting(false);
$pdf->SetPrintHeader(true);
$pdf->SetPrintFooter(false);
$pdf->AddPage();
//$pdf->SetY($pdf->HeadY);
$selstring = "SQL To Grab DATA";
if (!($result = db2_exec($db2conn, $selstring, array('CURSOR' => DB2_SCROLLABLE))))
{
echo($selstring."<BR>");
db2_close($db2conn);
die("<b>Error RunReport ". db2_stmt_error().":" . db2_stmt_errormsg()."</b><br>" . $selstring2);
}
while($row = db2_fetch_assoc($result))
{
// make the file field names available in HTML
foreach(array_keys($row) as $key)
{
$escapedField = $key;
$$escapedField = $row[$key];
}
$pdf->SetFont('Times','B',11);
if($HldGroup <> $S2GROUP)
{
$HldGroup = $S2GROUP;
if(trim($S5GROUP) <> "*None")
{
//Write Group data
$pdf->MultiCell(0, 5, trim($S5GROUP), 0, 'L', 0, 1, '', '', true);
if(trim($S5GRPDESC) <> "")
{
$pdf->MultiCell(0, 5, trim($S5GRPDESC), 0, 'L', 0, 1, '', '', true);
}
}
}
if($S2QUESTTYP <> "HD")
{
$pdf->Cell(5, 0, "", 0,0,'C', 0);
$pdf->MultiCell(0, 5, trim($S2QUESTION), 0, 'L', 0, 1, '', '', true);
$pdf->SetFont('Times','',11);
if($S2QUESTTYP <> "ND")
{
$pdf->MultiCell(0, 5, trim($S2QUESTION), 0, 'L', 0, 1, '', '', true);
}
else
{
}
$pdf->MultiCell(0, 5, "", 0, 'L', 0, 1, '', '', true);
}
}
//Print file with Student name and report name???
$pdf->Output("$SurvName.pdf", 'I');
}
Это приводит к следующему: Страница 1:
Страница 2: