TCPDF Y Положение Получение Сброс - PullRequest
0 голосов
/ 26 марта 2020

Я использую библиотеку 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: Page 1

Страница 2: Page 2

...