我正在尝试生成一个 PDF 文件,其中包含 202 毫米宽、50 毫米高的标签。我已经设法做到这一点并添加了所需的文本和条形码,但我的问题是标签首先打印出窄边,因此整个页面需要旋转 90 度。
我可以通过简单的右键单击页面并选择顺时针旋转(Shift+Ctrl++) 轻松地在 Adobe Reader 中执行此操作,但我确实需要在代码中执行此操作。
有谁知道如何用 TCPDF 做到这一点?我已经尝试过旋转功能,但似乎无法使其正常工作。任何代码示例都会有所帮助。
我用 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();
这运作良好。
在构建页面时将其设置为横向怎么样?
TCPDF::__construct($orientation = 'L',
$ unit = 'mm',
$ format = 'A4',
$ unicode = true,
$ encoding = 'UTF-8',
$ diskcache = false)
$orientation (string) 页面方向。可能的值是(不区分大小写):
http://www.tcpdf.org/doc/classTCPPDF.html#a5420ac8b0726a604260780d8f4185fc1
Rotate
很奇怪。文档没有告诉你的是你必须先做 aStartTransform
然后做 a Rotate
,然后再做 a StopTransform
。您只能在StartTransform
以某种方式设置 X/Y 位置后进行调用(例如,我使用SetXY
最初定位页面,然后您可以调用StartTransform
)。所以尝试这样做:
$this->pdfinvoice->StartTransform();
$this->pdfinvoice->Rotate(-90);
然后添加您的内容,然后调用
$this->pdfinvoice->StopTransform();
当你完成时。看看它是如何为你工作的。
Landscape最简单的方法是:首先转到您的 tcpdf.config 文件,然后转到该行
* Page orientation (P=portrait, L=landscape).
*/
define ('PDF_PAGE_ORIENTATION', 'L','P');
只需将“P”更改为“L”保存并运行它。
构造函数中的format
参数具有广泛的可选参数,包括Rotate
并支持任意页面width
和height
- 示例:
// page A4 rotated clockwise 90 deg.
$pdf = new TCPDF('L', 'pt', ['format' => 'A4', 'Rotate' => 90]);
// page with custom size rotated clockwise 270 deg.
$pdf = new TCPDF('L', 'pt', ['format' => [$width, $height], 'Rotate' => 270]);
文档在这里。
如果您需要,最简单的选项是将页面设置为横向模式“L”。否则,如果您需要一个纵向模式但带有旋转对象的页面,那么您可以创建一个 XObject 模板并将您的内容放在那里,包括图形转换。查看http://www.tcpdf.org上的默认示例以获取图形转换和 XObject 模板。
这是一篇旧帖子,但如果有人遇到此问题,我建议您先尝试页面的横向模式。
这对我有用:
这是设置A4横向的代码:
$pdf->AddPage('L', 'A4');
访问 https://tcpdf.org/examples/example_028/了解更多信息。