Browse Source

Report Sign Online: Compress Report Export Image

MaiXinRong 8 years ago
parent
commit
f44a6a1793
2 changed files with 16 additions and 8 deletions
  1. 2 1
      DataModules/PHPWebDm.pas
  2. 14 7
      Forms/SignOnlineReportsFrm.pas

+ 2 - 1
DataModules/PHPWebDm.pas

@@ -846,10 +846,11 @@ begin
     for i := Low(AUpFileFields) to High(AUpFileFields) do
       IdDataStream.AddFile(AUpFileFields[i], AUpFileNames[i], 'text/plain');
     IdDataStream.Position := 0;
+
+    J := TCslJson.Create;
     try
       sPostResult := vIdHTTP.Post(MeasureURL + AUrl, IdDataStream);
 
-      J := TCslJson.Create;
       J.Text := Utf8ToAnsi(sPostResult);
       Result := SameText(J.Value['status'], 'true');
       if not Result then

+ 14 - 7
Forms/SignOnlineReportsFrm.pas

@@ -8,7 +8,7 @@ uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, sdIDTree, sdDB, ComCtrls, ExtCtrls, VirtualTrees, PrintCom,
   PrintComXML, MScrollBox, StdCtrls, Buttons, PNGButton, ieview,
-  imageenview;
+  imageenview, jpeg;
 
 const
   crNext = -25;
@@ -1000,15 +1000,22 @@ procedure TSignOnlineReportsForm.ExportReports(const AFileName: string);
 
   procedure ExportReportPage(APage: Integer; const APageFileName: string);
   var
-    img: TImage;
+    bmp: TBitmap;
+    img: TJPEGImage;
   begin
-    img := TImage.Create(nil);
+    bmp := TBitmap.Create;
+    img := TJPEGImage.Create;
     try
-      img.Height := PreviewComXML.ReportSize.Y;
-      img.Width := PreviewComXML.ReportSize.X;
-      PreviewComXML.PrintPreviewCanvas(APage, 0, img.Canvas, False);
-      img.Picture.SaveToFile(APageFileName);
+      bmp.Height := PreviewComXML.ReportSize.Y;
+      bmp.Width := PreviewComXML.ReportSize.X;
+      PreviewComXML.PrintPreviewCanvas(APage, 0, bmp.Canvas, False);
+
+      img.Assign(bmp);
+      img.CompressionQuality := 100;
+      img.Compress;
+      img.SaveToFile(APageFileName);
     finally
+      bmp.Free;
       img.Free;
     end;
   end;