기술 문서

HotPDF 캔버스 그리기

· PDF 소프트웨어

이 HotPDF 구성 요소 샘플은 Delphi 개발자가 VCL 애플리케이션에서 이미 사용하는 동일한 TCanvas 워크플로우를 사용하여 벡터 스타일 PDF 드로잉을 만드는 방법을 보여줍니다. 이 예제에서는 PDF 출력을 별도의 드로잉 모델로 처리하는 대신, HotPDF.Canvas를 통해 텍스트와 도형을 작성하고 결과를 PDF 문서로 저장합니다.

이 샘플은 애플리케이션이 이미 TCanvas를 기반으로 차트, 다이어그램, 미리보기 또는 사용자 정의 컨트롤 렌더링 코드를 가지고 있는 경우에 유용합니다. 핵심 패턴은 간단합니다. THotPDF를 생성하고 출력 파일을 할당한 다음, BeginDoc을 호출하고 캔버스 상태를 구성하고 콘텐츠를 그리고 EndDoc으로 파일을 완료합니다.

아래 코드에서 드로잉 루프는 세 그룹의 색상 도형을 렌더링합니다. 각 그룹은 동일한 좌표계를 사용하며, 그려지는 원시 도형만 다릅니다. 이는 생성된 PDF에서 캔버스 색상, 채우기 동작, 텍스트 배치 및 페이지 레이아웃을 테스트하기 위한 간결한 참조 자료입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
program CanvasDraw;
{$APPTYPE CONSOLE}
uses
{$IFDEF VER230} System.SysUtils, System.Classes, Vcl.Graphics, {$ELSE} SysUtils, Classes, Graphics, {$ENDIF} HPDFDoc;
 
var
   I, Y: Integer;
   HotPDF: THotPDF;
 
begin
    HotPDF:= THotPDF.Create(nil);
    try
        Randomize;
        HotPDF.AutoLaunch := true;
        HotPDF.FileName := 'CanvasDraw.pdf';
        HotPDF.BeginDoc;                                          // Create PDF file
        HotPDF.Canvas.Font.Size := 14;                            // Set canvas font size
        I :=20;
        Y := 60;
        HotPDF.Canvas.TextOut(10, 30, 'Canvas Rectangles');      //  Print text
        while I <= 700 do
        begin                                                   //  Draw colour
            HotPDF.Canvas.Brush.Color := random($FFFFFF);         //  rectangles
            HotPDF.Canvas.Rectangle(I, Y, I+90, Y + 160);
            Inc(I, 30);
            Inc( Y, 3 );
        end;
 
        I :=20;
        Y := 350;
        HotPDF.Canvas.TextOut(10, 320, 'Canvas Ellipses');         // Print text
        while I <= 700 do                                       //  Draw colour
        begin                                                   //  ellipses
            HotPDF.Canvas.Brush.Color := random($FFFFFF);
            HotPDF.Canvas.Ellipse(I, Y, I+90, Y + 160);
            Inc(I, 30);
            Inc( Y, 3 );
        end;
 
        I :=20;
        Y := 680;
        HotPDF.Canvas.TextOut(10, 650, 'Canvas RoundRects');      // Print text
        while I <= 700 do
        begin
            HotPDF.Canvas.Brush.Color := random($FFFFFF);         //  Draw colour
            HotPDF.Canvas.RoundRect(I, Y, I+90, Y + 160, 20, 20); //  roundrects
            Inc(I, 30);                                        
            Inc( Y, 3 );
        end;
        HotPDF.EndDoc;                                            // Close PDF file
    finally
        HotPDF.Free;
    end;
end.

이 샘플에서 보여주는 내용

  • 콘솔 스타일의 Delphi PDF 생성 작업에 대한 THotPDF 초기화 방법.
  • 텍스트 및 기본 기하학적 드로잉에 HotPDF.Canvas 사용 방법.
  • 브러시 색상이 생성된 PDF에서 채워진 도형에 미치는 영향.
  • 반복된 좌표를 사용하여 비트맵 스크린샷 없이 계층화된 시각적 출력을 만드는 방법.

구현 관련 참고 사항

PDF 페이지는 EndDoc가 호출된 후에만 완료되므로, 실제 코드에서는 컴포넌트의 전체 수명 동안 try/finally 블록을 유지하고, 드로잉 실패 시 부분적으로 작성된 파일을 남기지 않도록 해야 합니다. 결정적인 테스트 결과를 얻으려면, Randomize 및 임의 색상을 고정된 색상 값으로 대체하십시오.

Canvas 기반 PDF 드로잉은 보고서, 오버레이, 다이어그램 및 생성된 폼에 가장 적합하며, 출력은 어떤 확대/축소 수준에서도 선명하게 유지되어야 합니다. 원본 드로잉이 화면 DPI 또는 장치별 글꼴에 의존하는 경우, 배포 전에 깨끗한 시스템에서 최종 PDF를 확인하십시오.