⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ufontdemo.pas

📁 源码级制作含有中文的PDF文件,不需要ACTIVE OCX,就可以自己创建PDF 文档.
💻 PAS
字号:
{create by 季昌丰(jichangfeng@yahoo.com.cn) 2004.02.21}

unit UFontDemo;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls,

  PDFCreater, PMFonts;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    FPDFCreater: TPDFCreater;
    procedure MakeFontList(X, Y: Single; ACanvas: TPDFContents);
    procedure MakeFontSizeList(X, Y: Single; ACanvas: TPDFContents);
    procedure MakeCharSpaceList(X, Y: Single; ACanvas: TPDFContents);
    procedure MakeWordSpaceList(X, Y: Single; ACanvas: TPDFContents);
    procedure MakeAlignmentList(X, Y: Single; ACanvas: TPDFContents);
    procedure MakeWordwrapList(X, Y: Single; ACanvas: TPDFContents);
  public

  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.MakeFontList(X, Y: Single; ACanvas: TPDFContents);
begin

  ACanvas.Font := fiSong;
  ACanvas.FontSize := 12;
  ACanvas.TextOut(X, Y, 'Font');
  ACanvas.LineWidth := 0.75;
  ACanvas.DrawRect(X, Y - 5, X + 220, Y - 290, false);

  X := X + 10;

  Y := Y - 20;
  ACanvas.Font := fiCentury;
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, 'Century');
  ACanvas.FontSize := 12;
  Y := Y - 15;
  ACanvas.TextOut(X, Y, 'ABCDFEGabcdefg123456$%&?');

  Y := Y - 20;
  ACanvas.Font := fiCenturyBold;
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, 'Century Bold');
  ACanvas.FontSize := 12;
  Y := Y - 15;
  ACanvas.TextOut(X, Y, 'ABCDFEGabcdefg123456$%&?');

  Y := Y - 20;
  ACanvas.Font := fiArial;
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, 'Arial');
  ACanvas.FontSize := 12;
  Y := Y - 15;
  ACanvas.TextOut(X, Y, 'ABCDFEGabcdefg123456$%&?');

  Y := Y - 20;
  ACanvas.Font := fiArialBold;
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, 'Arial Bold');
  ACanvas.FontSize := 12;
  Y := Y - 15;
  ACanvas.TextOut(X, Y, 'ABCDFEGabcdefg123456$%&?');

  Y := Y - 20;
  ACanvas.Font := fiCourier;
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, 'Courier');
  ACanvas.FontSize := 12;
  Y := Y - 15;
  ACanvas.TextOut(X, Y, 'ABCDFEGabcdefg123456$%&?');

  Y := Y - 20;
  ACanvas.Font := fiCourierBold;
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, 'Courier Bold');
  ACanvas.FontSize := 12;
  Y := Y - 15;
  ACanvas.TextOut(X, Y, 'ABCDFEGabcdefg123456$%&?');

  Y := Y - 20;
  ACanvas.Font := fiSong;
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, '宋体');
  ACanvas.FontSize := 12;
  Y := Y - 15;
  ACanvas.TextOut(X, Y, '中文测试ABCabc123$%&?');

  Y := Y - 20;
  ACanvas.Font := fiSong;  //fiGothic;
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, '僑僔僢僋(原为日文)');
  ACanvas.FontSize := 12;
  Y := Y - 15;
  ACanvas.TextOut(X, Y, '偁偄偆偊偍傾僀僂僄僆(为日文)');
end;

procedure TForm1.MakeFontSizeList(X, Y: Single; ACanvas: TPDFContents);
begin

  ACanvas.Font := fiSong;
  ACanvas.FontSize := 12;
  ACanvas.TextOut(X, Y, 'FontSize');
  ACanvas.LineWidth := 0.75;
  ACanvas.DrawRect(X, Y - 5, X + 220, Y - 290, false);

  X := X + 10;

  Y := Y - 20;

  // FonrSize = 6
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, 'FonrSize = 6');
  ACanvas.FontSize := 6;
  Y := Y - ACanvas.FontSize - 3;
  ACanvas.TextOut(X, Y, '中文测试ABCabc123$%&?');
  Y := Y - 18;

  // FonrSize = 8
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, 'FonrSize = 8');
  ACanvas.FontSize := 8;
  Y := Y - ACanvas.FontSize - 3;
  ACanvas.TextOut(X, Y, '中文测试ABCabc123$%&?');
  Y := Y - 18;

  // FonrSize = 10
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, 'FonrSize = 10');
  ACanvas.FontSize := 10;
  Y := Y - ACanvas.FontSize - 3;
  ACanvas.TextOut(X, Y, '中文测试ABCabc123$%&?');
  Y := Y - 18;

  // FonrSize = 14
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, 'FonrSize = 14');
  ACanvas.FontSize := 14;
  Y := Y - ACanvas.FontSize - 2;
  ACanvas.TextOut(X, Y, '中文测试ABCabc123$%&?');
  Y := Y - 18;

  // FonrSize = 20
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, 'FonrSize = 20');
  ACanvas.FontSize := 20;
  Y := Y - ACanvas.FontSize - 1;
  ACanvas.TextOut(X, Y, '中文测试ABab123$%&?');
  Y := Y - 18;

  // FonrSize = 32
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, 'FonrSize = 32');
  ACanvas.FontSize := 32;
  Y := Y - ACanvas.FontSize;
  ACanvas.TextOut(X, Y, '中文ABab123$');
  Y := Y - 18;

  // FonrSize = 48
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, 'FonrSize = 48');
  ACanvas.FontSize := 48;
  Y := Y - ACanvas.FontSize;
  ACanvas.TextOut(X, Y, '中文Aa1$');

end;

procedure TForm1.MakeCharSpaceList(X, Y: Single; ACanvas: TPDFContents);
begin
  ACanvas.Font := fiSong;
  ACanvas.FontSize := 12;
  ACanvas.TextOut(X, Y, 'CharSpace');
  ACanvas.LineWidth := 0.75;
  ACanvas.DrawRect(X, Y - 5, X + 220, Y - 140, false);

  X := X + 10;

  Y := Y - 20;

  ACanvas.FontSize := 8;
  ACanvas.CharSpace := 0;
  ACanvas.TextOut(X-5, Y, 'CharSpace = -0.5');
  ACanvas.FontSize := 12;
  ACanvas.CharSpace := -0.5;
  Y := Y - ACanvas.FontSize - 3;
  ACanvas.TextOut(X, Y, '中文测试ABCabc123$%&?');
  Y := Y - 18;

  ACanvas.FontSize := 8;
  ACanvas.CharSpace := 0;
  ACanvas.TextOut(X-5, Y, 'CharSpace = 0 (Default)');
  ACanvas.FontSize := 12;
  ACanvas.CharSpace := 0;
  Y := Y - ACanvas.FontSize - 3;
  ACanvas.TextOut(X, Y, '中文测试ABCabc123$%&?');
  Y := Y - 18;

  ACanvas.FontSize := 8;
  ACanvas.CharSpace := 0;
  ACanvas.TextOut(X-5, Y, 'CharSpace = 1');
  ACanvas.FontSize := 12;
  ACanvas.CharSpace := 1;
  Y := Y - ACanvas.FontSize - 3;
  ACanvas.TextOut(X, Y, '中文测试ABCabc123$%&?');
  Y := Y - 18;

  ACanvas.FontSize := 8;
  ACanvas.CharSpace := 0;
  ACanvas.TextOut(X-5, Y, 'CharSpace = 2');
  ACanvas.FontSize := 12;
  ACanvas.CharSpace := 2;
  Y := Y - ACanvas.FontSize - 3;
  ACanvas.TextOut(X, Y, '中文测试ABCabc123$%&?');

  ACanvas.CharSpace := 0;
end;

procedure TForm1.MakeWordSpaceList(X, Y: Single; ACanvas: TPDFContents);
begin

  ACanvas.Font := fiSong;
  ACanvas.FontSize := 12;
  ACanvas.TextOut(X, Y, 'WordSpace');
  ACanvas.LineWidth := 0.75;
  ACanvas.DrawRect(X, Y - 5, X + 220, Y - 140, false);

  X := X + 10;

  Y := Y - 20;

  ACanvas.FontSize := 8;
  ACanvas.WordSpace := 0;
  ACanvas.TextOut(X-5, Y, 'WordSpace = -2');
  ACanvas.FontSize := 12;
  ACanvas.WordSpace := -2;
  Y := Y - ACanvas.FontSize - 3;
  ACanvas.TextOut(X, Y, 'Hello World 中文测试');
  Y := Y - 18;

  ACanvas.FontSize := 8;
  ACanvas.WordSpace := 0;
  ACanvas.TextOut(X-5, Y, 'WordSpace = 0 (Default)');
  ACanvas.FontSize := 12;
  ACanvas.WordSpace := 0;
  Y := Y - ACanvas.FontSize - 3;
  ACanvas.TextOut(X, Y, 'Hello World 中文测试');
  Y := Y - 18;

  ACanvas.FontSize := 8;
  ACanvas.WordSpace := 0;
  ACanvas.TextOut(X-5, Y, 'WordSpace = 4');
  ACanvas.FontSize := 12;
  ACanvas.WordSpace := 4;
  Y := Y - ACanvas.FontSize - 3;
  ACanvas.TextOut(X, Y, 'Hello World 中文测试');
  Y := Y - 18;

  ACanvas.FontSize := 8;
  ACanvas.WordSpace := 0;
  ACanvas.TextOut(X-5, Y, 'WordSpace = 10');
  ACanvas.FontSize := 12;
  ACanvas.WordSpace := 10;
  Y := Y - ACanvas.FontSize - 3;
  ACanvas.TextOut(X, Y, 'Hello World 中文测试');

  ACanvas.WordSpace := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  X, Y: Single;
begin

  FPDFCreater := TPDFCreater.Create;
  with FPDFCreater do
  begin
    X := 80;
    Y := 750;
    BeginDoc(TFileStream.Create('FontDemo.pdf', fmCreate));

    MakeFontList(X, Y, Canvas);

    X := 310;
    MakeFontSizeList(X, Y, Canvas);

    X := 80;
    Y := 420;
    MakeCharSpaceList(X, Y, Canvas);

    X := 310;
    MakeWordSpaceList(X, Y, Canvas);

    X := 80;
    Y := 240;
    MakeAlignmentList(X, Y, Canvas);

    X := 310;
    Y := 240;
    MakeWordwrapList(X, Y, Canvas);

    EndDoc(true);
    Free;
  end;
  ShowMessage('FontDemo.pdf已经成功生成。');
  Close;
end;

procedure TForm1.MakeAlignmentList(X, Y: Single; ACanvas: TPDFContents);
var
  S: string;
  SW, X2: Single;
begin
  ACanvas.Font := fiSong;
  ACanvas.FontSize := 12;
  ACanvas.TextOut(X, Y, 'Alignment');
  ACanvas.LineWidth := 0.75;
  ACanvas.DrawRect(X, Y - 5, X + 220, Y - 100, false);

  X := X + 10;
  X2 := X + 200;

  Y := Y - 20;

  S := '中文测试';

  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, '居左');

  Y := Y - 12;
  ACanvas.FontSize := 12;
  ACanvas.TextOut(X, Y, S);

  Y := Y - 18;
  ACanvas.FontSize := 8;
  ACanvas.WordSpace := 0;
  ACanvas.TextOut(X-5, Y, '居中');

  Y := Y - 12;
  ACanvas.FontSize := 12;
  SW := ACanvas.TextWidth(S);
  ACanvas.TextOut(X + (X2 - X - SW) / 2, Y, S);

  Y := Y - 18;
  ACanvas.FontSize := 8;
  ACanvas.TextOut(X-5, Y, '居右');

  Y := Y - 12;
  ACanvas.FontSize := 12;
  ACanvas.TextOut(X2 - SW, Y, S);

end;

procedure TForm1.MakeWordwrapList(X, Y: Single; ACanvas: TPDFContents);
var
  S: string;
  S2: string;
begin

  ACanvas.Font := fiSong;
  ACanvas.FontSize := 10.5;
  ACanvas.TextOut(X, Y, 'Wordwrap');
  ACanvas.LineWidth := 0.75;
  ACanvas.DrawRect(X, Y - 5, X + 220, Y - 110, false);

  X := X + 10;
  Y := Y - 20;

  S := '一:少室山头琴未冷,风陵渡口似闻声。' +
       '人间自有情难老,不信娇女白发生。' +
       '二:白马未驮夕照去,西风已送伤心来。' +
       '中原可有英雄泪,为洗秋兰带露开。' +
       '三:灵枢终未得天枢,素问何曾问髯胡。' +
       '烛泪滴残海棠冷,忍听山歌到晓无。';
  ACanvas.ArrangeText(S, S2, 215);

  ACanvas.Leading := ACanvas.FontSize;

  ACanvas.TextOut(X, Y, S2);

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -