Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Convertir Jpeg a PDF durante el scaneo (https://www.clubdelphi.com/foros/showthread.php?t=88370)

shoulder 27-05-2015 23:03:00

Convertir Jpeg a PDF durante el scaneo
 
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:

Código Delphi [-]

 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

Pdfcreator
 
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.


Código Delphi [-]
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.
Cita:

Empezado por shoulder (Mensaje 492849)
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:
Código 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:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  SetPDFCAutoSavePath(Edit1.Text);
end;

Saludos :)

shoulder 05-06-2015 05:58:16

Pdfcreator
 
Hola Gracias, funciono lo unico hice cambios porque la version 2.1 del pdfcreator es distinta, lo mas importante es la doble //.

Código Delphi [-]

 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;


La franja horaria es GMT +2. Ahora son las 17:05:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi