BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/InputOutput/PDFBuilder/umain.pas

223 lines
5.5 KiB
Plaintext

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.