Skip to content

이미지

플루언트 image()imageSvg() 메서드를 사용하여 래스터 및 벡터 이미지를 PDF에 임베딩합니다. 위치와 크기를 완전히 제어할 수 있습니다.

전체 예제

php
<?php

declare(strict_types=1);

require __DIR__ . '/vendor/autoload.php';

use TcpdfNext\Document;

Document::create()
    ->setTitle('Image Examples')
    ->addPage()

    // -- 제목 -----------------------------------------------------------
    ->setFont('helvetica', style: 'B', size: 18)
    ->cell(0, 12, 'Embedding Images', newLine: true)

    // -- 1. JPEG (플로우 모드) --------------------------------------------
    ->setFont('helvetica', style: 'B', size: 13)
    ->cell(0, 10, '1. JPEG -- auto height', newLine: true)
    ->image(
        file:   __DIR__ . '/assets/photo.jpg',
        x:      null,                         // 현재 X
        y:      null,                         // 현재 Y
        width:  60,                           // 60 mm 너비
        height: null,                         // 자동 (비율 유지)
    )

    // -- 2. 투명도가 있는 PNG ---------------------------------------
    ->setFont('helvetica', style: 'B', size: 13)
    ->cell(0, 10, '2. PNG with alpha channel', newLine: true)
    ->image(
        file:   __DIR__ . '/assets/logo.png',
        x:      null,
        y:      null,
        width:  40,
        height: null,
    )

    // -- 3. SVG 벡터 그래픽 ------------------------------------------
    ->setFont('helvetica', style: 'B', size: 13)
    ->cell(0, 10, '3. SVG vector image', newLine: true)
    ->imageSvg(
        file:   __DIR__ . '/assets/diagram.svg',
        x:      null,
        y:      null,
        width:  80,
        height: 50,
    )

    // -- 4. 절대 위치 지정 ----------------------------------------
    ->image(
        file:   __DIR__ . '/assets/badge.png',
        x:      150,                          // 왼쪽 가장자리에서 150 mm
        y:      10,                           // 상단에서 10 mm
        width:  30,
        height: 30,
    )

    ->save(__DIR__ . '/images.pdf');

echo 'PDF created.' . PHP_EOL;

위치 지정 모드

플로우 모드

xynull을 전달합니다. 이미지가 현재 커서 위치에 배치되고 커서가 아래로 이동합니다:

php
->image(file: 'photo.jpg', x: null, y: null, width: 60, height: null)

절대 모드

명시적 좌표를 전달합니다. 커서가 이동하지 않습니다 -- 로고, 배지, 워터마크 오버레이에 적합합니다:

php
->image(file: 'badge.png', x: 150, y: 10, width: 30, height: 30)

스케일링 동작

widthheight결과
60null고정 너비, 자동 높이 (종횡비 유지)
null40자동 너비, 고정 높이 (종횡비 유지)
6040정확한 치수 (늘어날 수 있음)
nullnull96 DPI 기준으로 mm로 변환된 원본 픽셀 크기

지원 포맷

포맷비고
JPEG베이스라인 및 프로그레시브; CMYK 색상 공간 지원
PNG전체 알파 투명도가 있는 8비트, 24비트, 32비트
SVGimageSvg()를 통해 -- 경로, 텍스트, 기본 CSS 렌더링

이미지 주변 텍스트 흐름

이미지에 절대 위치 지정을 사용하고 multiCell() 너비를 제한하여 겹침을 방지합니다:

php
Document::create()
    ->setTitle('Text Wrap')
    ->addPage()
    ->image(file: 'photo.jpg', x: 140, y: 30, width: 50, height: null)
    ->setFont('helvetica', size: 11)
    ->setXY(10, 30)
    ->multiCell(width: 125, height: 6, text: 'Your paragraph text here...')
    ->save('text-wrap.pdf');

출력

전체 예제는 JPEG 사진, 투명 PNG 로고, SVG 다이어그램, 오른쪽 상단에 절대 위치 지정된 배지가 있는 한 페이지를 생성합니다.

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