Skip to content

이미지

TCPDF-Next는 래스터 및 벡터 이미지를 PDF 문서에 임베딩하는 것을 지원합니다. 이미지 하위 시스템은 Graphics 모듈에 있으며 Document 플루언트 API를 통해 접근합니다.

지원되는 형식

형식확장자알파비고
JPEG.jpg, .jpeg아니오베이스라인 및 프로그레시브
PNG.png8비트, 24비트, 32비트 투명도 지원
WebP.webp손실 및 무손실
AVIF.avifAVIF를 지원하는 GD 또는 Imagick 필요
SVG.svg--벡터 — SvgParser를 통해 렌더링
EPS.eps, .ai--PostScript — EpsParser를 통해 렌더링

image()

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->image('/path/to/logo.png', 10, 10, 50, 0);   // 너비=50mm, 자동 높이

시그니처

php
image(
    string $file,             // 파일 경로, URL 또는 @base64 문자열
    float  $x     = '',       // X 위치 ('' = 현재 X)
    float  $y     = '',       // Y 위치 ('' = 현재 Y)
    float  $w     = 0,        // 너비  (0 = 종횡비에서 자동)
    float  $h     = 0,        // 높이 (0 = 종횡비에서 자동)
    string $type  = '',       // 형식 강제: 'JPEG', 'PNG', 'WebP' 등
    mixed  $link  = '',       // URL 또는 내부 링크 식별자
    string $align = '',       // 이미지 후 정렬: T, M, B, N
    bool   $resize    = false,
    int    $dpi       = 300,
    string $palign    = '',   // 셀 내 이미지 정렬: L, C, R
    bool   $fitbox    = false,
    bool   $fitonpage = false
): static

위치 지정 및 스케일링

php
$pdf->image('/path/to/photo.jpg', 10, 60, 100, 80);      // 절대: (10,60)에 100x80mm
$pdf->image('/path/to/banner.png', 10, 10, 190, 0);       // 너비에서 자동 높이
$pdf->image('/path/to/portrait.jpg', 10, 10, 0, 100);     // 높이에서 자동 너비
$pdf->image('/path/to/photo.jpg', 10, 10, 80, 60, fitbox: true);    // 박스에 맞춤
$pdf->image('/path/to/chart.png', 10, 10, 0, 0, fitonpage: true);   // 페이지에 맞춤
  • 절대 위치 — 명시적인 $x, $y 좌표를 제공합니다(기본 단위: mm).
  • 자동 높이/너비 — 한 차원을 0으로 설정하면 종횡비에서 나머지를 계산합니다.
  • 박스에 맞춤 (fitbox: true) — 종횡비를 유지하면서 $w x $h에 맞게 스케일합니다.
  • 페이지에 맞춤 (fitonpage: true) — 이미지가 인쇄 가능 영역을 초과하지 않도록 합니다.

DPI 및 해상도

$dpi 매개변수는 $w$h가 모두 0일 때 픽셀 대 물리적 크기 매핑을 제어합니다:

php
$pdf->image('/path/to/scan.jpg', 10, 10, 0, 0, dpi: 150);  // 페이지에서 더 크게
$pdf->image('/path/to/scan.jpg', 10, 10, 0, 0, dpi: 300);  // 페이지에서 더 작게

문자열 또는 URL에서 이미지

php
$pdf->image('https://example.com/logo.png', 10, 10, 50, 0);           // URL에서
$pdf->image('@' . base64_encode($imageData), 10, 10, 50, 0, 'PNG');   // base64에서

base64 문자열에서 로드할 때는 파서가 형식을 알 수 있도록 $type 매개변수를 제공하십시오.

링크가 있는 이미지

php
$pdf->image('/path/to/logo.png', 10, 10, 40, 0, link: 'https://example.com');

SVG 이미지

imageSvg()는 SVG를 네이티브 PDF 벡터 경로로 렌더링합니다 — 래스터화 없음:

php
imageSvg(string $file, float $x, float $y, float $w, float $h, mixed $link = '', string $align = '', string $palign = '', mixed $border = 0): static
php
$pdf->imageSvg('/path/to/diagram.svg', 10, 150, 180, 100);

EPS / PostScript 이미지

php
imageEps(string $file, float $x, float $y, float $w, float $h, mixed $link = '', bool $useBBox = true, string $align = '', string $palign = '', mixed $border = 0): static
php
$pdf->imageEps('/path/to/illustration.eps', 10, 10, 80, 60);

완전한 예제

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->image('/path/to/logo.png', 10, 10, 50, 0)
    ->image('/path/to/photo.jpg', 10, 60, 100, 80)
    ->imageSvg('/path/to/diagram.svg', 10, 150, 180, 100)
    ->save('output.pdf');

  • PNG 알파 채널은 PDF 출력에서 완전히 보존됩니다.
  • 최상의 인쇄 품질을 위해 300 DPI 이상의 이미지를 사용하십시오.
  • SVG 렌더링은 대부분의 정적 기능을 지원합니다; 애니메이션과 JavaScript는 무시됩니다.
  • 많은 이미지를 임베딩할 때는 메모리 사용량을 제어하기 위해 대형 파일을 미리 리사이즈하는 것을 고려하십시오.

LGPL-3.0-or-later 라이선스로 배포됩니다.