本例效果图:

代码文件:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo; {用于输入要保存的文本}
ComboBox1: TComboBox; {字体}
LabeledEdit1: TLabeledEdit; {字号}
LabeledEdit2: TLabeledEdit; {页面边距}
LabeledEdit3: TLabeledEdit; {行距}
Button1: TButton;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{初始化数据}
procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.Items := Screen.Fonts;
ComboBox1.Text := '宋体';
LabeledEdit1.Text := '12';
LabeledEdit2.Text := '10';
LabeledEdit3.Text := '4';
end;
procedure TForm1.Button1Click(Sender: TObject);
const
FilePath = 'c:\temp\Word.bmp'; {要保存的图片路径}
var
str: string;
bit: TBitmap;
Page_edge: Integer; {页面边距变量}
Word_h,Line_h: Integer; {字体高度和行间距}
w,x,y: Integer; {文本宽度与输出位置}
i: Integer;
begin
str := Memo1.Text;
bit := TBitmap.Create;
bit.Canvas.Font.Name := ComboBox1.Text;
bit.Canvas.Font.Size := StrToIntDef(LabeledEdit1.Text, 9);
Page_edge := StrToIntDef(LabeledEdit2.Text, 0);
Word_h := bit.Canvas.TextHeight('a');
Line_h := StrToIntDef(LabeledEdit3.Text, 0);
{设置页面高度}
bit.Height := (Word_h + Line_h) * Memo1.Lines.Count - Line_h + Page_edge * 2;
w := 0;
x := Page_edge;
y := Page_edge;
for i := 0 to Memo1.Lines.Count - 1 do
begin
{设置页面宽度}
if bit.Canvas.TextWidth(Memo1.Lines[i]) > w then
begin
w := bit.Canvas.TextWidth(Memo1.Lines[i]);
bit.Width := w + Page_edge * 2;
end;
{画文本}
bit.Canvas.TextOut(x, y, Memo1.Lines[i]);
{下一行}
Inc(y, Word_h + Line_h);
end;
{保存为图片}
bit.SaveToFile(FilePath);
bit.Free;
end;
end.
窗体文件:object Form1: TForm1
Left = 0
Top = 0
ActiveControl = Memo1
Caption = #25226#25991#26412#20445#23384#20026#22270#29255
ClientHeight = 274
ClientWidth = 370
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 242
Top = 7
Width = 24
Height = 13
Caption = #23383#20307
end
object Memo1: TMemo
Left = 0
Top = 0
Width = 234
Height = 274
Align = alLeft
Lines.Strings = (
'Memo1')
ScrollBars = ssBoth
TabOrder = 0
ExplicitHeight = 249
end
object LabeledEdit1: TLabeledEdit
Left = 240
Top = 76
Width = 121
Height = 21
EditLabel.Width = 24
EditLabel.Height = 13
EditLabel.Caption = #23383#21495
TabOrder = 1
end
object Button1: TButton
Left = 242
Top = 227
Width = 120
Height = 25
Caption = #25226#25991#26412#20445#23384#20026#22270#29255
TabOrder = 2
OnClick = Button1Click
end
object ComboBox1: TComboBox
Left = 240
Top = 25
Width = 120
Height = 21
ItemHeight = 13
TabOrder = 3
Text = 'ComboBox1'
end
object LabeledEdit2: TLabeledEdit
Left = 240
Top = 120
Width = 121
Height = 21
EditLabel.Width = 24
EditLabel.Height = 13
EditLabel.Caption = #36793#36317
TabOrder = 4
end
object LabeledEdit3: TLabeledEdit
Left = 240
Top = 168
Width = 121
Height = 21
EditLabel.Width = 24
EditLabel.Height = 13
EditLabel.Caption = #34892#36317
TabOrder = 5
end
end