瀏覽代碼

报表输出图片,测试代码

MaiXinRong 7 年之前
父節點
當前提交
7fbb091d30
共有 1 個文件被更改,包括 40 次插入1 次删除
  1. 40 1
      Forms/ReportsFrm.pas

+ 40 - 1
Forms/ReportsFrm.pas

@@ -149,6 +149,8 @@ type
     procedure PrintAllSelectedReports;
     procedure PrintAllSelectedReports;
     procedure ExportAllSelectedPDFReports;
     procedure ExportAllSelectedPDFReports;
 
 
+    procedure ExportReportPage(APage: Integer; const APageFileName: string; AOrg: Boolean);
+
     procedure SetProjectData(const Value: TProjectData);
     procedure SetProjectData(const Value: TProjectData);
     procedure SetCurPage(const Value: Integer);
     procedure SetCurPage(const Value: Integer);
     function GetPrintEndPage: Integer;
     function GetPrintEndPage: Integer;
@@ -486,7 +488,9 @@ begin
     PreviewComXML.Print(PreviewBox.Canvas, CurPage, 1)
     PreviewComXML.Print(PreviewBox.Canvas, CurPage, 1)
   else
   else
     TipMessage(GetHintStr, Handle);
     TipMessage(GetHintStr, Handle);
-  //PreviewBox.Picture.SaveToFile('E:\1.jpg');
+  //PreviewBox.Picture.SaveToFile('E:\Org.bmp');
+  //ExportReportPage(1, 'E:\Org.jpg', True);
+  //ExportReportPage(1, 'E:\Cut.jpg', False);
 end;
 end;
 
 
 procedure TReportsForm.xcbStartPageChange(Sender: TObject);
 procedure TReportsForm.xcbStartPageChange(Sender: TObject);
@@ -1714,4 +1718,39 @@ begin
     extvReport.FullCollapse;
     extvReport.FullCollapse;
 end;
 end;
 
 
+procedure TReportsForm.ExportReportPage(APage: Integer;
+  const APageFileName: string; AOrg: Boolean);
+var
+  bmp, bmpCut: TBitmap;
+  img: TJPEGImage;
+  iCutHeight, iCutWidth, iCutTop, iCutLeft, iCutRight, iCutBottom: Integer;
+begin
+  bmp := TBitmap.Create;
+  bmpCut := TBitmap.Create;
+  img := TJPEGImage.Create;
+  try
+    bmp.Height := PreviewComXML.ReportSize.Y;
+    bmp.Width := PreviewComXML.ReportSize.X;
+    PreviewComXML.PrintPreviewCanvas(APage, 0, bmp.Canvas, False);
+
+    iCutHeight := Round(PreviewComXML.ReportSize.Y / 200);
+    iCutWidth := Round(PreviewComXML.ReportSize.X / 200);
+    bmpCut.Height := PreviewComXML.ReportSize.Y - iCutHeight * 2;
+    bmpCut.Width := PreviewComXML.ReportSize.X - iCutWidth * 2;
+    bmpCut.Canvas.CopyRect(Rect(0, 0, bmpCut.Width, bmpCut.Height), bmp.Canvas, Rect(iCutWidth, iCutHeight, bmp.Width - iCutWidth, bmp.Height - iCutHeight));
+
+    if not AOrg then
+      img.Assign(bmpCut)
+    else
+      img.Assign(bmp);
+    img.CompressionQuality := 100;
+    img.Compress;
+    img.SaveToFile(APageFileName);
+  finally
+    bmpCut.Free;
+    bmp.Free;
+    img.Free;
+  end;
+end;
+
 end.
 end.