Циклические значения и отображение в файле PDF - PullRequest
0 голосов
/ 06 апреля 2010

я написал следующий код: Как вы можете видеть, есть цикл for, который просматривает некоторые значения и отображает их в сгенерированном PDF-файле. Проблема в том, что все значения пишутся в одном месте. Я попытался вставить новую строку, но это не похоже на работу. Кто-нибудь может подсказать мне, как я могу это сделать? Нужно ли мне писать вложенный цикл для значений в разных позициях y?

$pdf = pdf_new();

            // open a file
            pdf_open_file($pdf, "C:/xampp/htdocs/final/6.pdf");
            pdf_set_info($pdf, "Author", "");
            pdf_set_info($pdf, "Title", "");
            pdf_set_info($pdf, "Creator", "");
            pdf_set_info($pdf, "Subject", "");
            // start a new page (A4)
            $x = 595;
            $y = 842;
            pdf_begin_page($pdf, $x, $y);
            pdf_set_parameter($pdf, 'FontOutline', 'Arial=c:\windows\fonts\arial.ttf');
            pdf_setcolor($pdf, "stroke", "rgb", 0, 0, 0, 1.0);

            // get and use a font object
            $font = pdf_findfont($pdf, "Arial", "host", 1);

            pdf_setfont($pdf, $font, 10);

            // print text
            pdf_show_xy($pdf, "QUOTATION" , 250, $y - 60);
            pdf_show_xy($pdf, "Customer Name: " . $this->customer_details['first_name'] .
                " " . $this->customer_details['last_name'], 50, 770);
            pdf_show_xy($pdf, "Date: " . date("F j, Y, g:i a"), 50, 750);
            pdf_show_xy($pdf, "Number of items requested: " . $count_items_req, 50, 730);
            pdf_show_xy($pdf, "Number of items found: " . $count_items_found, 50, 710);


            // add an image under the text
            $image = $image = PDF_load_image($pdf, "png",
                "C:/xampp/htdocs/final/images/footer_logo.png", "");

            PDF_fit_image($pdf, $image, 50, 785, "");
            pdf_moveto($pdf, 20, 780);
            pdf_lineto($pdf, 575, 780);
            pdf_stroke($pdf);

            // draw another line near the bottom of the page
            pdf_moveto($pdf, 20, 50);
            pdf_lineto($pdf, 575, 50);
            pdf_stroke($pdf);

            //Draw the lines
            $offset = 184;
            $i = 0;
            pdf_moveto($pdf, 20, $y - 160);
            pdf_lineto($pdf, $x - 20, $y - 160);
            pdf_stroke($pdf);

            pdf_moveto($pdf, $x - 400, $y - 160);
            pdf_lineto($pdf, $x - 400, 80);
            pdf_stroke($pdf);

            pdf_moveto($pdf, $x - 200, $y - 160);
            pdf_lineto($pdf, $x - 200, 80);
            pdf_stroke($pdf);

            pdf_moveto($pdf, $x - 100, $y - 160);
            pdf_lineto($pdf, $x - 100, 80);
            pdf_stroke($pdf);

            pdf_continue_text($pdf, '');
            pdf_continue_text($pdf, '');

            pdf_show_xy($pdf, "Searched Item", 70, $y - 150);
            pdf_show_xy($pdf, "Searched Item", 70, $y - 150);


            pdf_show_xy($pdf, "Item name", 240, $y - 150);
            pdf_show_xy($pdf, "Item name", 240, $y - 150);
            pdf_show_xy($pdf, "Price", $x - 180, $y - 150);
            pdf_show_xy($pdf, "Price", $x - 180, $y - 150);
            pdf_show_xy($pdf, "Discounted Price", $x - 100, $y - 150);
            pdf_show_xy($pdf, "Discounted Price", $x - 100, $y - 150);
            for ($i = 0; $i < count($this->quotation_details); $i++)
            {

                 pdf_show_xy($pdf, $this->quotation_details[$i]['name_searched'] , 70, $y - 500);

            }


            // and write some text under it
            pdf_show_xy($pdf, "", 250, 35);


            // end page
            pdf_end_page($pdf);

            // close and save file
            pdf_close($pdf);

1 Ответ

2 голосов
/ 06 апреля 2010

Вам не нужен вложенный цикл, вам просто нужно каждый раз менять значение, которое вычитаете из $ y. Вы можете сделать это так:


$placeholder = 500; // initial value
for ($i = 0; $i quotation_details); $i++)
{
  pdf_show_xy($pdf, $this->quotation_details[$i]['name_searched'] , 70, $y - $placeholder);
  $placeholder = $placeholder - 20;
}

Возможно, вы захотите вычесть больше или меньше 20. Поиграйте и найдите значение, которое выглядит хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...