FaxConv.PAS
上传用户:dgeyuang
上传日期:2007-01-11
资源大小:65k
文件大小:15k
- unit Faxconv;
- interface
- uses
- SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, IniFiles,
- Forms, Dialogs, StdCtrls, FileCtrl, OoMisc, AdFaxCvt, ExtCtrls, AdMeter,
- Mask, ComCtrls, RichEdit2,jpeg;
- type
- TFaxConversionForm = class(TForm)
- btnOK: TButton;
- ApdFaxConverter1: TApdFaxConverter;
- btnConvert: TButton;
- GroupBox2: TGroupBox;
- cbxEnhTextEnabled: TCheckBox;
- btnEnhFont: TButton;
- FontDialog1: TFontDialog;
- Label3: TLabel;
- Label4: TLabel;
- rgpResolution: TRadioGroup;
- RadioGroup2:TRadioGroup;
- Label5: TLabel;
- rgpWidth: TRadioGroup;
- Label6: TLabel;
- GroupBox3: TGroupBox;
- cbxCenterImage: TCheckBox;
- cbxYield: TCheckBox;
- cbxYieldOften: TCheckBox;
- lblFontName: TLabel;
- lblFontSize: TLabel;
- edtLeftMargin: TMaskEdit;
- edtTopMargin: TMaskEdit;
- edtLinesPerPage: TMaskEdit;
- edtTabStop: TMaskEdit;
- GroupBox1: TGroupBox;
- Label2: TLabel;
- edtOutFileName: TEdit;
- Label1: TLabel;
- edtFileName: TEdit;
- btnBrowseInFile: TButton;
- Button2: TButton;
- OpenDialog1: TOpenDialog;
- RadioGroup1: TRadioGroup;
- Label7: TLabel;
- CheckBox1: TCheckBox;
- RichEdit981: TRichEdit98;
- RichEdit982: TRichEdit98;
- Image2: TImage;
- Image1: TImage;
- procedure FormCreate(Sender: TObject);
- procedure btnConvertClick(Sender: TObject);
- procedure ApdFaxConverter1Status(F: TObject; Starting, Ending: Boolean;
- PagesConverted, LinesConverted: Integer; BytesConverted,
- BytesToConvert: Longint; var Abort: Boolean);
- procedure btnEnhFontClick(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure cbxCenterImageClick(Sender: TObject);
- procedure cbxYieldClick(Sender: TObject);
- procedure cbxYieldOftenClick(Sender: TObject);
- procedure rgpResolutionClick(Sender: TObject);
- procedure rgpWidthClick(Sender: TObject);
- procedure edtLeftMarginExit(Sender: TObject);
- procedure edtTopMarginExit(Sender: TObject);
- procedure edtLinesPerPageExit(Sender: TObject);
- procedure edtTabStopExit(Sender: TObject);
- procedure btnBrowseInFileClick(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- procedure RadioGroup2Click(Sender: TObject);
- procedure edtFileNameExit(Sender: TObject);
- procedure btnOKClick(Sender: TObject);
- private
- { Private declarations }
- Meter: TApdMeter;
- public
- { Public declarations }
- Cancelled : Boolean;
- LastInDir,
- LastOutDir: String;
- end;
- const
- IniName = 'TCom3.ini';
- crHand = 1;
- var
- FaxConversionForm: TFaxConversionForm;
- //选择内容
- implementation
- uses Faxcnvid, RotateUnit,CovertBmp, FDConvrt;
- {$R *.DFM}
- procedure TFaxConversionForm.FormCreate(Sender: TObject);
- var
- Ini: TIniFile;
- begin
- Meter := TApdMeter.Create(Self);
- Meter.Parent := Self;
- Meter.Top := btnConvert.Top;
- Meter.Left := GroupBox1.Left;
- Meter.Width := btnConvert.Left - GroupBox1.Left - 8;
- Meter.Height := btnConvert.Height;
- Meter.Visible := True;
- Cancelled := False;
- Ini := TIniFile.Create(IniName);
- try
- LastInDir := Ini.ReadString('FaxConvert', 'LastInDir', ExtractFilePath(Application.ExeName));
- LastOutDir := Ini.ReadString('FaxConvert', 'LastOutDir', ExtractFilePath(Application.ExeName));
- cbxEnhTextEnabled.Checked := Ini.ReadBool('FaxConvert', 'EnhTextEnabled', True);
- ApdFaxConverter1.EnhFont.Name := Ini.ReadString('FaxConvert', 'EnhFont.Name', Font.Name);
- ApdFaxConverter1.EnhFont.Size := Ini.ReadInteger('FaxConvert', 'EnhFont.Size', Font.Size);
- ApdFaxConverter1.LeftMargin := Ini.ReadInteger('FaxConvert', 'LeftMargin', 50);
- ApdFaxConverter1.TopMargin := Ini.ReadInteger('FaxConvert', 'TopMargin', 0);
- ApdFaxConverter1.LinesPerPage := Ini.ReadInteger('FaxConvert', 'LinesPerPage', 60);
- ApdFaxConverter1.TabStop := Ini.ReadInteger('FaxConvert', 'TabStop', 4);
- ApdFaxConverter1.Options := [];
- if Ini.ReadBool('FaxConvert', 'Options.DoubleWidth', True) then
- ApdFaxConverter1.Options := ApdFaxConverter1.Options + [coDoubleWidth];
- if Ini.ReadBool('FaxConvert', 'Options.HalfHeight', False) then
- ApdFaxConverter1.Options := ApdFaxConverter1.Options + [coHalfHeight];
- if Ini.ReadBool('FaxConvert', 'Options.CenterImage', True) then
- ApdFaxConverter1.Options := ApdFaxConverter1.Options + [coCenterImage];
- if Ini.ReadBool('FaxConvert', 'Options.Yield', True) then
- ApdFaxConverter1.Options := ApdFaxConverter1.Options + [coYield];
- if Ini.ReadBool('FaxConvert', 'Options.YieldOften', False) then
- ApdFaxConverter1.Options := ApdFaxConverter1.Options + [coYieldOften];
- ApdFaxConverter1.Resolution := TFaxResolution(Ini.ReadInteger('FaxConvert', 'Resolution', Ord(frNormal)));
- ApdFaxConverter1.Width := TFaxWidth(Ini.ReadInteger('FaxConvert', 'Width', Ord(fwNormal)));
- lblFontName.Caption := ApdFaxConverter1.EnhFont.Name;
- lblFontSize.Caption := 'Size: ' + IntToStr(ApdFaxConverter1.EnhFont.Size);
- edtLeftMargin.Text := IntToStr(ApdFaxConverter1.LeftMargin);
- edtTopMargin.Text := IntToStr(ApdFaxConverter1.TopMargin);
- edtLinesPerPage.Text := IntToStr(ApdFaxConverter1.LinesPerPage);
- edtTabStop.Text := IntToStr(ApdFaxConverter1.TabStop);
- cbxCenterImage.Checked := coCenterImage in ApdFaxConverter1.Options;
- cbxYield.Checked := coYield in ApdFaxConverter1.Options;
- cbxYieldOften.Checked := coYieldOften in ApdFaxConverter1.Options;
- rgpResolution.ItemIndex := Ord(ApdFaxConverter1.Resolution);
- rgpWidth.ItemIndex := Ord(ApdFaxConverter1.Width);
- btnEnhFont.Enabled := cbxEnhTextEnabled.Checked;
- finally
- Ini.Free;
- end;
- RadioGroup1.ItemIndex:=0;
- end;
- procedure TFaxConversionForm.btnConvertClick(Sender: TObject);
- var
- Ext,s: String;
- RotImage1:TRotImage;
- i:integer;
- h:integer;
- begin
- Ext:=LowerCase(ExtractFileExt(edtFileName.text));
- if btnConvert.Caption = '取消' then begin
- Cancelled := True;
- btnConvert.Caption := '转换';
- Exit;
- end else begin
- Cancelled := False;
- btnConvert.Caption := '取消';
- end;
- if (Ext='.bmp') or (Ext='.jpg') or (Ext='.jpeg')
- or (Ext='.pcx') or (Ext='.dcx')
- or (Ext='.tif') then
- begin
- if (CheckBmp(image1,edtfileName.text)=2)or(Ext='.jpg')or(Ext='.jpeg') then
- edtFileName.text:=ConvertToBmp(Image1,edtFileName.text);
- if RadioGroup1.ItemIndex=1 then
- begin
- RotImage1:=TRotImage.Create(self);
- RotImage1.Picture.LoadFromFile(edtFileName.text);
- RotImage1.RotateBitmap(TRotationType(0));
- Rotimage1.Picture.SaveToFile(edtFileName.text);
- end;
- Ext:=LowerCase(ExtractFileExt(edtFileName.text));
- end else if (Ext='.txt') then
- begin
- if CheckBox1.Checked then
- begin
- RichEdit981.Font.Assign(FontDialog1.font);
- // RichEdit981.Visible:=false;
- RichEdit981.WordWrap:=true;
- RichEdit981.Width:=Trunc(210*GetDeviceCaps(Canvas.Handle, LOGPIXELSX) * 25.4);
- RichEdit981.Height:=Trunc(297*GetDeviceCaps(Canvas.Handle, LOGPIXELSX) * 25.4);
- RichEdit982.WordWrap:=true;
- RichEdit982.Width:=Trunc(210*GetDeviceCaps(Canvas.Handle, LOGPIXELSX) * 25.4);
- RichEdit982.Height:=Trunc(297*GetDeviceCaps(Canvas.Handle, LOGPIXELSX) * 25.4);
- Try
- RichEdit981.Lines.LoadFromFile(edtFileName.text);
- RichEdit982.lines:=RichEdit981.lines;
- except
- end;
- h:=filecreate(edtFileName.text);
- if h=-1 then exit;
- For i:=1 to RichEdit982.lines.count do
- begin
- Application.ProcessMessages;
- s:=RichEdit982.lines[i]+#$0d+#$0a;
- FileWrite(h,s[1],length(s));
- s:='';
- end;
- FileClose(h);
- end;
- end;
- if Ext = '.txt' then
- begin
- if cbxEnhTextEnabled.Checked then
- ApdFaxConverter1.InputDocumentType := idTextEx
- else
- ApdFaxConverter1.InputDocumentType := idText;
- ApdFaxConverter1.DocumentFile:=edtFileName.text;
- end
- else if Ext = '.bmp' then
- begin
- ApdFaxConverter1.InputDocumentType := idBMP;
- ApdFaxConverter1.DocumentFile := edtFileName.Text;
- end
- else if Ext='.fcp' then
- begin
- ConvertFCPToAPF(edtFileName.text, 0, 0, '', '', '', '', ApdFaxConverter1Status);
- end
- else if Ext = '.tif' then
- begin
- ApdFaxConverter1.InputDocumentType := idTIFF;
- ApdFaxConverter1.DocumentFile := edtFileName.Text;
- end
- else if Ext = '.pcx' then
- begin
- ApdFaxConverter1.InputDocumentType := idPCX;
- ApdFaxConverter1.DocumentFile := edtFileName.Text;
- end
- else if Ext = '.dcx' then
- begin
- ApdFaxConverter1.InputDocumentType := idDCX;
- ApdFaxConverter1.DocumentFile := edtFileName.Text;
- end
- else ApdFaxConverter1.InputDocumentType := idNone;
- if ApdFaxConverter1.InputDocumentType = idNone then
- begin
- btnConvert.Caption := '转换';
- Exit;
- end;
- ApdFaxConverter1.OutFileName := edtOutFileName.Text;
- Try
- ApdFaxConverter1.ConvertToFile;
- MessageDlg('转换成功!',mtconfirmation,[mbok],0);
- except
- end;
- btnConvert.Caption := '转换';
- end;
- procedure TFaxConversionForm.ApdFaxConverter1Status(F: TObject; Starting,
- Ending: Boolean; PagesConverted, LinesConverted: Integer; BytesConverted,
- BytesToConvert: Longint; var Abort: Boolean);
- begin
- Abort := Cancelled;
- if (BytesToConvert <> 0) then
- Meter.Position := (BytesConverted * 100) div BytesToConvert;
- end;
- procedure TFaxConversionForm.btnEnhFontClick(Sender: TObject);
- begin
- FontDialog1.Font := ApdFaxConverter1.EnhFont;
- if FontDialog1.Execute then begin
- ApdFaxConverter1.EnhFont := FontDialog1.Font;
- lblFontName.Caption := ApdFaxConverter1.EnhFont.Name;
- lblFontSize.Caption := IntToStr(ApdFaxConverter1.EnhFont.Size);
- end;
- end;
- procedure TFaxConversionForm.FormClose(Sender: TObject;
- var Action: TCloseAction);
- var
- Ini: TIniFile;
- begin
- Ini := TIniFile.Create(IniName);
- try
- Ini.WriteString('FaxConvert', 'LastInDir', LastInDir);
- Ini.WriteString('FaxConvert', 'LastOutDir', LastOutDir);
- Ini.WriteBool('FaxConvert', 'EnhTextEnabled', cbxEnhTextEnabled.Checked);
- Ini.WriteString('FaxConvert', 'EnhFont.Name', ApdFaxConverter1.EnhFont.Name);
- Ini.WriteInteger('FaxConvert', 'EnhFont.Size', ApdFaxConverter1.EnhFont.Size);
- Ini.WriteInteger('FaxConvert', 'LeftMargin', ApdFaxConverter1.LeftMargin);
- Ini.WriteInteger('FaxConvert', 'TopMargin', ApdFaxConverter1.TopMargin);
- Ini.WriteInteger('FaxConvert', 'LinesPerPage', ApdFaxConverter1.LinesPerPage);
- Ini.WriteInteger('FaxConvert', 'TabStop', ApdFaxConverter1.TabStop);
- Ini.WriteBool('FaxConvert', 'Options.DoubleWidth', coDoubleWidth in ApdFaxConverter1.Options);
- Ini.WriteBool('FaxConvert', 'Options.HalfHeight', coHalfHeight in ApdFaxConverter1.Options);
- Ini.WriteBool('FaxConvert', 'Options.CenterImage', coCenterImage in ApdFaxConverter1.Options);
- Ini.WriteBool('FaxConvert', 'Options.Yield', coYield in ApdFaxConverter1.Options);
- Ini.WriteBool('FaxConvert', 'Options.YieldOften', coYieldOften in ApdFaxConverter1.Options);
- Ini.WriteInteger('FaxConvert', 'Resolution', Ord(ApdFaxConverter1.Resolution));
- Ini.WriteInteger('FaxConvert', 'Width', Ord(ApdFaxConverter1.Width));
- finally
- Ini.Free;
- end;
- end;
- procedure TFaxConversionForm.cbxCenterImageClick(Sender: TObject);
- begin
- if cbxCenterImage.Checked then
- ApdFaxConverter1.Options := ApdFaxConverter1.Options + [coCenterImage]
- else
- ApdFaxConverter1.Options := ApdFaxConverter1.Options - [coCenterImage];
- end;
- procedure TFaxConversionForm.cbxYieldClick(Sender: TObject);
- begin
- if not cbxYield.Checked then cbxYieldOften.Checked:=false;
- if cbxYield.Checked then
- ApdFaxConverter1.Options := ApdFaxConverter1.Options + [coYield]
- else
- ApdFaxConverter1.Options := ApdFaxConverter1.Options - [coYield];
- end;
- procedure TFaxConversionForm.cbxYieldOftenClick(Sender: TObject);
- begin
- if cbxYieldOften.Checked then cbxYield.Checked:=true;
- if cbxYieldOften.Checked then
- ApdFaxConverter1.Options := ApdFaxConverter1.Options + [coYieldOften]
- else
- ApdFaxConverter1.Options := ApdFaxConverter1.Options - [coYieldOften];
- end;
- procedure TFaxConversionForm.rgpResolutionClick(Sender: TObject);
- begin
- ApdFaxConverter1.Resolution := TFaxResolution(rgpResolution.ItemIndex);
- end;
- procedure TFaxConversionForm.rgpWidthClick(Sender: TObject);
- begin
- ApdFaxConverter1.Width := TFaxWidth(rgpWidth.ItemIndex);
- end;
- procedure TFaxConversionForm.edtLeftMarginExit(Sender: TObject);
- begin
- ApdFaxConverter1.LeftMargin := StrToInt(edtLeftMargin.Text);
- end;
- procedure TFaxConversionForm.edtTopMarginExit(Sender: TObject);
- begin
- ApdFaxConverter1.TopMargin := StrToInt(edtTopMargin.Text);
- end;
- procedure TFaxConversionForm.edtLinesPerPageExit(Sender: TObject);
- begin
- ApdFaxConverter1.LinesPerPage := StrToInt(edtLinesPerPage.Text);
- end;
- procedure TFaxConversionForm.edtTabStopExit(Sender: TObject);
- begin
- ApdFaxConverter1.TabStop := StrToInt(edtTabStop.Text);
- end;
- procedure TFaxConversionForm.btnBrowseInFileClick(Sender: TObject);
- begin
- OpenDialog1.Filter := '提供的类型(*.txt;*.tif;*.pcx;*.dcx;*.bmp;*.fcp;*.jpg;*.jpeg)|' +
- '*.txt;*.tif;*.pcx;*.dcx;*.bmp;*.fcp;*.jpg;*.jpeg|文本文件(*.txt)|*.txt|TIFF 文件(*.tif)|' +
- '*.tif|PCX 文件 (*.pcx)|*.pcx|DCX 文件 (*.dcx)|*.dcx|Bitmap 文件 (*.bmp)|'+
- '*.bmp|(*.jpg)|*.jpg|(*.jpeg)|*.jpg|(*.fcp)|*.fcp|全部文件 (*.*)|*.*';
- OpenDialog1.InitialDir :=ExtractFilePath(Application.ExeName);
- OpenDialog1.Title := '浏览要转换的文件';
- OpenDialog1.FileName := edtFileName.Text;
- if OpenDialog1.Execute then begin
- edtFileName.Text := OpenDialog1.FileName;
- edtOutFileName.Text := ChangeFileExt(edtFileName.Text, '.apf');
- btnConvert.Enabled := FileExists(edtFileName.Text);
- LastInDir := ExtractFilePath(edtFileName.Text);
- end;
- end;
- procedure TFaxConversionForm.Button2Click(Sender: TObject);
- begin
- OpenDialog1.Filter := '传真文件 (*.apf)|*.apf|All files (*.*)|*.*';
- OpenDialog1.InitialDir := LastOutDir;
- OpenDialog1.Title := '输出文件';
- OpenDialog1.FileName := edtOutFileName.Text;
- if OpenDialog1.Execute then begin
- edtOutFileName.Text := OpenDialog1.FileName;
- LastOutDir := ExtractFilePath(edtOutFileName.Text);
- end;
- end;
- procedure TFaxConversionForm.RadioGroup2Click(Sender: TObject);
- begin
- if RadioGroup2.ItemIndex=0 then
- ApdFaxConverter1.Options := ApdFaxConverter1.Options - [coDoubleWidth]-[coHalfHeight]
- else if RadioGroup2.ItemIndex=1 then
- ApdFaxConverter1.Options := ApdFaxConverter1.Options +[coDoubleWidth]
- else if RadioGroup2.ItemIndex=2 then
- ApdFaxConverter1.Options := ApdFaxConverter1.Options+[coHalfHeight]
- end;
- procedure TFaxConversionForm.edtFileNameExit(Sender: TObject);
- begin
- edtOutFileName.Text := ChangeFileExt(edtFileName.Text, '.apf');
- btnConvert.Enabled := FileExists(edtFileName.Text);
- LastInDir := ExtractFilePath(edtFileName.Text);
- end;
- procedure TFaxConversionForm.btnOKClick(Sender: TObject);
- begin
- close;
- end;
- end.