How to access data in Custom File with "Include common files" disabled?

This public forum is for user-to-user discussions of PHPMaker. Note that this is not support forum.
Post Reply
gopalverma
User
Posts: 1

How to access data in Custom File with "Include common files" disabled?

Post by gopalverma »

Created a new custom file (pdfrender.php) with "Include common files DISABLED", as i do not need headers, footers and menus.
PDF Generation using TCPDF code as below

<?php
namespace PHPMaker2024\demo2024;

require_once "vendor/autoload.php";
require_once "src/constants.php";
require_once "src/config.php";
require_once "src/phpfn.php";
require_once "src/userfn.php";

// // use PHPMaker2024\RNJ\{UserProfile, Language, AdvancedSecurity, Timer, HttpErrorHandler, RouteAttributes};
// use Psr\Http\Message\ServerRequestInterface as Request;
// use Psr\Http\Message\ResponseInterface as Response;
// use Psr\Container\ContainerInterface;
// use DI\Container as Container;
// use DI\ContainerBuilder;
// use Selective\SameSiteCookie\SameSiteCookieConfiguration;
// use Selective\SameSiteCookie\SameSiteCookieMiddleware;
// use Selective\SameSiteCookie\SameSiteSessionMiddleware;
// use Slim\Factory\AppFactory;
// use Slim\Factory\ServerRequestCreatorFactory;
// use Slim\Exception\HttpInternalServerErrorException;
// use Middlewares\Whoops;
// use Dflydev\DotAccessData\Data;

use Doctrine\DBAL\ParameterType;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Query\QueryBuilder;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Container\ContainerInterface;
use Slim\Routing\RouteCollectorProxy;
use Slim\App;
use Closure;




global $RELATIVE_PATH;

if (session_id() == "") session_start(); // Init session data
ob_start(); // Turn on output buffering

 

// create new PDF document
$pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 001');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');

// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 001', PDF_HEADER_STRING, array(0,64,255), array(0,64,128));
$pdf->setFooterData(array(0,64,0), array(0,64,128));

// set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// set some language-dependent strings (optional)
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
    require_once(dirname(__FILE__).'/lang/eng.php');
    $pdf->setLanguageArray($l);
}

// ---------------------------------------------------------

// set default font subsetting mode
$pdf->setFontSubsetting(true);

// Set font
// dejavusans is a UTF-8 Unicode font, if you only need to
// print standard ASCII chars, you can use core fonts like
// helvetica or times to reduce file size.
$pdf->SetFont('dejavusans', '', 14, '', true);

// Add a page
// This method has several options, check the source code documentation for more information.
$pdf->AddPage();

// set text shadow effect
$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));

// Set some content to print
$html = <<<EOD
<h1>Welcome to <a href="http://www.tcpdf.org" style="text-decoration:none;background-color:#CC0000;color:black;">&nbsp;<span style="color:black;">TC</span><span style="color:white;">PDF</span>&nbsp;</a>!</h1>
<i>This is the first example of TCPDF library.</i>
<p>This text is printed using the <i>writeHTMLCell()</i> method but you can also use: <i>Multicell(), writeHTML(), Write(), Cell() and Text()</i>.</p>
<p>Please check the source code documentation and other examples for further information.</p>
<p style="color:#CC0000;">TO IMPROVE AND EXPAND TCPDF I NEED YOUR SUPPORT, PLEASE <a href="http://sourceforge.net/donate/index.php?group_id=128076">MAKE A DONATION!</a></p>
EOD;

// Print text using writeHTMLCell()
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);



$qry ="select CompanyName from customers";

try{
	$row = ExecuteRow($qry);
}
catch (\Exception $e) {
	echo "custom error";
}

// try{
// 	// Open connection
// 	// GLOBALS["Conn"] ??= GetConnection();
	
// 	//Using Global Functions
// 	$conn = Conn();
// 	$resultSet = $conn->executeQuery($qry);
// }
// catch (\Exception $e) {
// 	echo "custom error";
// } 

// ---------------------------------------------------------

// Close and output PDF document
// This method has several options, check the source code documentation for more information.
$pdf->Output('example_001.pdf', 'I');

//============================================================+
// END OF FILE
//============================================================+

?>

pdf creation code is from TCPDF Example
Tried with ExecuteRow but the page is blank.
Tried with Global Connection again the page is blank
But if the data access code is commented, the page is displaying the pdf
link used to execute the page http://localhost/demo2024/pdfrender.php

sir please guide me where i am doing the mistake. (v2024)


arbei
User
Posts: 9384

Post by arbei »

  1. Whenever you see a blank page, you should enable Debug to see the actual error.
  2. Check the source code in index.php and see how it include the common files.
  3. Check the vendor folder and make sure you have included "tecnickcom/tcpdf".
  4. The default font folder of TCPDF is "fonts/", make sure you have copied the folder to your site.

mobhar
User
Posts: 11727

Post by mobhar »

You should enable Include common files if you want to use ExecuteRow global function. You just need to enable No header/footer option for that Custom File from the Generate dialog window.


gopalverma1
User
Posts: 10

Post by gopalverma1 »

arbei wrote:

  1. Whenever you see a blank page, you should enable Debug to see the actual error.
  2. Check the source code in index.php and see how it include the common files.
  3. Check the vendor folder and make sure you have included "tecnickcom/tcpdf".
  4. The default font folder of TCPDF is "fonts/", make sure you have copied the folder to your site.

=> ** NO ERRORS**
=> ** MODIFIED AS IN INDEX PAGE**
=> ** tecnickcom/tcpdf IS AVAILABLE IN VENDOR FOLDER**
=> ** tecnickcom/tcpdf IS font folder AVAILABLE with default fonts**

Modified code as below

<?php
namespace PHPMaker2024\RNJ;

use PHPMaker2024\RNJ\{UserProfile, Language, AdvancedSecurity, Timer, HttpErrorHandler, RouteAttributes};
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Container\ContainerInterface;
use DI\Container as Container;
use DI\ContainerBuilder;
use Selective\SameSiteCookie\SameSiteCookieConfiguration;
use Selective\SameSiteCookie\SameSiteCookieMiddleware;
use Selective\SameSiteCookie\SameSiteSessionMiddleware;
use Slim\Factory\AppFactory;
use Slim\Factory\ServerRequestCreatorFactory;
use Slim\Exception\HttpInternalServerErrorException;
use Middlewares\Whoops;
use Dflydev\DotAccessData\Data;

// Relative path
$RELATIVE_PATH = "";

// Autoload
require_once "vendor/autoload.php";

// Require files
require_once "src/constants.php";
require_once "src/config.php";
require_once "src/phpfn.php";
$ConfigData = new Data($CONFIG); // Ensure that $ConfigData is accessible by Global Codes
require_once "src/userfn.php";

// error_reporting(0); //hide php errors
    // if( ! defined('BASEPATH')) exit('No direct script access allowed');
    // require_once dirname(__FILE__,) . '/tohtml/tcpdf/tcpdf.php';



global $RELATIVE_PATH;

if (session_id() == "") session_start(); // Init session data
ob_start(); // Turn on output buffering

 

// create new PDF document
$pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 001');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');

// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 001', PDF_HEADER_STRING, array(0,64,255), array(0,64,128));
$pdf->setFooterData(array(0,64,0), array(0,64,128));

// set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// set some language-dependent strings (optional)
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
    require_once(dirname(__FILE__).'/lang/eng.php');
    $pdf->setLanguageArray($l);
}

// ---------------------------------------------------------

// set default font subsetting mode
$pdf->setFontSubsetting(true);

// Set font
// dejavusans is a UTF-8 Unicode font, if you only need to
// print standard ASCII chars, you can use core fonts like
// helvetica or times to reduce file size.
$pdf->SetFont('dejavusans', '', 14, '', true);

// Add a page
// This method has several options, check the source code documentation for more information.
$pdf->AddPage();

// set text shadow effect
$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));

// Set some content to print
$html = <<<EOD
<h1>Welcome to <a href="http://www.tcpdf.org" style="text-decoration:none;background-color:#CC0000;color:black;">&nbsp;<span style="color:black;">TC</span><span style="color:white;">PDF</span>&nbsp;</a>!</h1>
<i>This is the first example of TCPDF library.</i>
<p>This text is printed using the <i>writeHTMLCell()</i> method but you can also use: <i>Multicell(), writeHTML(), Write(), Cell() and Text()</i>.</p>
<p>Please check the source code documentation and other examples for further information.</p>
<p style="color:#CC0000;">TO IMPROVE AND EXPAND TCPDF I NEED YOUR SUPPORT, PLEASE <a href="http://sourceforge.net/donate/index.php?group_id=128076">MAKE A DONATION!</a></p>
EOD;

// Print text using writeHTMLCell()
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);



$qry ="select CompanyName from customers";

try{
	$row = ExecuteRow($qry);
}
catch (\Exception $e) {
	echo "custom error";
}

// try{
// 	// Open connection
// 	// GLOBALS["Conn"] ??= GetConnection();
	
// 	//Using Global Functions
// 	$conn = Conn();
// 	$resultSet = $conn->executeQuery($qry);
// }
// catch (\Exception $e) {
// 	echo "custom error";
// } 

// ---------------------------------------------------------

// Close and output PDF document
// This method has several options, check the source code documentation for more information.
ob_end_clean();
$pdf->Output('example_001.pdf', 'I');
?>

the page is displaying with JUNK CHARACTERS.

mobhar wrote:

You should enable Include common files if you want to use ExecuteRow global function. You just need to enable No header/footer option for that Custom File from the Generate dialog window.

Also as per you guidance enabled Include common files & disabled No header/footer from the Generate dialog window.

the page is displaying with JUNK CHARACTERS.


arbei
User
Posts: 9384

Post by arbei »

It is not "JUNK CHARACTERS", it is your PDF file. Note that by default the Output() method sends PDF to the standard output, you better check the source first.


gopalverma1
User
Posts: 10

Post by gopalverma1 »

as per the output options, i tried with

$pdf->Output('example_001.pdf', 'I'); = > displays junk characters
$pdf->Output('example_001.pdf', 'D'); => page downloads but show errors
$pdf->Output('example_001.pdf', 'F'); => fopen(): Remote host file access not supported, file://example_001.pdf
$pdf->Output('example_001.pdf', 'FD'); => fopen(): Remote host file access not supported, file://example_001.pdf
$pdf->Output('example_001.pdf', 'FI'); => fopen(): Remote host file access not supported, file://example_001.pdf
$pdf->Output('example_001.pdf', 'E'); =>Blank page
$pdf->Output('example_001.pdf', 'S'); =>Blank page

arbei
User
Posts: 9384

Post by arbei »

This is not a forum for TCPDF, you may want to post to correct forums. Anyway, don't try your luck, if you want to download, you should use "D", not others. You did not show what error, but you should enable Debug to show the complete stack trace and find out the actual error of your code.


gopalverma1
User
Posts: 10

Post by gopalverma1 »

The Custom file generates the PDF output using TCPDF properly now.

<?php
namespace PHPMaker2024\demo2024;

use PHPMaker2024\demo2024\{UserProfile, Language, AdvancedSecurity, Timer, HttpErrorHandler, RouteAttributes};
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Container\ContainerInterface;
use DI\Container as Container;
use DI\ContainerBuilder;
use Selective\SameSiteCookie\SameSiteCookieConfiguration;
use Selective\SameSiteCookie\SameSiteCookieMiddleware;
use Selective\SameSiteCookie\SameSiteSessionMiddleware;
use Slim\Factory\AppFactory;
use Slim\Factory\ServerRequestCreatorFactory;
use Slim\Exception\HttpInternalServerErrorException;
use Middlewares\Whoops;
use Dflydev\DotAccessData\Data;

// Relative path
$RELATIVE_PATH = "";

// Autoload
require_once "vendor/autoload.php";

// Require files
require_once "src/constants.php";
require_once "src/config.php";
require_once "src/phpfn.php";
$ConfigData = new Data($CONFIG); // Ensure that $ConfigData is accessible by Global Codes
require_once "src/userfn.php";

global $RELATIVE_PATH;

if (session_id() == "") session_start(); // Init session data
ob_start(); // Turn on output buffering

// create new PDF document
$pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 001');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');

// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 001', PDF_HEADER_STRING, array(0,64,255), array(0,64,128));
$pdf->setFooterData(array(0,64,0), array(0,64,128));

// set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// set some language-dependent strings (optional)
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
    require_once(dirname(__FILE__).'/lang/eng.php');
    $pdf->setLanguageArray($l);
}

// ---------------------------------------------------------

// set default font subsetting mode
$pdf->setFontSubsetting(true);

// Set font
// dejavusans is a UTF-8 Unicode font, if you only need to
// print standard ASCII chars, you can use core fonts like
// helvetica or times to reduce file size.
$pdf->SetFont('dejavusans', '', 14, '', true);

// Add a page
// This method has several options, check the source code documentation for more information.
$pdf->AddPage();

// set text shadow effect
$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));

// Set some content to print
$html = <<<EOD
<h1>Welcome to <a href="http://www.tcpdf.org" style="text-decoration:none;background-color:#CC0000;color:black;">&nbsp;<span style="color:black;">TC</span><span style="color:white;">PDF</span>&nbsp;</a>!</h1>
<i>This is the first example of TCPDF library.</i>
<p>This text is printed using the <i>writeHTMLCell()</i> method but you can also use: <i>Multicell(), writeHTML(), Write(), Cell() and Text()</i>.</p>
<p>Please check the source code documentation and other examples for further information.</p>
<p style="color:#CC0000;">TO IMPROVE AND EXPAND TCPDF I NEED YOUR SUPPORT, PLEASE <a href="http://sourceforge.net/donate/index.php?group_id=128076">MAKE A DONATION!</a></p>
EOD;

// Print text using writeHTMLCell()
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);

$qry ="select CategoryName from `categories`";
try{
	$row = ExecuteRow($qry);
    $pdf->writeHTMLCell(0, 0, '', '', $row["CategoryName "], 0, 1, 0, true, '', true);
}
catch (\Exception $e) {
	echo "custom error";
}

// Close and output PDF document
// This method has several options, check the source code documentation for more information.
ob_end_clean();
$pdf->Output('example_001.pdf', 'I');
?>

Thank you for the guidance sir.


Post Reply