2011-03-30 139 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(); 

做什么,这是运作良好。