sgcPDF 기능 표

sgcPDF가 수행하는 모든 기능을 작업별로 모았습니다. 모든 기능은 sgcPDF_*.pas 유닛에 Object Pascal로 구현되어 있으며 전체 소스 코드와 함께 제공됩니다. 이 페이지의 코드 샘플은 sgcPDF 소스로 컴파일하여 실행한 것입니다.

생성

13 개 기능

편집

6 개 기능

추출

5 개 기능

양식

3 개 기능

보안 및 서명

6 개 기능

생성

기능세부 정보
페이지A4, Letter 또는 사용자 지정 크기와 방향을 자유롭게 설정하고 페이지를 회전할 수 있습니다.
텍스트14개 표준 PDF 폰트와 색상 텍스트, 캔버스와 HTML 렌더러를 통한 단락 줄바꿈 지원.
임베디드 폰트TrueType, OpenType(TrueType/CFF 아용라인), TrueType 컴렉션을 자동으로 임베딩하고 서브셋화하며, 유니코드 ToUnicode 맵으로 텍스트 복사와 검색이 가능합니다.
복잡한 문자 체계커닝과 리가처, GSUB을 통한 아랍어 연결형, 우에서좌 텍스트를 위한 유니코드 양방향 알고리즘.
CJK 텍스트임베디드 TrueType 폰트 및 TrueType 컴렉션을 통한 중국어·일본어·한국어 텍스트.
이미지JPEG, 알파 채널 PNG, BMP, TIFF(CCITT 팩스 이미지 포함), 소프트 마스크 지원.
벡터 그래픽선, 사각형, 원, 타원, 베지어 곱선, 다각형, 점선 패턴, 선 끝단과 연결부, 투명도, 그라데이션.
표페이지를 걸쳐 이어지는 머리글, 테두리, 셀 여백, 색상을 갖춘 표.
바코드Code 128, Code 39, EAN-13, EAN-8, UPC-A, ITF, Codabar, GS1-128, QR 코드, DataMatrix(ECC200), PDF417을 벡터로 그립니다.
주석 및 링크텍스트 노트, 하이라이트, URL 및 페이지 링크, 스탬프, 자유 텍스트 주석.
북마크 및 레이어중첩 북마크(개요)와 독자가 표시/숨김을 전환할 수 있는 선택적 콘텐츠 그룹(레이어).
HTML → PDFTsgcPDFHTMLRenderer: 제목, 단락, 인라인 CSS 스타일, 목록, 표, 이미지, 링크, 페이지 내림, 머리글/바닥글, 페이지 번호.
캔버스 및 EMF → PDFTsgcPDFCanvas는 그리기 호출을 PDF 콘텐츠로 기록하며, EMF 메타파일은 PDF 벡터로 재생되어 기존 보고서·차트 코드가 PDF 출력을 생성합니다.

HTML → PDF

procedure HTMLToPDF(const APDFFile: string);
var
  oHTML: TsgcPDFHTMLRenderer;
begin
  oHTML := TsgcPDFHTMLRenderer.Create(nil);
  try
    oHTML.PageWidth := 595;
    oHTML.PageHeight := 842;
    oHTML.FooterText := 'Page {page} of {pages}';
    oHTML.HTMLToPDFFile(
      '<html><head><style>h1 { color: #003366 }</style></head><body>' +
      '<h1>Invoice 2026-001</h1>' +
      '<table><tr><th>Item</th><th>Amount</th></tr>' +
      '<tr><td>Consulting</td><td>299.00</td></tr></table>' +
      '</body></html>', APDFFile);
  finally
    oHTML.Free;
  end;
end;

편집

기능세부 정보
워터마크 및 스탬프폰트, 크기, 회전, 색상, 투명도를 지정하는 텍스트 워터마크를 한 페이지 또는 모든 페이지에 적용합니다.
머리글, 바닥글, 페이지 번호Page %d of %d와 같은 형식의 머리글/바닥글 텍스트와 페이지 번호.
페이지 작업문서 병합, 분할, 페이지 범위 추출, 삽입, 삭제, 회전, 재배치.
증분 저장변경 사항은 원본 파일에 새 리비전으로 추가되므로 이전 디지털 서명이 그대로 유효합니다.
컴팩트 출력파일 크기를 줄이는 객체 스트림과 참조 스트림, 중복/미사용 객체 제거와 이미지 다운샘플링을 수행하는 TsgcPDFOptimizer.
대용량 파일오프셋은 모두 64비트이며 객체는 스트림에서 필요시 로드되므로 2GB를 넘는 파일도 열고 저장할 수 있습니다.

렌더링 및 뷰어

기능세부 정보
VCL 뷰어TsgcPDFViewerControl: 스크롤, 확대/축소, 페이지 탐색, 텍스트 선택·복사, 강조 검색, 양식 필드 입력, 링크 탐색, 인쇄, 그리고 TsgcPDFThumbnailView와 TsgcPDFOutlineView.
FireMonkey 뷰어TsgcPDFViewerFMX는 Windows, macOS, iOS, Android에서 FMX 캔버스를 통해 그립니다.
서버용 래스터 렌더러TsgcPDFRendererRaster는 Windows와 Linux에서 GDI 없이 페이지를 픽셀 또는 PNG로 렌더링하는 순수 Pascal 래스터라이저입니다.
GDI 렌더러 및 내보내기Windows에서 비트맵 또는 디바이스 컨텍스트로 렌더링하고, TsgcPDFExporter로 페이지와 축소판을 BMP, PNG, JPEG로 내보냅니다.
그래픽 모델DeviceGray, DeviceRGB, DeviceCMYK, 인덱스, ICCBased, Lab 색상 공간, 축방향/방사형 그라데이션, 타일 패턴, 소프트 마스크, 블렌딩 투명도, 양식 XObject.
폰트임베디드된 TrueType, CFF, OpenType, Type 1 폰트 프로그램은 아용라인에서 렌더링되며, 표준 인코딩과 Identity-H CID 폰트를 지원합니다.
이미지 디코더Flate, LZW, ASCII85, ASCIIHex, RunLength, JPEG(기본/프로그레시브, CMYK), JPEG 2000, CCITT 그룹 3·4, JBIG2.

추출

기능세부 정보
텍스트페이지 또는 문서 전체 텍스트, 임베디드 및 CID 폰트의 유니코드 매핑 포함.
텍스트 위치TsgcPDFTextExtractor는 각 텍스트 조각의 X, Y, 폰트 이름, 크기를 반환합니다.
검색페이지 또는 문서 내에서 텍스트를 찾습니다.
이미지TsgcPDFImageExtractor는 인라인 이미지와 양식 XObject 내 이미지를 포함하여 페이지의 이미지를 열거하고 PNG, JPEG, BMP로 디코딩합니다.
메타데이터 및 첨부 파일문서 정보, XMP 메타데이터, 북마크, 레이어, 첨부 파일.

양식

기능세부 정보
양식 생성외관 스트림을 갖춘 텍스트 필드, 찴박자, 라디오 버튼, 콤보 박스, 목록 상자, 푸쉬 버튼.
입력 및 평면화코드나 뷰어에서 필드 값을 설정한 다음 양식을 정적 페이지 콘텐츠로 평면화합니다.
FDF/XFDF양식 데이터를 FDF 및 XFDF로 가져오거나 내보냅니다.

보안 및 서명

기능세부 정보
암호 암호화RC4 40비트/128비트, AES-128, AES-256(리비전 5, 6), 사용자/소유자 암호와 권한 플래그 지원. 암호화된 파일은 로드 시 복호화됩니다.
인증서 암호화하나 이상의 수신자 인증서(adbe.pkcs7.s4, adbe.pkcs7.s5)를 위한 공개키 암호화.
디지털 서명PFX 인증서로 서명, 표시/비표시 서명 필드, SHA-256/384/512, RFC 3161 타임스탬프 및 문서 타임스탬프.
sgcSign을 통한 PAdESTsgcPDFPAdESSigner는 sgcSign(PEM, PFX, PKCS#11, Windows 인증서 저장소, 클라우드 HSM)의 키 공급자를 사용하여 DSS 검증 데이터가 포함된 B-B, B-T, B-LT, B-LTA 레벨의 ETSI.CAdES.detached 서명을 생성합니다. sgcSign은 별도로 라이선스됩니다.
검증TsgcPDFSignatureVerifier는 각 서명의 무결성, 바이트 범위 커버리지, 서명자 인증서, 인증서 체인을 확인합니다.
편집삭제TsgcPDFRedactor는 글리프 수준에서 텍스트, 이미지 픽셀, 벡터 경로, 주석을 영역 또는 텍스트 일치에 따라 제거하고 덮어쓰기를 추가하며 메타데이터를 제거할 수 있습니다. 제거된 텍스트는 결과물에서 추출될 수 없습니다.

AES-256 암호 암호화

procedure CreateEncryptedPDF(const AFileName: string);
var
  oPDF: TsgcPDFDocument;
begin
  oPDF := TsgcPDFDocument.Create;
  try
    oPDF.AddPage(595, 842).DrawText('Secret', 50, 780, sfHelveticaBold, 24);
    // user password opens the file, owner password grants full rights
    oPDF.SetEncryption(emAES_256, 'user123', 'owner456');
    oPDF.SaveToFile(AFileName);
  finally
    oPDF.Free;
  end;
end;

PFX 인증서로 서명

procedure SignPDF(const AInput, AOutput: string);
var
  oSigner: TsgcPDFSignatureHandler;
begin
  oSigner := TsgcPDFSignatureHandler.Create;
  try
    oSigner.LoadCertificateFromPFX('signer.pfx', 'test123');
    oSigner.Reason := 'Document approval';
    oSigner.Location := 'Barcelona';
    oSigner.HashAlgorithm := shaSHA256;
    // visible signature field on page 1: Left, Bottom, Right, Top
    oSigner.SetField('Signature1', 0, 50, 50, 250, 100);
    oSigner.SignDocument(AInput, AOutput);
  finally
    oSigner.Free;
  end;
end;

sgcSign 브리지를 통한 PAdES

procedure SignPAdES(const AInput, AOutput: string);
var
  oKey: TsgcPEMKeyProvider;
  oSigner: TsgcPDFPAdESSigner;
begin
  oKey := TsgcPEMKeyProvider.Create(nil);
  oSigner := TsgcPDFPAdESSigner.Create(nil);
  try
    // any sgcSign key provider: PEM, PFX, PKCS#11, Windows store, cloud HSM
    oKey.LoadFromFile('signer.pem', 'signer.key');
    oSigner.KeyProvider := oKey;
    // paBB, paBT (timestamp), paBLT and paBLTA (long term validation)
    oSigner.Level := paBB;
    // signature field and appearance through the sgcPDF handler
    oSigner.Handler.SetField('Signature1', 0, 350, 50, 550, 110);
    oSigner.Handler.SignerName := 'John Smith';
    oSigner.Handler.Reason := 'Approved';
    oSigner.SignPDFFile(AInput, AOutput);
    oSigner.KeyProvider := nil;
  finally
    oSigner.Free;
    oKey.Free;
  end;
end;

이름과 영역 편집삭제

procedure RedactFile(const AInput, AOutput: string);
var
  oRedactor: TsgcPDFRedactor;
  vOptions: TsgcPDFRedactionOptions;
begin
  oRedactor := TsgcPDFRedactor.Create;
  try
    // every occurrence of a text, on all pages
    oRedactor.AddText('John Smith');
    // an area of page 0: left, bottom, right, top in points
    oRedactor.AddArea(0, 50, 500, 250, 650);
    vOptions := oRedactor.Options;
    vOptions.OverlayText := 'REDACTED';
    vOptions.RemoveMetadata := True;
    oRedactor.Options := vOptions;
    oRedactor.Apply(AInput, AOutput);
  finally
    oRedactor.Free;
  end;
end;

보관 및 접근성

기능세부 정보
PDF/A레벨 a/b의 PDF/A-1, PDF/A-2, PDF/A-3 출력, XMP 메타데이터, 출력 의도, 임베디드 폰트 포함.
검증기TsgcPDFAValidator는 선택된 PDF/A 레벨에 따라 파일을 검사하고 오류와 경고를 보고합니다.
태그 PDFDocument, Part, Sect, H1~H6, P, L, LI, Table, TR, TH, TD, Figure를 포함한 구조 트리와 대체 텍스트, 마크 콘텐츠, 역할 맵, 언어, MarkInfo.
PDF/UA-1PDF/A-2a 또는 PDF/A-3a와 함께 접근 가능한 출력을 제공하며, 검증기에서 PDF/UA-1 검사를 수행합니다.
첨부 파일MIME 유형, 날짜, PDF/A-3 연관 파일 관계를 갖춘 첵부 파일.
Factur-X 및 ZUGFeRDMinimum, Basic WL, Basic, EN 16931, Extended, XRechnung 프로파일을 위한 Factur-X XMP 확장 스키마로 인보이스 XML을 첨부하고 PDF/A-3b로 저장합니다.

PDF/A-3b로 작성한 Factur-X 인보이스

procedure CreateFacturX(const AInvoiceXML, AFileName: string);
var
  oPDF: TsgcPDFDocument;
  oXML: TMemoryStream;
  vXML: TBytes;
  vFont: Integer;
begin
  oPDF := TsgcPDFDocument.Create;
  oXML := TMemoryStream.Create;
  try
    // the invoice XML (CII) is created by your application
    oXML.LoadFromFile(AInvoiceXML);
    SetLength(vXML, oXML.Size);
    Move(oXML.Memory^, vXML[0], oXML.Size);
    oPDF.Info.Title := 'Invoice 2026-001';
    // PDF/A requires embedded fonts
    vFont := oPDF.AddTrueTypeFont('Arial', False, False);
    oPDF.AddPage(595, 842).DrawTextTT('Invoice 2026-001', 50, 780, vFont, 18);
    // embeds factur-x.xml, adds the Factur-X XMP schema, saves as PDF/A-3b
    oPDF.Attachments.AddFacturX(vXML, fxpEN16931);
    oPDF.SaveToFile(AFileName);
  finally
    oXML.Free;
    oPDF.Free;
  end;
end;

PDF/A 검증

procedure ValidatePDFA(const AFileName: string);
var
  oParser: TsgcPDFParser;
  oValidator: TsgcPDFAValidator;
  i: Integer;
begin
  oParser := TsgcPDFParser.Create;
  oValidator := TsgcPDFAValidator.Create(paA3b);
  try
    oParser.LoadFromFile(AFileName);
    oParser.Parse;
    if oValidator.Validate(oParser) then
      WriteLn('PDF/A-3b: no errors')
    else
      for i := 0 to oValidator.Errors.Count - 1 do
        WriteLn('Error: ', oValidator.Errors[i]);
  finally
    oValidator.Free;
    oParser.Free;
  end;
end;
최고의 가성비: All-Access모든 eSeGeCe 제품과 프리미엄 지원이 포함되어 연 €1,059부터 이용할 수 있어요.
All-Access 가격 보기

sgcPDF로 개발하기

체험판을 요청하고 Delphi 또는 C++ Builder 앱에 PDF 기능을 추가해 보세요.