Skip to content

설정

TCPDF-Next는 별도의 설정 없이 바로 작동하는 합리적인 기본값을 제공합니다. 모든 설정은 문서 생성 시 또는 이후 플루언트 세터를 통해 재정의할 수 있습니다.

문서 기본값

Document::create()를 호출하면 별도로 지정하지 않는 한 다음 기본값이 적용됩니다:

설정기본값설명
페이지 크기PageSize::A4ISO A4 (210 x 297 mm)
방향Orientation::Portrait세로 모드
단위Unit::Millimeter모든 측정값을 밀리미터로
왼쪽 여백15 mm왼쪽 페이지 여백
상단 여백27 mm상단 페이지 여백
오른쪽 여백15 mm오른쪽 페이지 여백
하단 여백25 mm하단 페이지 여백
자동 페이지 나눔true하단 여백 근처에서 자동 페이지 나눔
폰트Helvetica, 12 pt기본 폰트 패밀리 및 크기
php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Core\Enums\PageSize;
use Yeeefang\TcpdfNext\Core\Enums\Orientation;
use Yeeefang\TcpdfNext\Core\Enums\Unit;

$doc = Document::create(
    pageSize: PageSize::Letter,
    orientation: Orientation::Landscape,
    unit: Unit::Inch,
);

여백

여백은 전체 또는 페이지별로 설정할 수 있습니다:

php
use Yeeefang\TcpdfNext\Core\ValueObjects\Margin;

// 전체 여백
$doc->setMargins(new Margin(
    left: 20,
    top: 30,
    right: 20,
    bottom: 25,
));

// 특정 페이지에 대한 재정의
$doc->addPage(
    margin: new Margin(left: 10, top: 10, right: 10, bottom: 10),
);

폰트 경로 및 디렉터리

TCPDF-Next는 설정 가능한 디렉터리 세트에서 폰트 파일을 찾습니다. 내장 폰트(Helvetica, Courier, Times, Symbol, ZapfDingbats)는 항상 사용할 수 있습니다. 커스텀 또는 유니코드 폰트의 경우 추가 경로를 등록하세요:

php
use Yeeefang\TcpdfNext\Core\Config\FontConfig;

$doc->configureFonts(function (FontConfig $config): void {
    // .ttf / .otf 파일이 포함된 디렉터리 추가
    $config->addDirectory('/path/to/my/fonts');

    // 패밀리 별칭으로 단일 폰트 파일 추가
    $config->addFont('/path/to/MyFont-Regular.ttf', alias: 'MyFont');
});

TIP

폰트 파일은 기본적으로 서브셋으로 임베드되어 PDF 출력을 컴팩트하게 유지합니다. 필요한 경우 폰트별로 전체 임베딩을 활성화할 수 있습니다.

암호화 설정

PDF 암호화는 EncryptionConfig 값 객체를 통해 설정됩니다:

php
use Yeeefang\TcpdfNext\Core\Config\EncryptionConfig;
use Yeeefang\TcpdfNext\Core\Enums\EncryptionLevel;
use Yeeefang\TcpdfNext\Core\Enums\Permission;

$doc->setEncryption(new EncryptionConfig(
    level: EncryptionLevel::AES256,
    userPassword: 'reader-pass',
    ownerPassword: 'admin-pass',
    permissions: [
        Permission::Print,
        Permission::Copy,
    ],
));
레벨설명
EncryptionLevel::RC4_40레거시 40비트 RC4 (권장하지 않음)
EncryptionLevel::RC4_128128비트 RC4
EncryptionLevel::AES128128비트 AES
EncryptionLevel::AES256256비트 AES (권장)

태그된 PDF 설정

태그된(접근 가능한) PDF는 스크린 리더 지원을 개선하며 PDF/UA에서 필수입니다. 전체적으로 태깅을 활성화하세요:

php
$doc->enableTaggedPdf();

// 접근성을 위해 문서 언어를 선택적으로 설정
$doc->setLanguage('en');

태그된 PDF 모드가 활성화되면 텍스트 및 테이블 API에 의해 구조적 태그(<P>, <H1>-<H6>, <Table> 등)가 자동으로 생성됩니다.

결정적 모드

기본적으로 PDF에는 타임스탬프와 고유 식별자가 포함되어 매번 출력이 고유합니다. 결정적 모드는 이를 제거하여 동일한 입력에 대해 바이트 단위로 동일한 출력을 생성합니다 — 스냅샷 테스트 및 재현 가능한 빌드에 유용합니다:

php
$doc->enableDeterministicMode();

WARNING

결정적 모드는 생성/수정 날짜와 고유 파일 식별자를 제거합니다. 이러한 메타데이터 필드가 필요한 문서에는 사용하지 마세요.

전체 설정 예제

아래는 모든 주요 설정 옵션을 함께 보여주는 단일 코드 스니펫입니다:

php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Core\Enums\PageSize;
use Yeeefang\TcpdfNext\Core\Enums\Orientation;
use Yeeefang\TcpdfNext\Core\Enums\Unit;
use Yeeefang\TcpdfNext\Core\Enums\EncryptionLevel;
use Yeeefang\TcpdfNext\Core\Enums\Permission;
use Yeeefang\TcpdfNext\Core\Config\EncryptionConfig;
use Yeeefang\TcpdfNext\Core\Config\FontConfig;
use Yeeefang\TcpdfNext\Core\ValueObjects\Margin;

$doc = Document::create(
    pageSize: PageSize::A4,
    orientation: Orientation::Portrait,
    unit: Unit::Millimeter,
);

// 여백
$doc->setMargins(new Margin(
    left: 15,
    top: 27,
    right: 15,
    bottom: 25,
));

// 폰트
$doc->configureFonts(function (FontConfig $config): void {
    $config->addDirectory('/path/to/fonts');
});

// 암호화
$doc->setEncryption(new EncryptionConfig(
    level: EncryptionLevel::AES256,
    userPassword: '',
    ownerPassword: 'secret',
    permissions: [Permission::Print],
));

// 접근성
$doc->enableTaggedPdf();
$doc->setLanguage('en');

// 결정적 출력 (테스트용)
// $doc->enableDeterministicMode();

// 메타데이터
$doc->setTitle('Company Report');
$doc->setAuthor('TCPDF-Next');
$doc->setSubject('Monthly Summary');
$doc->setKeywords('report, finance, 2026');

$doc->addPage();
$doc->cell(text: 'Hello, configured world!');
$doc->save('/tmp/configured.pdf');

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