FDConvrt.pas
上传用户:dgeyuang
上传日期:2007-01-11
资源大小:65k
文件大小:4k
源码类别:

传真(Fax)编程

开发平台:

Delphi

  1. unit FDConvrt;
  2. interface
  3. uses
  4.   AdFaxCvt;
  5. function ConvertFCPToAPF(FileName        : string;
  6.                          PageNumber      : Integer;
  7.                          PageCount       : Integer;
  8.                    const Sender          : string;
  9.                    const Recipient       : string;
  10.                    const PageTitle       : string;
  11.                    const StationID       : string;
  12.                          OnConvertStatus : TFaxStatusEvent) : Boolean;
  13.   {-Converts an FCP file created by TFaxDesigner to an APF file. The APF file
  14.     will have the same name as the FCP file but with extension 'APF'. Returns
  15.     True if successful.
  16.     PageNumber, PageCount, Sender, Recipient, PageTitle, and StationID will be
  17.     substituted for replacement tags $N, $P, $F, $R, $S, and $I if they are
  18.     present within any of the FCP file's text fields.
  19.     If it is desired to display the progress of the conversion operation, pass
  20.     in a TFaxStatusEvent event handler as the OnConvertStatus parameter. This
  21.     will be called regularly during the conversion process.}
  22. implementation
  23. uses Classes, Graphics, Forms, Dialogs, SysUtils, FaxField;
  24. function ConvertFCPToAPF(FileName        : string;
  25.                          PageNumber      : Integer;
  26.                          PageCount       : Integer;
  27.                    const Sender          : string;
  28.                    const Recipient       : string;
  29.                    const PageTitle       : string;
  30.                    const StationID       : string;
  31.                          OnConvertStatus : TFaxStatusEvent) : Boolean;
  32.   {-Converts an FCP file created by TFaxDesigner to an APF file. The APF file
  33.     will have the same name as the FCP file but with extension 'APF'. Returns
  34.     True if successful.
  35.     PageNumber, PageCount, Sender, Recipient, PageTitle, and StationID will be
  36.     substituted for replacement tags $N, $P, $F, $R, $S, and $I if they are
  37.     present within any of the FCP file's text fields.
  38.     If it is desired to display the progress of the conversion operation, pass
  39.     in a TFaxStatusEvent event handler as the OnConvertStatus parameter. This
  40.     will be called regularly during the conversion process.}
  41. var
  42.   Posn         : Integer;
  43.   Form         : TForm;
  44.   FaxDesigner  : TFaxDesigner;
  45.   Stream       : TFileStream;
  46.   Bitmap       : TBitmap;
  47.   FaxConverter : TApdFaxConverter;
  48. begin
  49.   Result := False;
  50.   try
  51.     Form   := TForm.Create(nil);  {Create a form to be the FaxDesigner's parent}
  52.     Bitmap := TBitmap.Create;
  53.     try
  54.       {Form needs to be "visible", but we don't want the user to actually see it}
  55.       Form.Height := 0;
  56.       Form.Width  := 0;
  57.       Form.Left   := -200;
  58.       FaxDesigner  := TFaxDesigner.Create(nil);
  59.       try
  60.         FaxDesigner.Parent := Form;
  61.         Form.Show;
  62.         Stream := TFileStream.Create(FileName, fmOpenRead or fmShareExclusive);
  63.         try
  64.           FaxDesigner.Read(Stream);
  65.         finally
  66.           Stream.Free;
  67.         end;
  68.         Posn := Pos('.', FileName);
  69.         if Posn > 0 then
  70.           Delete(FileName, Posn, Length(FileName) - Posn + 1);
  71.         with FaxDesigner do begin
  72.           {Set FaxPanel properties for substitution of replacement tags}
  73.           FaxPanel.PageCount  := PageCount;
  74.           FaxPanel.PageNumber := PageNumber;
  75.           FaxPanel.Sender     := Sender;
  76.           FaxPanel.Recipient  := Recipient;
  77.           FaxPanel.PageTitle  := PageTitle;
  78.           FaxPanel.StationID  := StationID;
  79.           Bitmap.Width  := FaxPanel.DrawWidth-10;
  80.           Bitmap.Height := FaxPanel.DrawHeight-10;
  81.           FaxPanel.Draw(Bitmap.Canvas);
  82.         end;
  83.       finally
  84.         FaxDesigner.Free;
  85.       end;
  86.       FaxConverter := TApdFaxConverter.Create(nil);
  87.       try
  88.         with FaxConverter do begin
  89.           LeftMargin := 20;
  90.           Options    := [coDoubleWidth, coYield];
  91.           OnStatus   := OnConvertStatus;
  92.           FaxConverter.OutFileName := FileName + '.apf';
  93.           FaxConverter.ConvertBitmapToFile(Bitmap);
  94.         end;
  95.       finally
  96.         FaxConverter.Free;
  97.       end;
  98.       Result := True;
  99.     finally
  100.       Bitmap.Free;
  101.       Form.Free;
  102.     end;
  103.   except
  104.     on E:Exception do
  105.       MessageDlg(E.Message, mtError, [mbOK], 0);
  106.   end;
  107. end;  { ConvertFCPToAPF }
  108. end.