sgcPDF 기능 표
sgcPDF가 수행하는 모든 기능을 작업별로 모았습니다. 모든 기능은 sgcPDF_*.pas 유닛에 Object Pascal로 구현되어 있으며 전체 소스 코드와 함께 제공됩니다. 이 페이지의 코드 샘플은 sgcPDF 소스로 컴파일하여 실행한 것입니다.
sgcPDF가 수행하는 모든 기능을 작업별로 모았습니다. 모든 기능은 sgcPDF_*.pas 유닛에 Object Pascal로 구현되어 있으며 전체 소스 코드와 함께 제공됩니다. 이 페이지의 코드 샘플은 sgcPDF 소스로 컴파일하여 실행한 것입니다.
| 기능 | 세부 정보 |
|---|---|
| 페이지 | 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을 벡터로 그립니다. TsgcPDFBarcodeControl(VCL)과 TsgcPDFBarcodeFMX(FireMonkey) 컨트롤은 폼에 바코드를 표시하고, PNG 또는 SVG로 저장하며, Symbol.DrawToPDF로 PDF 페이지에 그립니다. |
| 주석 및 링크 | 스티커 노트, 자유 텍스트, 하이라이트, 밑줄, 취소선, 선과 화살표, 사각형과 원, 자유 곡선 잉크와 스탬프, 그리고 URL 및 페이지 링크. 모양 스트림이 생성되므로 주석이 Adobe Acrobat, 브라우저 및 기타 뷰어에 표시됩니다. |
| 댓글 답글 | 모든 주석에 답글을 달아 스레드형 토론을 만들 수 있으며, 각 답글은 고유한 작성자, 날짜, 내용을 가집니다. |
| 북마크 및 레이어 | 중첩 북마크(개요)와 독자가 표시/숨김을 전환할 수 있는 선택적 콘텐츠 그룹(레이어). |
| HTML → PDF | TsgcPDFHTMLRenderer: 제목, 단락, 인라인 CSS 스타일, 목록, 표, 이미지, 링크, 페이지 내림, 머리글/바닥글, 페이지 번호. |
| 캔버스 및 EMF → PDF | TsgcPDFCanvas는 그리기 호출을 PDF 콘텐츠로 기록하며, EMF 메타파일은 PDF 벡터로 재생되어 기존 보고서·차트 코드가 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와 같은 형식의 머리글/바닥글 텍스트와 페이지 번호. |
| 페이지 작업 | 문서 병합, 분할, 페이지 범위 추출, 삽입, 삭제, 회전, 재배치. |
| 증분 저장 | 변경 사항은 원본 파일에 새 리비전으로 추가되므로 이전 디지털 서명이 그대로 유효합니다. |
| 기존 주석 | 기존 PDF의 주석은 작성자, 날짜, 답글, 지오메트리를 가진 형식화된 객체로 로드됩니다. 코드나 뷰어에서 편집한 뒤 저장하거나, SaveIncremental을 호출하여 원본 바이트를 건드리지 않고 변경 사항을 추가할 수 있으므로 기존 서명이 그대로 유지됩니다. |
| 컴팩트 출력 | 파일 크기를 줄이는 객체 스트림과 참조 스트림, 중복/미사용 객체 제거와 이미지 다운샘플링을 수행하는 TsgcPDFOptimizer. |
| 대용량 파일 | 오프셋은 모두 64비트이며 객체는 스트림에서 필요시 로드되므로 2GB를 넘는 파일도 열고 저장할 수 있습니다. |
| 기능 | 세부 정보 |
|---|---|
| VCL 뷰어 | TsgcPDFViewerControl: 스크롤, 확대/축소, 페이지 탐색, 텍스트 선택·복사, 강조 검색, 양식 필드 입력, 링크 탐색, 인쇄, 그리고 TsgcPDFThumbnailView와 TsgcPDFOutlineView. |
| FireMonkey 뷰어 | TsgcPDFViewerFMX는 Windows, macOS, iOS, Android에서 FMX 캔버스를 통해 그립니다. 영역 확대(SelectionMode psmZoom, OnMarqueeZoom)는 마우스로 끌거나 길게 누른 뒤 끌어서 지정한 사각형으로 확대합니다. |
| .NET 뷰어 | WinForms용 TsgcPDFViewerControl, WPF용 TsgcWpfPDFViewer, Avalonia용 TsgcAvaloniaPDFViewer이며, 각각 축소판 보기와 개요 보기를 갖추고 있습니다. WPF와 Avalonia 뷰어는 확대 모드, Ctrl+휠과 영역 확대(Avalonia는 핀치 포함), 텍스트 선택과 복사, 강조 표시 검색, 링크와 개요 탐색, 페이지 박스, 측정 도구를 지원합니다. 주석과 양식 필드는 표시하지만 편집하지는 않습니다. |
| 대화형 주석 | Delphi VCL과 FMX, C++Builder, .NET WinForms에서 최종 사용자가 마우스로 주석을 만듭니다. 스티커 노트, 자유 텍스트, 텍스트 위의 하이라이트, 밑줄, 취소선, 선과 화살표, 사각형과 타원, 자유 곡선 잉크와 스탬프입니다. 주석을 선택, 이동, 크기 조정, 편집, 삭제할 수 있습니다. 노트를 클릭하면 작성자, 날짜, 내용, 답글이 표시되는 팝업이 열리며 여기서 편집하고 답글을 달 수 있습니다. 뷰어는 OnAnnotationClick, OnAnnotationAdd, OnAnnotationChange, OnAnnotationDelete, OnAnnotationSelect 이벤트를 발생시킵니다. |
| 댓글 패널 | TsgcPDFCommentsView(VCL)와 TsgcPDFCommentsViewFMX는 모든 주석을 페이지별로 작성자, 날짜, 내용, 스레드형 답글과 함께 나열하며 뷰어와 동기화됩니다. |
| 서버용 래스터 렌더러 | 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을 통한 PAdES | TsgcPDFPAdESSigner는 sgcSign(PEM, PFX, PKCS#11, Windows 인증서 저장소, 클라우드 HSM)의 키 공급자를 사용하여 DSS 검증 데이터가 포함된 B-B, B-T, B-LT, B-LTA 레벨의 ETSI.CAdES.detached 서명을 생성합니다. sgcSign은 별도로 라이선스됩니다. |
| 검증 | TsgcPDFSignatureVerifier는 각 서명의 무결성, 바이트 범위 커버리지, 서명자 인증서, 인증서 체인을 확인합니다. |
| 가림 처리 | TsgcPDFRedactor는 글리프 수준에서 텍스트, 이미지 픽셀, 벡터 경로, 주석을 영역 또는 텍스트 일치에 따라 제거하고 덮어쓰기를 추가하며 메타데이터를 제거할 수 있습니다. 제거된 텍스트는 결과물에서 추출될 수 없습니다. |
| 텍스트 윤곽선 변환 | TsgcPDFTextOutliner는 모든 글리프를 위치, 색상, 크기가 같은 벡터 경로로 바꿉니다. 대상은 페이지 콘텐츠, 폼 XObject, 타일링 패턴, Type3 폰트, 주석 모양입니다. 그런 다음 사용되지 않는 폰트를 제거합니다. 파일은 인쇄 결과와 모양이 같지만 더 이상 폰트가 필요 없으므로, 인쇄소, RIP, 임베딩을 금지하는 폰트 라이선스에 적합합니다. 포함되지 않은 폰트의 텍스트는 뷰어가 사용할 대체 시스템 폰트로 윤곽선 처리되고, 보이지 않는 텍스트는 제거됩니다. 텍스트는 더 이상 선택하거나 검색할 수 없습니다. |
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;
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;
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;
procedure OutlineText(const AInput, AOutput: string);
var
oOutliner: TsgcPDFTextOutliner;
begin
oOutliner := TsgcPDFTextOutliner.Create;
try
// every glyph becomes a vector path, unused fonts are removed
oOutliner.Apply(AInput, AOutput);
WriteLn('Glyphs outlined: ', oOutliner.ConvertedGlyphs);
WriteLn('Fonts removed: ', oOutliner.RemovedFonts);
finally
oOutliner.Free;
end;
end;
| 기능 | 세부 정보 |
|---|---|
| PDF/A | 레벨 a/b의 PDF/A-1, PDF/A-2, PDF/A-3 출력과 PDF 2.0 파일로서의 PDF/A-4 및 PDF/A-4f(paA4, paA4f), XMP 메타데이터, 출력 의도, 임베디드 폰트 포함. Delphi와 .NET에서 지원합니다. |
| 검증기 | TsgcPDFAValidator는 선택된 PDF/A 레벨(PDF/A-4와 PDF/UA-2 포함)에 따라 파일을 검사하고 오류와 경고를 보고합니다. PDF/A-4, PDF/A-4f, PDF/UA-2 출력은 veraPDF로 검증합니다. |
| 태그 PDF | Document, Part, Sect, H1~H6, P, L, LI, Table, TR, TH, TD, Figure를 포함한 구조 트리와 대체 텍스트, 마크 콘텐츠, 역할 맵, 언어, MarkInfo. |
| PDF/UA-1 | PDF/A-2a 또는 PDF/A-3a와 함께 접근 가능한 출력을 제공하며, 검증기에서 PDF/UA-1 검사를 수행합니다. |
| PDF/UA-2 | PDFUAPart를 puaPart2로 설정하면 PDF/UA-2(ISO 14289-2) 출력을 얻으며, 단독으로도 PDF/A-4와 함께도 사용할 수 있고 PDF 2.0 구조 네임스페이스와 구조 대상을 사용합니다. Delphi와 .NET에서 지원하며 sgcReports 내보내기와 sgcUIPDF 브리지도 포함됩니다. |
| 첨부 파일 | MIME 유형, 날짜, PDF/A-3 및 PDF/A-4f 연관 파일 관계를 갖춘 첵부 파일. |
| Factur-X 및 ZUGFeRD | Minimum, Basic WL, Basic, EN 16931, Extended, XRechnung 프로파일을 위한 Factur-X XMP 확장 스키마로 인보이스 XML을 첨부하고 PDF/A-3b로 저장합니다. |
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;
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;
procedure CreateArchive(const AFileName: string);
var
oPDF: TsgcPDFDocument;
oPage: TsgcPDFPage;
vFont: Integer;
begin
oPDF := TsgcPDFDocument.Create;
try
oPDF.Info.Title := 'Annual report';
oPDF.Tagged := True;
oPDF.StructureTree.Lang := 'en-US';
// PDF/A-4 and PDF/UA-2 in the same PDF 2.0 file
oPDF.SetPDFALevel(paA4);
oPDF.PDFUA := True;
oPDF.PDFUAPart := puaPart2;
vFont := oPDF.AddTrueTypeFont('Arial', False, False);
oPage := oPDF.AddPage(595, 842);
oPage.Tagging.BeginElement(stH1);
oPage.DrawTextTT('Annual report', 50, 770, vFont, 20);
oPage.Tagging.EndElement;
oPage.Tagging.BeginElement(stP);
oPage.DrawTextTT('Archived and accessible.', 50, 740, vFont, 11);
oPage.Tagging.EndElement;
oPDF.SaveToFile(AFileName);
finally
oPDF.Free;
end;
end;
파일을 검증하려면 paA4로 TsgcPDFAValidator를 만들고 PDFUA와 PDFUAPart 속성을 설정하세요. PDF/A-4 및 PDF/UA-2 도움말 항목을 참고하세요.
Delphi와 .NET에서 같은 이름의 동일한 프리프레스 API를 제공합니다.
| 기능 | 세부 정보 |
|---|---|
| 페이지 박스 | TsgcPDFPage의 MediaBox, CropBox, BleedBox, TrimBox, ArtBox와 Rotate, UserUnit이며, 파일을 불러오고 저장할 때 유지됩니다. |
| 임포지션 | AddPageAsForm은 다른 문서의 페이지를 페이지 박스나 사각형으로 잘라 폼 XObject로 만들고, DrawForm, DrawFormInRect, DrawFormMatrix가 이를 시트에 배치합니다. PDFImposition 데모가 이를 사용해 시트 레이아웃을 만듭니다. |
| 인쇄 마크 | DrawCropMarks, DrawBleedMarks, DrawRegistrationMark, DrawColorBar, DrawSlugText. |
| 별색 | Separation, Registration, DeviceN 색 공간과 칠하기 및 선에 대한 겹쳐찍기 그래픽 상태. |
| 겹쳐찍기 미리 보기 | 렌더러의 OverprintPreview는 화면과 래스터 출력에서 겹쳐찍기를 시뮬레이션합니다. |
| PDF/X 출력 의도 | SetOutputIntent는 선택적 ICC 프로파일과 함께 GTS_PDFX 출력 의도를 쓰고, PDFXVersion은 PDF/X 버전 키를 설정합니다. |
| 뷰어 도구 | VCL 및 WinForms 뷰어와 WPF 및 Avalonia 뷰어의 페이지 박스 표시, 페이지 박스 힌트, 측정 도구. |
using esegece.sgcPDF;
using static esegece.sgcPDF.sgcPDF_Types;
using (TsgcPDFDocument oSource = new TsgcPDFDocument())
using (TsgcPDFDocument oSheet = new TsgcPDFDocument())
{
oSource.LoadFromFile("flyer.pdf");
// two A4 pages side by side, placed by their trim box, with crop marks
TsgcPDFPage oPage = oSheet.AddPage(1270, 922);
for (int i = 0; i < 2; i++)
{
int vForm = oSheet.AddPageAsForm(oSource, i, TsgcPDFPageBox.ppbTrimBox);
TsgcPDFRect oTrim = sgcPDFRect(40 + i * 595, 40, 635 + i * 595, 882);
oPage.DrawFormInRect(vForm, oTrim, true);
oPage.DrawCropMarks(oTrim);
}
oSheet.SaveToFile("sheet.pdf");
}
라이브러리를 완전 관리형 C#으로 포팅한 것으로, Delphi 유닛마다 하나의 C# 파일로 구성되며 동일한 클래스 이름(TsgcPDFDocument, TsgcPDFPage, TsgcPDFEditor 등)을 사용합니다. NuGet 패키지로 제공되며, 각 패키지는 .Community 접미사가 붙은 무료 Community 버전으로도 제공됩니다.
| 패키지 | 세부 정보 |
|---|---|
esegece.sgcPDF | 라이브러리: 문서 모델, 파서, writer, 편집기, 렌더링 코어, 폰트, 이미지, 폼, 서명, 암호화, 텍스트 및 이미지 추출, 프리프레스, PDF/A(PDF/A-4 포함), PDF/UA-2. .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9, .NET 10를 지원합니다. |
esegece.sgcPDF.WinForms | GDI 렌더러와 캔버스, EMF 재생, 페이지의 이미지 내보내기, TsgcPDFViewerControl(대화형 주석과 댓글 답글 포함), TsgcPDFThumbnailView, TsgcPDFBarcodeControl, TsgcPDFOutlineView 컨트롤, 페이지 박스와 측정 도구 포함. Windows에서 .NET Framework 4.7.2와 .NET 8을 지원합니다. |
esegece.sgcPDF.Wpf | WPF 뷰어: TsgcWpfPDFViewer, TsgcWpfPDFThumbnailView, TsgcWpfPDFOutlineView. Windows에서 .NET Framework 4.7.2, .NET 8, .NET 9, .NET 10을 지원합니다. |
esegece.sgcPDF.Avalonia | Avalonia 뷰어: TsgcAvaloniaPDFViewer, TsgcAvaloniaPDFThumbnailView, TsgcAvaloniaPDFOutlineView. .NET 8, .NET 9, .NET 10을 지원합니다. |
esegece.sgcPDF.sgcSign | sgcSign .NET에 대한 선택적 브리지: TsgcPDFPAdESSigner는 모든 sgcSign 키 공급자로 PAdES B-B, B-T, B-LT, B-LTA에 서명합니다. |
| Community 버전 | 등록 버전과 동일한 기능을 제공합니다. 연간 총매출이 100만 유로 미만이고 개발자가 5명 이하인 개인 및 조직에게 무료이며, 시작 시 짧은 알림이 표시됩니다. |
dotnet add package esegece.sgcPDF
dotnet add package esegece.sgcPDF.WinForms
dotnet add package esegece.sgcPDF.Wpf
dotnet add package esegece.sgcPDF.Avalonia
dotnet add package esegece.sgcPDF.sgcSign