PDA

Ver la Versión Completa : Convertir Jpeg a PDF durante el scaneo


shoulder
27-05-2015, 23:03:00
Hola dentro de mi aplicacion mediante los componentes Twain scanneo (pero lo hace en bmp) no encontre la forma que lo haga directamente en PDF, y lo reconvierto con el Texportqr a PDF, pero pierde bastante calidad y los documentos no se visualizan tan bien como tendrian que verse. hay otra forma de reconvertir con codigo o con los componentes Twain?.
Lo que hago es esto:



Image.SaveToFile('c:\carga\'+trim(edit1.text)+'.bmp');

QuickReport1:=TQuickReport1.Create(self);

quickreport1.QRImage1.Picture.LoadFromFile('c:\carga\'+trim(edit1.text)+'.bmp');


exportqr1.Report := quickreport1;

exportqr1.ExportQRPDF('c:\carga\'+trim(edit1.text),true);

AzidRain
29-05-2015, 00:23:54
Los filtros de exportación de QReport son una vacilada ya que no generan documentos decentes y siempre tienen algún detalle. Lo que yo te recomiendo es usar una impresora virtual para general el PDF. Uno muy sencillo y sobre todo libre es PDFCreator que incluso te permite mediante OLE generar los pdfs perfectamente sin que el usuario interventa. Puedes controlar toda la operación desde Delphi. Echale un ojito.

shoulder
03-06-2015, 21:32:02
Primero Gracias por responder, seteo en el qreport el pdfcreator y me lo coloca en el printdialog pero no hay forma que pueda setaer donde tiene que grabarlo. uso delphi7 windows 7 paso el codigo no encuentro el error.



var
Image: TBitmap;
i:integer;
a: String;
reg : TRegistry;
begin

reg := TRegistry.Create(KEY_READ);
reg.Access := KEY_WRITE;
reg.RootKey := HKEY_CURRENT_USER;
// if not reg.OpenKey('Software\PDFCreator\program', false) then
if not reg.OpenKey('Software\PDFCreator.net', false) then
begin
showmessage('Can''t find ' + '''HKEY_CURRENT_USER\Software\PDFCreator\program''' );
exit;
end;

///
reg.WriteString('Autosave', '1');
reg.WriteString('UseAutosaveDirectory', '1');
reg.WriteString('AutosaveDirectory', 'C:\control\scanner'); // directorio de salida
reg.WriteString('AutosaveFilename', 'xx.pdf'); // filename here
reg.WriteString('AutosaveFormat', '0');


if GetCurrent(Image) then
begin
Image.SaveToFile('c:\certificacion\scanner\'+trim(edit1.text)+'.bmp');

QuickReport1:=TQuickReport1.Create(self);

quickreport1.QRImage1.Picture.LoadFromFile('c:\control\scanner\'+trim(edit1.text)+'.bmp');
quickreport1.QRImage1.Repaint;
quickreport1.Prepare;

QuickReport1.Printersettings.printerindex := printer.printers.indexof('PDFcreator') ;

quickreport1.Preview;

QuickReport1.Free;
QuickReport1 := nil;

// BorrarArchivo('c:\control\scanner\'+edit1.text+'.bmp');
edit1.Text := docu;
showmessage('Archivo Scaneado en PDF');

end;

ecfisa
03-06-2015, 22:19:15
Hola Shoulder.
Primero Gracias por responder, seteo en el qreport el pdfcreator y me lo coloca en el printdialog pero no hay forma que pueda setaer donde tiene que grabarlo.
Para configurar la ruta de salida, desde el menu de PDFCreator:

Impresoras -> Opciones -> Auto-guardado -> Usar este directiorio para auto-guardado (tildar) y escribir la ruta debajo.


Saludos :)

ecfisa
04-06-2015, 00:21:36
Hola de nuevo.

Y si lo deseas hacer desde Delphi:

...
uses Registry;

procedure SetPDFCAutoSavePath(NewPath: string);
begin
with TRegistry.Create do
try
NewPath := IncludeTrailingPathDelimiter(NewPath);
RootKey := HKEY_CURRENT_USER;
if OpenKey('\Software\PDFCreator\Program', True) then
begin
if ReadString('AutosaveDirectory') <> NewPath then
WriteString('AutosaveDirectory', NewPath);
CloseKey;
end;
finally
Free;
end;
end;


Ejemplo de uso:

procedure TForm1.Button1Click(Sender: TObject);
begin
SetPDFCAutoSavePath(Edit1.Text);
end;


Saludos :)

shoulder
05-06-2015, 05:58:16
Hola Gracias, funciono lo unico hice cambios porque la version 2.1 del pdfcreator es distinta, lo mas importante es la doble //.



with TRegistry.Create do
try
NewPath := 'c:\\control\\factura';
RootKey := HKEY_CURRENT_USER;
if OpenKey('\Software\PDFCreator.net\settings\ConversionProfiles\0', True) then
begin
WriteString('FileNameTemplate','fotografia');
if OpenKey('\Software\PDFCreator.net\settings\ConversionProfiles\0\AutoSave', True) then
begin
WriteString('TargetDirectory', NewPath);
WriteString('Enabled', 'True');
end; /
CloseKey;
end;
finally
Free;
end;