Export FAQs
Export FAQs
Q) How to export japanese multibyte characters (??? shown) ?
You need to change font of export for that.
Goto jqgrid_dist.php, Search for line
$pdf->SetFont('helvetica', '', 14);
and replace it with
$pdf->SetFont('cid0jp', '', 14);
For DejavuSans UTF8 font, following these steps:
1. Download the fonts archive (tcpdf_fonts_6_0_099.zip) from `http://sourceforge.net/projects/tcpdf/files/`
2. Extract the fonts in lib/inc/tcpdf/fonts
3. Set font in jqgrid_dist.php
$pdf->SetFont('dejavusans', '', 14, '', true);
For RTL languages text, html renderer must also be used along with rtl font.
$opt["export"]["render_type"] = "html";
In case of missing font, contact me back for updated lib.
Q) How to override default PDF settings ?
You can use on_render_pdf event handler to get TCPDF object, and change settings accordingly. For e.g. to change font,
$e["on_render_pdf"] = array("set_pdf_format", null);
$g->set_events($e);
function set_pdf_format($arr)
{
$pdf = $arr["pdf"];
$data = $arr["data"];
$pdf->SetFont('dejavusans', '', 10);
$pdf->SetLineWidth(0.1);
}
Q) Getting error on PDF export, "TCPDF ERROR: Some data has already been output, can't send PDF file"
There are usually 2 reasons for this.
1) Blank space character at start of grid file (new line etc) 2) Invisible BOM character at start of file
In case #1 will give header already sent error. #2 will push all data as html text.
White spaces can be removed by checking top and end of all included files. To remove invisible BOM character, i would recommend Notepad++ -> Open file -> Encoding menu -> Encode UTF without BOM
Q) How to use custom export method (external-file) ?
You can use on_export event, to do your custom export working. An example is given below
// params are array(<function-name>,<class-object> or <null-if-global-func>,<continue-default-operation>)
$e["on_export"] = array("custom_export", NULL, false);
$g->set_events($e);
// custom on_export callback function. Set all useful data in session for custom export code file
function custom_export($param)
{
$sql = $param["sql"]; // the SQL statement for export
$grid = $param["grid"]; // the complete grid object reference
if ($grid->options["export"]["format"] == "xls")
{
$_SESSION["phpgrid_sql"]=$sql;
$_SESSION["phpgrid_filename"]=$grid->options["export"]["filename"];
$_SESSION["phpgrid_heading"]=$grid->options["export"]["heading"];
$cols_skip = array();
$titles = array();
foreach ($grid->options["colModel"] as $c)
{
if ($c["export"] === false)
$cols_skip[] = $c["name"];
$titles[$c["index"]] = $c["title"];
}
$_SESSION["phpgrid_cols_skip"]=serialize($cols_skip);
$_SESSION["phpgrid_cols_title"]=serialize($titles);
header("Location: my-export.php");
die();
}
}
In that redirected file (my-export.php), you can use all session variable to fetch data from DB and export as desired.
Q) How to customize PDF header and footer?
Goto file 'lib/inc/tcpdf/class.easytable.php', at end of file, there are 2 empty function header() and footer(). You can put image and text there using TCPDF lib sample code: http://www.tcpdf.org/examples/example_003.phps
Q) How to show Logo on exported PDF ?
You can check TCPDF documentation and modify class 'lib/inc/tcpdf/class.easytable.php', go to end of file, Have header function empty, You can put image and text. In similar way, one can put footer.
Also check this forum post.
Q) How to show searched string as heading in PDF ?
$e["on_export"] = array("set_header", null,true);
$g->set_events($e);
function set_header($d)
{
// search params
$search_str = $d["grid"]->strip($_SESSION['jqgrid_filter_request']);
$search_arr = json_decode($search_str,true);
$gopr = $search_arr['groupOp'];
$rule = $search_arr['rules'][0];
if (!empty($rule["data"]))
$d["grid"]->options["export"]["heading"] = $rule["data"];
}
Q) How to can i resolve: Class 'ZipArchive' not found?
On blank export and on checking error_log if you see "PHP Fatal error: Class 'ZipArchive' not found in /home/user/public_html/phpgrid/lib/inc/excel/PHPExcel/Writer/Excel2007.php on line 225"
There are 2 options for fix.
First is it to install zip php extension that is required by phpexcel library.
Other one is to rename 'PHPExcel' folder in
If this path is not found, our system uses older excel exporting library which might work without zip extension.