/** * Monta as carteirinhas de acordo em $config e $students * @return FPDF */ public function generatePdf() { $pdf = new FPDF('P', 'mm', 'A4'); // Variáveis auxiliares $yCoordinate = self::VERTICAL_MARGIN; $cardVerseX = self::HORIZONTAL_MARGIN + self::GAP_BETWEEN_CARDS + self::CARD_WIDTH; $cardsPerPage = (int) ((297 - 2 * self::VERTICAL_MARGIN) / (self::CARD_HEIGHT + self::GAP_BETWEEN_CARDS)); $frontFieldsX = self::HORIZONTAL_MARGIN + self::CARD_WIDTH - self::CARD_PADDING - self::FRONT_FIELDS_WIDTH; foreach ($this->students as $i => $student) { if ($i % $cardsPerPage === 0) { $pdf->AddPage('P', 'A4'); $yCoordinate = self::VERTICAL_MARGIN; } $pdf->SetDrawColor(255); // Branco $pdf->SetFillColor(255); // Branco // Posiciona o background selecionado na frente da carteirinha $pdf->Image(self::BASE_PATH . '/public/img/' . $this->config['bg_img_url'], self::HORIZONTAL_MARGIN, $yCoordinate, self::CARD_WIDTH, self::CARD_HEIGHT); // Posiciona o background selecionado no verso da carteirinha $pdf->Image(self::BASE_PATH . '/public/img/' . $this->config['bg_img_url'], $cardVerseX, $yCoordinate, self::CARD_WIDTH, self::CARD_HEIGHT); // Posiciona o logo $pdf->Image(self::BASE_PATH . '/public/img/' . 'logo_branco.png', self::HORIZONTAL_MARGIN + self::CARD_PADDING, $yCoordinate + self::CARD_PADDING, self::LOGO_WIDTH, self::LOGO_HEIGHT); $pdf->Image(self::BASE_PATH . '/public/img/' . 'logo_branco.png', $cardVerseX + self::CARD_PADDING, $yCoordinate + self::CARD_PADDING, self::LOGO_WIDTH, self::LOGO_HEIGHT); // Define a fonte, o tamanho e a cor do texto $pdf->SetFont(self::FONT, '', self::TITLE_TEXT_SIZE); $pdf->SetTextColor(255); // Branco // Posiciona o nome do cursinho na frente $titleWidth = $pdf->GetStringWidth(self::TITLE); $pdf->Text(self::HORIZONTAL_MARGIN + self::CARD_WIDTH - $titleWidth - self::CARD_PADDING, $yCoordinate + 9.09, self::TITLE); // Posiciona o nome do cursinho no verso $pdf->Text($cardVerseX + self::CARD_WIDTH - $titleWidth - self::CARD_PADDING, $yCoordinate + 9.09, self::TITLE); // Posiciona a foto do aluno $pdf->Image(self::BASE_PATH . '/data/profile/' . $student['img_url'], self::HORIZONTAL_MARGIN + self::CARD_PADDING, $yCoordinate + 19.4, 23.44); // Define a fonte, o tamanho e a cor do texto $pdf->SetFont(self::FONT, '', self::LABEL_TEXT_SIZE); $pdf->SetTextColor(20); // Cinza // Posiciona o rótulo e o campo do NOME do aluno $nameFieldY = $yCoordinate + 24; $pdf->Text($frontFieldsX, $nameFieldY - 1.35, "NOME"); $pdf->Rect($frontFieldsX, $nameFieldY, self::FRONT_FIELDS_WIDTH, self::FRONT_FIELDS_HEIGHT, 'DF'); // Posiciona o rótulo e o campo do RG do aluno $rgFieldY = $yCoordinate + 34.85; $pdf->Text($frontFieldsX, $rgFieldY - 1.35, "RG"); $pdf->Rect($frontFieldsX, $rgFieldY, self::FRONT_FIELDS_WIDTH, self::FRONT_FIELDS_HEIGHT, 'DF'); // Define a fonte e o tamanho do texto $pdf->SetFont(self::FONT, '', self::REGULAR_TEXT_SIZE); // Posiciona o NOME do aluno $pdf->Text($frontFieldsX + 1.5, $nameFieldY + 2.78, utf8_decode($student['name'])); // Posiciona o RG do aluno $pdf->Text($frontFieldsX + 1.5, $rgFieldY + 2.7, $student['rg']); // Posiciona a assinatura do presidente $signatureTxt = self::SIGNATURE; $ySignatureTxt = $yCoordinate + self::CARD_HEIGHT - self::CARD_PADDING; $pdf->Text($cardVerseX + (self::CARD_WIDTH - $pdf->GetStringWidth($signatureTxt)) / 2, $ySignatureTxt, $signatureTxt); // Posiciona uma linha acima do texto da assinatura $pdf->Line($cardVerseX + self::CARD_WIDTH * 0.2, $ySignatureTxt - 4, $cardVerseX + self::CARD_WIDTH * 0.8, $ySignatureTxt - 4, 'DF'); $phraseFieldY = $yCoordinate + 17; // Posiciona o campo da frase $pdf->Rect($cardVerseX + self::CARD_PADDING, $phraseFieldY, self::CARD_WIDTH - 2 * self::CARD_PADDING, self::PHRASE_FIELD_HEIGHT, 'DF'); // Define a fonte e o tamanho do texto $pdf->SetFont(self::FONT, '', self::PHRASE_TEXT_SIZE); // Posiciona a frase no verso da carteirinha $pdf->SetXY($cardVerseX + self::CARD_PADDING + self::PHRASE_FIELD_PADDING, $phraseFieldY + self::PHRASE_FIELD_PADDING); $pdf->MultiCell(self::CARD_WIDTH - 2 * self::CARD_PADDING - 2 * self::PHRASE_FIELD_PADDING, self::PHRASE_FIELD_ROW_HEIGHT, utf8_decode($this->config['phrase'])); // Posiciona o autor $pdf->Text($cardVerseX + self::CARD_WIDTH - self::CARD_PADDING - self::PHRASE_FIELD_PADDING - $pdf->GetStringWidth(utf8_decode($this->config['author'])), $phraseFieldY + self::PHRASE_FIELD_HEIGHT - self::PHRASE_FIELD_PADDING, utf8_decode($this->config['author'])); // Define a fonte e o tamanho do texto $pdf->SetFont(self::FONT, '', self::EXPIRY_TEXT_SIZE); // Posiciona a mensagem da data de validade (Válido até <dia> de <mês> de <ano>) $str = utf8_decode('Válido até ' . $this->config['expiry']->format('d') . ' de ' . self::MONTHS[(int) $this->config['expiry']->format('n') - 1] . ' de ' . $this->config['expiry']->format('Y')); $pdf->Text(self::HORIZONTAL_MARGIN + self::CARD_WIDTH - self::CARD_PADDING - $pdf->GetStringWidth($str), $yCoordinate + self::CARD_HEIGHT - self::CARD_PADDING, $str); // coordenada y para construção da próxima carteirinha $yCoordinate += self::CARD_HEIGHT + self::GAP_BETWEEN_CARDS; } return $pdf->Output('Carteirinhas', 'I', true); }
/** * @param Certificado $certificado * @throws \Exception */ public function crearPdf(Certificado $certificado) { $empleado = new Empleado($certificado->cedula_empleado); //echo print_r($empleado); //$empleado = new Empleado(); $pdf = new FPDF('P', 'cm', 'Letter'); //$pdf = new FPDF_Protection(); //$pdf->SetProtection(array('print')); $pdf->AddPage(); $pdf->SetMargins(3, 3, 2); $pdf->SetAutoPageBreak(true, 1); $pdf->SetLineWidth(1.5); $pdf->SetFont('Arial'); $pdf->Image(realpath(__DIR__ . '/../../../../assets/images/logo.png'), 14, 0.3, 5, 'PNG'); $pdf->SetFont('Arial', '', 6); $pdf->Cell(17.5, 6, $certificado->id, 0, 2, 'R'); $pdf->SetFont('Arial', '', 12); $pdf->Ln(0); $pdf->Cell(0, 0, 'Valledupar, ' . $this->formatFecha($certificado->fecha), 0, 2, 'L'); $pdf->Ln(2); $pdf->Cell(0, 0, 'EL DEPARTAMENTO DE TALENTO HUMANO', 0, 2, 'C'); $pdf->Ln(1); $pdf->Cell(0, 0, utf8_decode('DE LÁCTEOS DEL CESAR S.A.'), 0, 2, 'C'); $pdf->Ln(2); $pdf->SetFont('Arial', 'B'); $pdf->Cell(0, 0, 'CERTIFICA:', 0, 2, 'C'); $pdf->Ln(2); $pdf->SetFont('Arial'); $contratoEmpleado = $empleado->getContrato(); $salario = '.'; if ($certificado->tipo == 2) { $salario = ', devengando un salario básico mensual de $' . number_format($contratoEmpleado->salario) . '.'; } if ($certificado->tipo == 3) { $salario = ', devengando un salario promedio mensual de $' . number_format($contratoEmpleado->salarioPromedio(), 0, '', '.') . '.'; } $labora = 'labora'; $feca_contratacion = "desde el " . $this->formatFecha($contratoEmpleado->fecha_ingreso); if ($contratoEmpleado->getEstado() == 'retirado') { $labora = 'laboró'; $feca_contratacion .= ', hasta el ' . $this->formatFecha($contratoEmpleado->fecha_retiro); } else { $feca_contratacion = ' mediante contrato ' . $contratoEmpleado->getTipo() . ', ' . $feca_contratacion; } $pdf->MultiCell(0, 0.6, utf8_decode('Que el señor(a) ' . strtoupper($empleado->nombres . ' ' . $empleado->apellido1 . ' ' . $empleado->apellido2 . ' ') . 'con cédula de ciudadanía ' . $empleado->cedula . ", {$labora} en esta compañía en el cargo de " . $contratoEmpleado->getCargo()->nombre . ', ' . $feca_contratacion . $salario), 0, 'J', false); $pdf->Ln(2); $pdf->Cell(0, 0, utf8_decode('Esta certificación se expide a solicitud del interesado.'), 0, 2); $pdf->Ln(5); $pdf->Image(realpath(__DIR__ . '/../../../../assets/images/Firma.png'), 8, 19, 7, 'PNG'); $pdf->SetFont('Arial', 'B'); $pdf->Cell(0, 0, 'MAYRA ALEJANDRA CARO DAZA', 0, 2, 'C'); $pdf->Ln(0.5); $pdf->SetFont('Arial'); $pdf->Cell(0, 0, 'Jefe de Talento Humano', 0, 2, 'C'); $pdf->Image(realpath(__DIR__ . '/../../../../assets/images/Pie.JPG'), 1, 25.5, 19, 'JPG'); $pdf->Output($certificado->id . '.pdf', 'I'); return true; }