用 PIL 库生成图形格式的报表
def MakeReport(Name='', Sex='', Addr='', Seal=False, OutFile='tmp.png'):
if (Seal):
# 带公章图案的空白模板(FastReport 保存的 png 文件,300dpi)
img = Image.open('L_S.png')
else:
# 不带公章图案的空白模板(FastReport 保存的 png 文件,300dpi)
img = Image.open('L_N.png')
draw = ImageDraw.Draw(img)
# 楷体,16号
setFont = ImageFont.truetype('simkai', 50)
fillColor = "#000000"
# 需要多次模拟输出尝试取得最合适的文字座标
draw.text((590, 900), Name, font=setFont, fill=fillColor) # 姓名
draw.text((1150, 900), Sex, font=setFont, fill=fillColor) # 性别
draw.text((590, 1020), Addr, font=setFont, fill=fillColor) # 现住址
img.save(OutFile)
附:空白的模板图像可以在 Delphi 中用以下代码生成:
uses
frxExportImage;
procedure TForm1.btnExportClick(Sender: TObject);
var
frxPNGExport1: TfrxPNGExport;
begin
frxPNGExport1 := TfrxPNGExport.Create(nil);
//frxReport1.LoadFromFile('d:\l.fr3');
frxReport1.PrepareReport();
frxPNGExport1.SeparateFiles := false;
frxPNGExport1.Monochrome := false;
frxPNGExport1.CropImages := false;
// 如果需要更高分辨率,可以改动下面的数值
frxPNGExport1.Resolution := 300;
frxPNGExport1.OpenAfterExport := false;
frxPNGExport1.ShowProgress := false;
frxPNGExport1.ShowDialog := false;
frxPNGExport1.FileName := 'd:\export.png';
frxReport1.Export(frxPNGExport1);
ShowMessage('已导出为:' + frxPNGExport1.FileName);
end;

浙公网安备 33010602011771号