当前位置: 首页 > 知识库问答 >
问题:

TCPDF在本地工作,但不在线

向实
2023-03-14

我正在使用PHP*TCPDF/FPDI类动态生成PDF。。

虽然本地发展(WAMP/localhost)...

现在我已经把东西上传到了直播服务器上。。我在同一个文件上只得到一张空白页。。使用相同的目录结构。。

但是,在实时环境中进行测试时。。它不起作用?

只是一个空白页,没有错误...等等。

这是我目前使用的代码。。

(我试图在构造函数和超文本标记语言输出中添加UTF-8编码...??

代码:

$live = false;

$targetID = 122;
$targetName = "Name";
$targetClient = "Client Name";

$targetAddress = "address";
$targetCity = "city";
$targetState = "State";
$targetZip = "40202";
$targetPhone = "xxx-555-1212";

$fileCreator = "xxxxx123";  
$fileAuthor = "xxx";
$fileTitle = "Title";
$fileSubject = "Ssubject";

if($live){
$targetLogo = "/path/to/logo/images/targetLogo.jpg";
$sourcePDF = "/path/to/pdf/targetPDF.pdf";
}else{
$targetLogo = "images/targetLogo.jpg";
$sourcePDF = "targetPDF.pdf";
}
$saveAsName = "DYNAMIC_BRANDING.pdf";

//client specific variables
$clientName_color = '#FF0000';
$memberName_color = '#000000';
$clientAddress_color = '#000000';


//------------------[end project vars]---------------------//



// just require TCPDF instead of FPDF
define('FPDF_FONTPATH', 'tcpdf/fonts/');
//include FPDI & TCPDF class library file(s)


if($live){
//ini_set('display_errors', '0');
//error_reporting(E_ALL | E_STRICT);
//live
require('/path/to/tcpdf.php');  
require('/path/to/fpdi.php');  //make sure to include the _TPL file in directory or it throws error.

}else{
ini_set('display_errors', '0');
error_reporting(E_ALL | E_STRICT);
//local file path (WAMP server)
require('tcpdf/tcpdf.php'); //<-- order matters here
require('fpdi/fpdi.php');   //<-- order matters here
}


//Page width in PT: 595.275590551
//Page height in PT: 841.88976378

//Page width in MM (default): 210
//Page height in MMK (default): 297

//$measurementUnits = 'mm'; //[mm or pt] // not needed, used for measurement checking

// initiate FPDI
//http://www.tcpdf.org/doc/code/classTCPDF.html#a134232ae3ad1ec186ed45046f94b7755
//$pdf = new FPDI();
//$pdf = new FPDI('P', 'pt', 'A4');
//$pdf = new FPDI('P', 'mm', 'A4'); //default   
$pdf = new FPDI('P', 'mm', 'A4', true, 'UTF-8', false); //default

//mm to px converter: http://www.endmemo.com/sconvert/millimeterpixel.php
//pt to px converter: http://www.endmemo.com/sconvert/pixelpoint.php
//good for finding values when using image placement (pixel to xxx conversion

$pdf->SetAutoPageBreak(TRUE, 0);  //added to remove HUGE bottom margin

//add project meta data/vars
// set document information
$pdf->SetCreator($fileCreator);
$pdf->SetAuthor($fileAuthor);
$pdf->SetTitle($fileTitle);
$pdf->SetSubject($fileSubject); // displays where?
$pdf->SetKeywords('XXX, XXX, Meeting, 2014, etc'); // meta-tags? meta-data?


// add a page
$pdf->AddPage();
// set the source file
$pdf->setSourceFile($sourcePDF);
// import page 1
$tplIdx = $pdf->importPage(1);
// use the imported page and place it at point 10,10 with a width of 210mm (width of A4)
$pdf->useTemplate($tplIdx, -1, -1, 210, 297); //-1 to off set shadow test //units:mm
//$pdf->useTemplate($tplIdx, -1, -1,0,0); 


//add 'footer/branding' data at bottom

//position table at bottom
$pdf->SetXY(12, 265);
//set table font
$pdf->SetFont('Arial', "", 9, true);
//$pdf->SetFont('Helvetica', '', 9, true);
//set table color
$pdf->SetTextColor(0, 0, 0); //black

//table html
//add css for easier formatting/styling of overlay content
$html ='<!-- EXAMPLE OF CSS STYLE -->
<style>
#overlay{
    width:523mm;
    padding:0;
    border:0;       
}

.clientName{
    text-align:left;
    color:'.$clientName_color.';
    font-size: 10.5pt;
    font-weight:bold;
    width:223;
}

.clientLogo{
    margin-left:auto;
    margin-right:auto;
    padding:0;
    width:100;
 }

 .memberName{
    text-align:right;
    font-weight:bold;
    width:200;
    color:'.$memberName_color.';
 }

 .clientAddress{
    //font-weight:bold;
    text-align:right;
    width:200;
    color:'.$clientAddress_color.';
 }

 .clientCityState{
    //font-weight:bold;
    text-align:right;
    width:200;
    color:'.$clientAddress_color.';
 }

 .clientPhone{
    //font-weight:bold;
    text-align:right;
    width:200;
    color:'.$clientAddress_color.';
 }
</style>
<table cellspacing="0" cellpadding="0" border="0" width="523">
<tr>
    <td rowspan="6" class="clientName">'.$targetClient.'</td>   
    <td rowspan="6" class="clientLogo"><center><img src="'.$targetLogo.'" height="80" width="90"></center></td>    
    <td class="memberName">'.$targetName.'</td>          
</tr>
<tr>
    <td class="clientAddress">'.$targetAddress.'</td>
</tr>
<tr>
    <td class="clientCityState">'.$targetCity.', '.$targetState.'. '.$targetZip.'</td>      
</tr>
<tr>
    <td class="clientPhone">'.$targetPhone.'</td>      
</tr>
</table>';

//echo($html);
//render out/output the HTML table to pdf overlay (table)
$pdf->writeHTML($html, true, false, true, false, '');

//add page number/count
//position table at bottom
$pdf->SetXY(12, 285);
//set table font
$pdf->SetFont('Helvetica', '', 9);
//set table color
$pdf->SetTextColor(0, 0, 0); //black
$pdf->Write(10, 'Page: '.$pdf->getAliasNumPage().'/'.$pdf->getAliasNbPages(),'', false,'L',true,0, false, false,0,0,'');
//$pdf->Cell(0, 10, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');

//output
$pdf->Output($saveAsName, 'I');

只是一个空白/空的白色页面每次测试活...

我错过了什么或做错了什么?

共有3个答案

汝宏伯
2023-03-14

放置TCPDF输出文件时,请确保从服务器的根目录开始。要这样做,请获取信息。在输出文件所在的位置运行php。打开信息。然后向下滚动,它会显示php文件的完整路径。将路径用作输出位置。。。

我的tcpdf上有这个问题,它解决了这个问题。

司徒志
2023-03-14

固定的:

有几件事需要记住:

1.)在开始输出之前,不要有任何空白或空格

2.)确保您的FPDI目录中有文件:fpdf_tpl.php。.

(第二个似乎是我一开始的失败):)

相化
2023-03-14

我也有这个问题。为我修正的是添加

while( ob_get_level() ) {
    ob_end_clean();
}

略高于$pdf-

 类似资料:
  • IIS可能会搞砸它?我倾向于认为IIS对于和)有不同的进程,因此,我在app.post上引用的套接字与我在()中加入用户是不同的。 在Azure/IIS中使用socket.io房间时有什么提示吗?谢了!

  • 我正在使用Amazon Linux AMI在EC2 AWS上运行以下脚本 从今天起,由于EC2上没有任何更改或新安装,脚本在昨天之前一直工作时停止工作。 本地计算机上的相同脚本仍然有效。 相反,在EC2上会出现以下错误: (节点:12636)UnhandledPromiseRejectionWarning:错误:导航失败,因为浏览器已断开连接!在cdpsession.lifecyclewatche

  • 问题内容: 我已经进行了永久搜索,无法为我的问题提供确切的答案。就是这样。我有一个看起来像这样的JSON文件(我去了jsonlint进行验证,它说的很好): 我使用jQuery解析并使用此函数放置在html页面上: 它完美地工作!现在是我的问题,JSON文件将不在本地托管,并且实际上将托管在单独的域中。所以我修改了我的代码如下(经过阅读),希望它能正常工作: 通过添加“回调”行,我停止出现“无法加

  • 我使用devise gem with rails进行身份验证,我的应用程序在本地运行良好,但是在heroku上部署时无法访问device视图。 检查日志时出现以下错误: ←[app[web.1]:←[0mDevis处理e::SessionsController#新作为超文本标记语言 ←[app[web.1]:←[0mDevis处理e::SessionsController#新作为超文本标记语言 ←

  • 有人有使用PHPWord的经验吗?我使用Composer安装了它,就像我对许多其他模块所做的一样,但是当我运行“基本用法”示例时,什么都没有发生。(autoloader.php工作正常)。 如果我更改

  • 代码: 知道是什么导致了这个问题吗。可能与VPC或安全组有关?并给出了思考和建议。谢了。