unit umain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ieview, imageenview, ComCtrls, imageenio, hyieutils, iexBitmaps, hyiedefs, iesettings, iexLayers, iexRulers; type TMainForm = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; rgpFormat: TRadioGroup; Label3: TLabel; TabSheet2: TTabSheet; Label1: TLabel; edtFilename: TEdit; Label4: TLabel; cmbPaperSize: TComboBox; Label5: TLabel; cmbCompression: TComboBox; TabSheet3: TTabSheet; ImageEnView1: TImageEnView; Label2: TLabel; btnNewFile: TButton; TabSheet4: TTabSheet; Page1Next: TButton; Page2Next: TButton; Page3Next: TButton; btnRestart: TButton; btnNewAcquire: TButton; Label6: TLabel; lblCreated: TLabel; btnOpen: TButton; chkBandW: TCheckBox; procedure btnOpenClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure rgpFormatClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure Page1NextClick(Sender: TObject); procedure Page2NextClick(Sender: TObject); procedure Page3NextClick(Sender: TObject); procedure btnRestartClick(Sender: TObject); procedure btnNewFileClick(Sender: TObject); procedure btnNewAcquireClick(Sender: TObject); private { Private declarations } public { Public declarations } procedure AddPage; end; var MainForm: TMainForm; implementation uses iexWindowsFunctions; {$R *.DFM} {$R WindowsXP.RES} procedure TMainForm.FormCreate(Sender: TObject); begin rgpFormatClick( nil ); end; // Change file type procedure TMainForm.rgpFormatClick(Sender: TObject); var a: TIOPDFPaperSize; begin cmbPaperSize.Clear; if rgpFormat.ItemIndex = 0 then begin edtFilename.Text := IncludeTrailingBackslash( ExtractFilePath( Application.ExeName )) + 'Test.pdf'; for a := Low(TIOPDFPaperSize) to iepAuto do cmbPaperSize.Items.Add(IEPaperSizeToStr(a)); end else begin edtFilename.Text := IncludeTrailingBackslash( ExtractFilePath( Application.ExeName )) + 'Test.ps'; for a := Low(TIOPDFPaperSize) to iepTabloid do { iepAuto not supported for PS } cmbPaperSize.Items.Add(IEPaperSizeToStr(a)); end; cmbPaperSize.ItemIndex := 4; end; procedure TMainForm.FormActivate(Sender: TObject); begin cmbCompression.ItemIndex := 0; PageControl1.Pages[1].TabVisible := false; PageControl1.Pages[2].TabVisible := false; PageControl1.Pages[3].TabVisible := false; PageControl1.ActivePage := TabSheet1; end; // Page 1 Next procedure TMainForm.Page1NextClick(Sender: TObject); begin PageControl1.Pages[0].TabVisible := false; PageControl1.Pages[1].TabVisible := true; PageControl1.ActivePage := TabSheet2; end; // Page 2 Next procedure TMainForm.Page2NextClick(Sender: TObject); begin PageControl1.Pages[1].TabVisible := false; PageControl1.Pages[2].TabVisible := true; PageControl1.ActivePage := TabSheet3; // create file case rgpFormat.ItemIndex of 0: begin // Adobe PDF // SET SIZE ImageEnView1.IO.Params.PDF_PaperSize := IEStrToPaperSize(cmbPaperSize.Text, iepA4); // SAVE IT ImageEnView1.IO.CreatePDFFile( edtFilename.Text ); end; 1: begin // PostScript (PS) // SET SIZE ImageEnView1.IO.Params.PS_PaperSize := IEStrToPaperSize(cmbPaperSize.Text, iepA4); // SAVE IT ImageEnView1.IO.CreatePSFile( edtFilename.Text ); end; end; // ImageEnView1.Blank; end; // Page 3 Next procedure TMainForm.Page3NextClick(Sender: TObject); begin PageControl1.Pages[2].TabVisible := false; PageControl1.Pages[3].TabVisible := true; PageControl1.ActivePage := TabSheet4; // case rgpFormat.ItemIndex of 0: // Adobe PDF ImageEnView1.IO.ClosePDFFile; 1: // PostScript (PS) ImageEnView1.IO.ClosePSFile; end; end; // Another page procedure TMainForm.btnRestartClick(Sender: TObject); begin PageControl1.Pages[3].TabVisible := false; PageControl1.Pages[0].TabVisible := true; PageControl1.ActivePage := TabSheet1; end; // Add current image to the PDF/PS procedure TMainForm.AddPage; const PDFCompression: array[0..3] of TIOPDFCompression = (ioPDF_RLE, ioPDF_G3FAX2D, ioPDF_G4FAX, ioPDF_JPEG); PSCompression: array[0..3] of TIOPSCompression = (ioPS_RLE, ioPS_G3FAX2D, ioPS_G4FAX, ioPS_JPEG); begin case rgpFormat.ItemIndex of 0: begin // Adobe PDF ImageEnView1.IO.Params.PDF_Compression := PDFCompression[cmbCompression.ItemIndex]; ImageEnView1.IO.SaveToPDF; end; 1: begin // PostScript (PS) ImageEnView1.IO.Params.PS_Compression := PSCompression[cmbCompression.ItemIndex]; ImageEnView1.IO.SaveToPS; end; end; end; procedure TMainForm.btnOpenClick(Sender: TObject); begin WindowsLaunchFile( Handle, edtFilename.Text ); end; // New Page procedure TMainForm.btnNewFileClick(Sender: TObject); var filename: string; begin filename := ImageEnView1.IO.ExecuteOpenDialog('', '', false, 1, ''); if filename <> '' then begin ImageEnView1.IO.LoadFromFile(filename); if chkBandW.checked then begin // Convert the image to black/white ImageEnView1.proc.ConvertToBWOrdered; imageenview1.io.params.BitsPerSample:=1; imageenview1.io.params.SamplesPerPixel:=1; end; AddPage; end; end; // New page from scanner procedure TMainForm.btnNewAcquireClick(Sender: TObject); begin if ImageEnView1.IO.SelectAcquireSource and ImageEnView1.IO.Acquire then AddPage; end; end.