2011-03-30 90 views
7

我正在嘗試生成一個包含寬度爲50毫米,高度爲50毫米的標籤的PDF文件。我設法做到了這一點,並添加了所需的文本和條形碼,但是我的問題是標籤首先打印出窄邊,因此整個頁面需要旋轉90度。TCPDF頁面旋轉

我可以在Adobe Reader中簡單地右擊頁面並選擇順時針旋轉(Shift + Ctrl ++),但我真的需要在代碼中完成。

有誰知道如何做到這一點與TCPDF?我已經嘗試了旋轉功能,但似乎無法讓它工作。任何代碼示例都會有所幫助。

+2

你是否已經在創建頁面上旋轉頁面?見http://www.tcpdf.org/examples/example_060.phps – konsolenfreddy 2011-03-30 10:33:41

+0

@詹姆斯有趣的問題,因爲最近我正在考慮在PDF中自動化我的投資組合,並在每個項目頁面的底部添加一個數字條形碼。搜索BARCODE和PDF我登陸這裏。你的問題是否修復? – Sam 2011-04-16 09:34:03

+1

@Sam最後我不得不使用另一個程序來旋轉頁面。 PDF生成和條形碼渲染工作正常。除了沒有別的選擇,我可能會再次使用TCPDF。 – James 2011-05-20 07:21:04

回答

7

如何在建立頁面時將其設置爲風景?

TCPDF::__construct($orientation = 'L', 
$ unit = 'mm', 
$ format = 'A4', 
$ unicode = true, 
$ encoding = 'UTF-8', 
$ diskcache = false) 

$ orientation(string)page orientation。可能的值是(不區分大小寫):

  • P或縱向(默認)
  • L或景觀
  • ''(空字符串),用於自動定向

http://www.tcpdf.org/doc/classTCPDF.html#a5420ac8b0726a604260780d8f4185fc1

+3

我認爲你是對的,但你應該把'P'改爲'L' – 2011-05-23 21:49:03

+0

哎呀,謝謝! – LawrenceGS 2011-05-26 18:54:22

+0

這是我嘗試過的第一件事,但它不僅僅是我想旋轉的頁面。我希望文本和頁面內容從頁面底部讀取到頂部。 – James 2011-05-27 09:42:13

4

Rotate很奇怪。這些文檔沒有告訴你的是,你必須首先執行StartTransform,然後執行Rotate,然後再執行StopTransform。在您設置X/Y位置後(例如,我使用SetXY初始定位頁面,然後您可以撥打StartTransform),您只能執行StartTransform調用。所以,儘量做到:

$this->pdfinvoice->StartTransform(); 
    $this->pdfinvoice->Rotate(-90); 

然後添加您的內容,然後調用

$this->pdfinvoice->StopTransform(); 

時,即可大功告成。看看這對你有用。

+0

使用你所建議的是我能夠在TCPDF中進行輪換的最接近的,但是由於我完全不瞭解這些函數的工作原理,我得到了各種奇怪的異常。 – James 2011-05-27 09:45:04

+1

我的猜測是,整個座標系移動:你需要相應地調整所有的X/Y位置,這需要一些數學才能正確。不幸的是,在將0,0移動到右上角的位置**這樣做的方法中,似乎並沒有什麼神奇的效果。 – Femi 2011-05-27 13:07:26

+5

$ page_format = array(55,55,'Rotate'=> - 90); $ pdf-> AddPage('P',$ page_format,false,false); //也可以,你可以設置$ pdf-> SetPageUnit(「mm」);萬一.. – YumYumYum 2011-07-20 14:51:07

0

最簡單的選擇是在風景模式'L'上設置頁面,如果這是您所需要的。 否則,如果您需要縱向模式下的頁面,但需要旋轉對象,那麼您可以創建一個XObject模板並將您的內容放在那裏,包括圖形轉換。 查看http://www.tcpdf.org的默認示例以獲取圖形轉換和XObject模板。

5

我與1.5版

$pdf->AddPage(); // Orientation for the first page is defined into configuration file. 

    $pdf->writeHTML("Portrait 1"); 

    $pdf->AddPage('L'); 

    $pdf->writeHTML("Landscape !"); 

    $pdf->AddPage('P'); 

    $pdf->writeHTML("Portrait 2"); 

    $pdf->Output(); 

做什麼,這是運作良好。