Skip to content

API 對應表

本頁面提供 TCPDF 方法呼叫到 TCPDF-Next 流暢 API 對應的完整對照。遷移現有程式碼時,可將此頁面作為參考。

文件設定

TCPDF 方法TCPDF-Next 對應
new TCPDF($orientation, $unit, $format)PdfDocument::create()->setOrientation(...)->setPageFormat(...)
SetCreator($creator)->setCreator($creator)
SetAuthor($author)->setAuthor($author)
SetTitle($title)->setTitle($title)
SetSubject($subject)->setSubject($subject)
SetKeywords($keywords)->setKeywords([...])
SetMargins($left, $top, $right)->setMargins(new Margins($left, $right, $top, $bottom))
SetCellMargins($left, $top, $right, $bottom)TextBlock::create()->setPadding(...)
SetAutoPageBreak($auto, $margin)->setAutoPageBreak($auto, bottomMargin: $margin)
setLanguageArray($lang)->setLocale($locale)
setFontSubsetting($enable)->getFontManager()->setSubsetting($enable)
SetDefaultMonospacedFont($font)$renderer->setDefaultMonoFont($font)
SetDisplayMode($zoom, $layout)->setViewerPreferences(zoom: $zoom, layout: $layout)
setImageScale($scale)不需要(使用 DPI 為基準的尺寸)
setHeaderFont($font)透過頁首回呼的字型設定
setFooterFont($font)透過頁尾回呼的字型設定
SetHeaderMargin($margin)->setMargins(new Margins(..., header: $margin))
SetFooterMargin($margin)->setMargins(new Margins(..., footer: $margin))
setPrintHeader($enable)省略 onPageHeader() 回呼
setPrintFooter($enable)省略 onPageFooter() 回呼

頁面管理

TCPDF 方法TCPDF-Next 對應
AddPage($orientation, $format)$pdf->addPage($format, $orientation)
endPage()新增下一頁時自動結束
getPage()$pdf->getCurrentPageNumber()
setPage($page)$pdf->getPage($pageNumber)
getNumPages()$pdf->getPageCount()
deletePage($page)$pdf->removePage($pageNumber)
movePage($fromPage, $toPage)$pdf->movePage($from, $to)
copyPage($page)$pdf->duplicatePage($pageNumber)
lastPage()$pdf->getPage($pdf->getPageCount())
getPageWidth()$page->getWidth()
getPageHeight()$page->getHeight()
SetXY($x, $y)於各元素上設定位置:->setPosition($x, $y)
GetX() / GetY()$page->getCursorX() / $page->getCursorY()
SetX($x) / SetY($y)$page->setCursor($x, $y)
getBreakMargin()$page->getBottomMargin()

字型

TCPDF 方法TCPDF-Next 對應
SetFont($family, $style, $size)$page->setFont($family, size: $size, style: FontStyle::BOLD)
SetFontSize($size)$page->setFont(..., size: $size)
addTTFfont($fontfile)$pdf->getFontManager()->registerFont($path, $name)
getFontFamilyName()$page->getCurrentFont()->getFamily()
getFontSize()$page->getCurrentFont()->getSize()
getFontSizePt()$page->getCurrentFont()->getSizeInPoints()
isCharDefined($char)$font->hasGlyph($char)
GetStringWidth($string)$font->measureText($string, $size)->getWidth()
GetCharWidth($char)$font->getGlyphWidth($char, $size)
getNumLines($text, $width)$font->calculateLines($text, $width, $size)

文字輸出

TCPDF 方法TCPDF-Next 對應
Cell($w, $h, $txt, $border, $ln, $align)$page->addText($txt)->setSize($w, $h)->setAlignment(...)
MultiCell($w, $h, $txt, $border, $align)$page->addParagraph($txt)->setWidth($w)->setAlignment(...)
Write($h, $txt, $link)$page->addText($txt)->setLineHeight($h)->setLink($link)
writeHTML($html)$renderer->writeHtml($html)
writeHTMLCell($w, $h, $x, $y, $html)$renderer->writeHtml($html, position: [$x, $y], width: $w)
Text($x, $y, $txt)$page->addText($txt)->setPosition($x, $y)
Ln($h)$page->advanceCursor($h)
SetTextColor($r, $g, $b)->setColor(Color::rgb($r, $g, $b))
SetTextColorArray($color)->setColor(Color::fromArray($color))

圖片

TCPDF 方法TCPDF-Next 對應
Image($file, $x, $y, $w, $h, $type)$page->addImage($file)->setPosition($x,$y)->setSize($w,$h)
ImageEps($file, $x, $y, $w, $h)$page->addImage($file)->setPosition($x,$y)->setSize($w,$h)
ImageSVG($file, $x, $y, $w, $h)$page->addImage($file)->setPosition($x,$y)->setSize($w,$h)
setImageBuffer($image, $data)$page->addImage($binaryData, format: $fmt)
getImageBuffer($image)不適用(串流架構)
setJPEGQuality($quality)ImagePolicy::create()->setJpegQuality($quality)

繪圖與圖形

TCPDF 方法TCPDF-Next 對應
Line($x1, $y1, $x2, $y2)$canvas->drawLine($x1, $y1, $x2, $y2)->stroke()
Rect($x, $y, $w, $h, $style)$canvas->drawRect($x, $y, $w, $h)->fill()->stroke()
RoundedRect($x, $y, $w, $h, $r)$canvas->drawRoundedRect($x, $y, $w, $h, $r)
Circle($x, $y, $r)$canvas->drawCircle($x, $y, $r)
Ellipse($x, $y, $rx, $ry)$canvas->drawEllipse($x, $y, $rx, $ry)
Curve($x0, $y0, $x1, $y1, $x2, $y2, $x3, $y3)$canvas->moveTo($x0,$y0)->curveTo($x1,$y1,$x2,$y2,$x3,$y3)
Polygon($points)$canvas->drawPolygon($points)
RegularPolygon($x, $y, $r, $sides)$canvas->drawRegularPolygon($x, $y, $r, $sides)
Arrow($x0, $y0, $x1, $y1)$canvas->drawArrow($x0, $y0, $x1, $y1)
SetDrawColor($r, $g, $b)$canvas->setStrokeColor(Color::rgb($r, $g, $b))
SetFillColor($r, $g, $b)$canvas->setFillColor(Color::rgb($r, $g, $b))
SetLineWidth($width)$canvas->setLineWidth($width)
SetLineStyle($style)$canvas->setLineStyle(LineStyle::from($style))
SetAlpha($alpha, $blend)$canvas->setOpacity($alpha)->setBlendMode($blend)

變換

TCPDF 方法TCPDF-Next 對應
StartTransform()$canvas->saveState()
StopTransform()$canvas->restoreState()
Translate($tx, $ty)$canvas->translate($tx, $ty)
Rotate($angle, $x, $y)$canvas->rotate($angle, $x, $y)
Scale($sx, $sy, $x, $y)$canvas->scale($sx, $sy, $x, $y)
MirrorH($x)$canvas->scale(-1, 1, $x, 0)
MirrorV($y)$canvas->scale(1, -1, 0, $y)
Skew($xAngle, $yAngle)$canvas->skew($xAngle, $yAngle)

連結與書籤

TCPDF 方法TCPDF-Next 對應
SetLink($link, $y, $page)$pdf->createInternalLink($page, $y)
AddLink()$pdf->createLink()
Link($x, $y, $w, $h, $link)$page->addLink($url)->setRect($x, $y, $w, $h)
Annotation($x, $y, $w, $h, $text)$page->addAnnotation($text)->setRect($x, $y, $w, $h)
Bookmark($txt, $level)$pdf->addBookmark($txt, level: $level)

條碼

TCPDF 方法TCPDF-Next 對應
write1DBarcode($code, $type, ...)$page->addBarcode(BarcodeFactory::$type($code))->setPosition(...)
write2DBarcode($code, 'QRCODE', ...)$page->addBarcode(BarcodeFactory::qrCode($code))->setPosition(...)
write2DBarcode($code, 'DATAMATRIX', ...)$page->addBarcode(BarcodeFactory::dataMatrix($code))->setPosition(...)
write2DBarcode($code, 'PDF417', ...)$page->addBarcode(BarcodeFactory::pdf417($code))->setPosition(...)

加密與安全

TCPDF 方法TCPDF-Next 對應
SetProtection($perms, $user_pass, $owner_pass, $mode)$pdf->setEncryption()->setPermissions(...)->setUserPassword(...)->apply()
setSignature($cert, $key, $pass, $extracerts)$signer = new PdfSigner($pdf); $signer->setCertificate(...)
setSignatureAppearance($x, $y, $w, $h)$signer->setSignatureField(new SignatureField(...))

TIP

TCPDF 的 setSignature() 僅建立基礎 PKCS#7 簽章。TCPDF-Next 支援完整的 PAdES B-B 至 B-LTA,含時間戳記整合與 DSS。詳見 PAdES B-LTA

輸出

TCPDF 方法TCPDF-Next 對應
Output($name, 'F')$pdf->save($path)
Output($name, 'D')框架回應搭配 Content-Disposition: attachment
Output($name, 'I')框架回應搭配 Content-Disposition: inline
Output($name, 'S')$pdf->toString()
Output($name, 'FI')$pdf->save($path) + 內嵌回應
Output($name, 'FD')$pdf->save($path) + 下載回應
Output($name, 'E')base64_encode($pdf->toString())

PDF/A 與中繼資料

TCPDF 方法TCPDF-Next 對應
setPDFVersion($version)固定為 PDF 2.0(不可設定)
不可用->setPdfALevel(PdfALevel::PDF_A_4)
不可用->setPdfALevel(PdfALevel::PDF_A_4F)
setExtraXMP($xmp)$pdf->getMetadata()->setXmpProperty(...)

表格產生

TCPDF 沒有原生表格 API,大多數專案使用 HTML 表格或手動 Cell/MultiCell 呼叫。TCPDF-Next 提供原生 Table API:

php
// TCPDF(遷移前):手動 Cell 組合表格
$pdf->SetFont('helvetica', 'B', 10);
$pdf->Cell(60, 7, 'Item', 1, 0, 'L');
$pdf->Cell(20, 7, 'Qty', 1, 0, 'C');
$pdf->Cell(30, 7, 'Price', 1, 1, 'R');

// TCPDF-Next(遷移後):流暢 Table API
use YeeeFang\TcpdfNext\Text\Table;
use YeeeFang\TcpdfNext\Text\Alignment;

$table = Table::create()
    ->setPosition(15, 50)
    ->setWidth(110)
    ->addColumn('Item', width: 60)
    ->addColumn('Qty', width: 20, alignment: Alignment::CENTER)
    ->addColumn('Price', width: 30, alignment: Alignment::RIGHT)
    ->setHeaderStyle(font: 'Helvetica', size: 10, style: FontStyle::BOLD)
    ->setBodyStyle(font: 'Helvetica', size: 10)
    ->setBorder(true);

$table->addRow(['Widget A', '5', '$50.00']);
$page->addTable($table);

無直接對應的方法

以下 TCPDF 方法在 TCPDF-Next 中沒有直接對應,因為它們涉及 TCPDF 內部狀態管理或以不同方式處理的功能:

TCPDF 方法備註
setRTL($enable)透過 Unicode BiDi 演算法自動處理
setTempPath($path)透過 PdfDocument::create()->setTempDir(...) 設定
setCellHeightRatio($ratio)在文字區塊中使用明確的行高
setListIndentWidth($width)在列表上使用 CSS padding-left
setOpenCell($isopen)不適用(不同的儲存格模型)
pixelsToUnits($px)Units::pixelsToMm($px, $dpi)
unhtmlentities($text)使用 htmlspecialchars_decode()(PHP 內建)

延伸閱讀

以 LGPL-3.0-or-later 授權釋出。