fpdf将pdf高度和方向设置为auto

时间:2014-11-26 05:55:00

标签: php fpdf

我正在使用fpdf向pdf添加文本。我可以添加文本,但pdf页面的大小始终为A4。 如果上传的pdf方向是横向,它将变为肖像。 我想使用相同的widht和上传的pdf的高度和方向来写入pdf。

$fullPathToFile = $target_path;

    class custom_PDF extends FPDI {

    var $_tplIdx;
    var $file;

    function Header() {
        if (is_null($this->_tplIdx)) {
        // THIS IS WHERE YOU GET THE NUMBER OF PAGES
        $this->numPages = $this->setSourceFile($this->file);
        $this->_tplIdx = $this->importPage(1);
        }
        $this->useTemplate($this->_tplIdx, 0, 0, 200);
    }

    function Footer() {

    }

    function setFile($param) {
        $this->file = $param;
    }

    }
    $pdf234 = new custom_PDF();
    $pdf234->setFile($fullPathToFile);
    $pdf234->AddPage();
    $pdf234->SetAutoPageBreak(TRUE, 0);
    $pdf234->SetY(280);
    $pdf234->SetFont("helvetica", "B", 8);
    $pdf234->SetTextColor(0, 0, 0);


    $utf8text = $current_user->user_login . "(" . str_ireplace('_', ' ', $current_user->roles[0]) . ")," . get_bloginfo('name') . "," . get_bloginfo('url') . "" . date("d M Y,h:i:s a");
    $pdf234->Write(5, $utf8text, get_bloginfo('url'));
    if ($pdf234->numPages > 1) {
    for ($i = 2; $i <= $pdf234->numPages; $i++) {
        //$pdf->endPage();
        $pdf234->_tplIdx = $pdf234->importPage($i);
        $pdf234->AddPage();
          $pdf234->SetAutoPageBreak(TRUE, 0);
        $pdf234->SetY(280);

        $pdf234->Write(5, $utf8text, get_bloginfo('url'));
    }
    }
    $pdf234->Output($line['name'], 'D');
    die();

我也试过以下代码:

$specs = $pdf234->getTemplateSize($pdf234->_tplIdx);
 $pdf234->AddPage('L',$specs); 

我的pdf现在处于横向模式但内容不占用整个页面。内容与左上角对齐。

2 个答案:

答案 0 :(得分:0)

您可以在构造函数中设置尺寸:

FPDF([string orientation [, string unit [, mixed size]]])

示例

$pagesize = array(107, 199);
$pdf234 = new FPDF( 'P', 'mm', $pagesize );

或与:

AddPage([string orientation [, mixed size]]);

示例:

$pdf234->AddPage('P','A5');

<强>描述

向文档添加新页面。

<强> 参数

<强>取向

页面方向。可能的值是(不区分大小写):

  • P或肖像
  • L或Landscape

默认值是传递给构造函数的值。

<强>大小

页面大小。它可以是以下值之一(不区分大小写):

  • A3
  • A4
  • A5
  • 法律

或包含宽度和高度的数组(以用户单位表示)。

默认值是传递给构造函数的值。

答案 1 :(得分:0)

我找到了一种方法来检测上传的pdf维度。我使用getTemplateSize()函数来获取宽度和高度来创建布局。 这是我的代码:

    $fullPathToFile = $target_path;

    class custom_PDF extends AlphaPDF {

    var $_tplIdx;
    var $file;

    function Header() {
        if (is_null($this->_tplIdx)) {
        // THIS IS WHERE YOU GET THE NUMBER OF PAGES
        $this->numPages = $this->setSourceFile($this->file);
        $this->_tplIdx = $this->importPage(1);
        }
        $this->useTemplate($this->_tplIdx, 0, 0);
    }

    function Footer() {

    }

    function setFile($param) {
        $this->file = $param;
    }

    function RotatedText($x, $y, $txt, $angle) {
        //Text rotated around its origin
        $this->Rotate($angle, $x, $y);
        $this->Text($x, $y, $txt);
        $this->Rotate(0);
    }

    }

    $pdf234 = new custom_PDF();
    $pdf2345 = new custom_PDF(); //detect size of uploaded pdf
    $pdf234->setFile($fullPathToFile);
    $pdf2345->setFile($fullPathToFile);
    $pdf2345->AddPage();
    $specs = $pdf2345->getTemplateSize($pdf2345->_tplIdx);
    if ($specs['w'] > $specs['h']) {
    $pdf234->AddPage('L', array($specs['w'], $specs['h']));
    } else {
    $pdf234->AddPage();
    }
    $pdf234->SetAutoPageBreak(TRUE, 0);
    $pdf234->SetAlpha(0.7);
    $pdf234->SetFont('courier', '', 10);
    $pdf234->SetTextColor(0, 0, 0);
    $pdf234->SetDisplayMode('fullpage');
    $utf8text1 = $current_user->user_login . "(" . str_ireplace('_', ' ', $current_user->roles[0]) . ")," . get_bloginfo('name') . "," . get_bloginfo('url');
    $utf8text2 = date("d M Y,h:i:s a") . "," . $current_user->data->user_email;
    $pdf234->SetFont('helvetica', '', 13);
    $pdf234->SetTextColor(128, 128, 128);
    if ($specs['w'] > $specs['h']) {

    $pdf234->RotatedText(($specs['w'] / 2) - 50, ($specs['h'] / 2) + 45, $utf8text1, 40);
    $pdf234->RotatedText(($specs['w'] / 2) - 40, ($specs['h'] / 2) + 45, $utf8text2, 40);
    } else {
    $pdf234->RotatedText(45, 180, $utf8text1, 40);
    $pdf234->RotatedText(55, 180, $utf8text2, 40);
    }
    if ($pdf234->numPages > 1) {
    for ($i = 2; $i <= $pdf234->numPages; $i++) {
        //$pdf->endPage();
        $pdf234->_tplIdx = $pdf234->importPage($i);
        $pdf234->AddPage();
        $pdf234->SetAutoPageBreak(TRUE, 0);
        $pdf234->SetY(280);
        $pdf234->SetAlpha(0.7);
        $pdf234->SetFont('helvetica', '', 13);
        $pdf234->SetTextColor(128, 128, 128);
        $pdf234->RotatedText(45, 180, $utf8text1, 40);
        $pdf234->RotatedText(55, 180, $utf8text2, 40);
    }
    }
    $pdf234->Output($line['name'], 'D');
    die();