Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2011
cslbcn cslbcn is offline
Miembro
 
Registrado: jul 2008
Posts: 60
Poder: 16
cslbcn Va por buen camino
Lightbulb Crear PDFs

Hola. He estado buscando por google como crear un PDF en Delphi. Me he bajado el PDF Creator Pilot (http://www.colorpilot.com/pdflibrary.html) y funciona perfectamente.

He creado un PDF con texto, imagenes, etc. Lo malo es que la librería es una demo y en cada PDF creado sale una marca de agua muy molesta... La licencia es muy cara y me preguntaba si conocéis de otras librería gratuitas para poder imprimir documentos en PDF.

Gracias y saludos.
Responder Con Cita
  #2  
Antiguo 16-06-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Usa pdfcreator, es libre, y no tendrás esas molestias.
Responder Con Cita
  #3  
Antiguo 16-06-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
Hola.

Si no me equivoco el pdfcreator es una impresora virtual para generar pdfs pero no lo puedes usar con delphi.

Hace un tiempo yo estuve con este tema y probé unos cuantos componentes para delphi para generar pdfs y ninguno funcionaba correctamente. Al final me decanté por comprar un componente que se llama edocengine que es relativamente barato y bastante completo.

http://www.gnostice.com/eDocEngine_V...show=downloads

Si de todas formas quieres probar con algunos componentes gratuitos aquí tienes un par de ellos pero aunque aparentemente funcionan de forma correcta tienen fallos que me hicieron desestimarlos en su momento.

http://www.linares.net/wxpdfcom/
http://www.roledata.com/rolepdf.htm

Saludos
Responder Con Cita
  #4  
Antiguo 16-06-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por newtron Ver Mensaje
Si no me equivoco el pdfcreator es una impresora virtual para generar pdfs pero no lo puedes usar con delphi.
Sí, tiene opción a llamar a un ejecutable con parámetros para poder crearlos.
Por ejemplo, en este hilo se habló de ese tema.
Aquí también se habló bastante sobre eso.
Incluso se puede crear un pdf de un .doc tal y como explican en http://coding.derkeiler.com
.
Responder Con Cita
  #5  
Antiguo 16-06-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
¡Vaya! ¿y ahora me lo dices?

Le he estado echando un vistazo a los posts pero me resulta demasiado complicado todo aparte de tener que ir instalando el pdfcreator en las máquinas de los clientes.

El componente que os comento vale 199$ (no es demasiado) y aparte de exportar a pdf puedes hacerlo a un montón de formatos más, word, excel, jpg... etc, pero eso si, tienes que imprimir "a pelo" en el canvas de la impresora, cosa que a mi no me ha venido de grande porque ya lo hago de forma normal para imprimir listados y formularios con nuestro reporteador particular.

Saludos
Responder Con Cita
  #6  
Antiguo 16-06-2011
Avatar de oesqueda
oesqueda oesqueda is offline
Miembro
 
Registrado: dic 2007
Ubicación: Guadalajara, Mexico
Posts: 66
Poder: 17
oesqueda Va por buen camino
Tengo una pregunta mas bien, que usas para mandar imprimir, algun reporteador o lo mandas directamente a la impresora.

Porque si usas un reporteador:

1. Guarda el nombre de la impresora PDF
2. Cuando vayas a imprimir le indicas al reporteador la impresora PDF
3. Mandas la impresion

Si lo mandas tu:

1. Guarda el nombre de la impresora PDF
2. Cambias la impresora por default
3. Mandas la impresion

para cambiar la impresora por defualt en codigo:

http://www.swissdelphicenter.ch/torr...ode.php?id=660
http://delphi.about.com/cs/adptips20...ltip1001_5.htm

Si lo que necesitas es tu especificar el nombre esa es otra historia, creo que necesitas ser mas preciso en tu pregunta y darnos mas informacion

Te paso otro url donde vienen componentes para mandar a PDF

http://www.torry.net/pages.php?id=1334
__________________
OEsqueda

Última edición por oesqueda fecha: 16-06-2011 a las 17:28:00. Razón: Me falto un URL
Responder Con Cita
  #7  
Antiguo 16-06-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Incluso se puede crear un pdf de un .doc
Para comodidad de los lectores, copio y pego aquí el código con indentación y resaltado :

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ActiveX, ComObj;

type
TForm1 = class(TForm)
  Edit1: TEdit;
  Button1: TButton;
  procedure Button1Click(Sender: TObject);
private
  { Private declarations }
  PDFCreator, MSWord: OleVariant;

  optUseAutosave, optUseAutoSaveDirectory, optAutosaveFormat,
  optPDFColorsColorModel: Integer;
  optAutosaveDirectory, optAutosaveFilename: String;

  // Security Options
  optPDFUseSecurity, optPDFHighEncryption, optPDFOwnerPass: Integer;
  optPDFDisallowCopy, optPDFDisallowModifyAnnotations,
  optPDFDisallowModifyContents, optPDFDisallowPrinting: Integer;
  optPDFAllowAssembly, optPDFAllowDegradedPrinting, optPDFAllowFillIn,
  optPDFAllowScreenReaders: Integer;
  optPDFOwnerPasswordString: String;

  procedure StorePDFOptions;
  procedure SetPDFOptions(const filename, ownerpass: String);
  procedure RestorePDFOptions;
public
  { Public declarations }
end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
  output_filename: String = 'D:\tmp\test.pdf';
  owner_password: String = 'ownerpass';
var
  c, printJobCount: Integer;
  optPrintBackground: Boolean;
begin
  PDFCreator := CreateOLEObject('PDFCreator.clsPDFCreator');

  PDFCreator.cStart('/NoProcessingAtStartup');

  StorePDFOptions;
  SetPDFOptions(output_filename, owner_password);

  MSWord := CreateOleObject('Word.Application');
  try
    MSWord.DisplayAlerts := 0;

    MSword.Documents.Open(Edit1.Text);

    MSWord.ActiveDocument.TrackRevisions := false;
    optPrintBackground := MSWord.Options.PrintBackground;
    if not optPrintBackground then
      MSWord.Options.PrintBackground := True;

    MSWord.ActiveWindow.View.ShowRevisionsAndComments := False;
    MSWord.Options.WarnBeforeSavingPrintingSendingMarkup := false;

    printJobCount := PDFCreator.cCountOfPrintJobs;
    /// ------------------------------------------
    /// Have PDFCreator wait for pages
    PDFCreator.cPrinterStop := true;

    MSWord.ActiveDocument.PrintoutOld;

    /// we don't want to continue on right after telling word to print,
    because it can cause problems
    while MSWord.BackgroundPrintingStatus <> 0 do
    begin
      Sleep(10);
      Application.ProcessMessages;
    end;

    /// Tell PDFCreator we're done printing pages.
    PDFCreator.cPrinterStop := false;
    /// ------------------------------------------

    /// now wait for PDFCreator to finish
    c := PDFCreator.cCountOfPrintJobs;
    while c > printJobCount do
    begin
      Sleep(10);
      Application.ProcessMessages;
      c := PDFCreator.cCountOfPrintJobs;
    end;

    MSword.ActiveDocument.Close(SaveChanges := 0);
  finally
    VarClear(MSWord);
  end;

  RestorePDFOptions;
  VarClear(PDFCreator);
end;

procedure TForm1.StorePDFOptions;
begin
  // save the current options to put back when we're finished.
  optUseAutosave := PDFCreator.cOption['UseAutosave'];
  optUseAutosaveDirectory := PDFCreator.cOption['UseAutosaveDirectory'];
  optAutosaveDirectory := PDFCreator.cOption['AutosaveDirectory'];
  optAutosaveFilename := PDFCreator.cOption['AutosaveFilename'];
  optAutosaveFormat := PDFCreator.cOption['AutosaveFormat'];
  optPDFColorsColorModel := PDFCreator.cOption['PDFColorsColorModel'];

  // security options
  optPDFUseSecurity := PDFCreator.cOption['PDFUseSecurity'];
  optPDFHighEncryption := PDFCreator.cOption['PDFHighEncryption'];
  optPDFOwnerPass := PDFCreator.cOption['PDFOwnerPass'];
  optPDFOwnerPasswordString :=
  PDFCreator.cOption['PDFOwnerPasswordString'];
  optPDFDisallowCopy := PDFCreator.cOption['PDFDisallowCopy'];
  optPDFDisallowModifyAnnotations :=
  PDFCreator.cOption['PDFDisallowModifyAnnotations'];
  optPDFDisallowModifyContents :=
  PDFCreator.cOption['PDFDisallowModifyContents'];
  optPDFDisallowPrinting := PDFCreator.cOption['PDFDisallowPrinting'];
  optPDFAllowAssembly := PDFCreator.cOption['PDFAllowAssembly'];
  optPDFAllowDegradedPrinting :=
  PDFCreator.cOption['PDFAllowDegradedPrinting'];
  optPDFAllowFillIn := PDFCreator.cOption['PDFAllowFillIn'];
  optPDFAllowScreenReaders := PDFCreator.cOption['PDFAllowScreenReaders'];
end;

procedure TForm1.SetPDFOptions(const filename, ownerpass: String);
begin
  // set the options we want, auto-save PDF with specific filename
  PDFCreator.cOption('UseAutosave') := 1;
  PDFCreator.cOption('UseAutosaveDirectory') := 1;
  PDFCreator.cOption('AutosaveDirectory') := ExtractFilePath(filename);
  PDFCreator.cOption('AutosaveFilename') := ExtractFileName(filename);
  PDFCreator.cOption('AutosaveFormat') := 0; // PDF format
  PDFCreator.cOption('PDFColorsColorModel') := 0; // RGB format

  if Trim(ownerpass) <> '' then
  begin
    PDFCreator.cOption('PDFUseSecurity') := 1;
    PDFCreator.cOption('PDFHighEncryption') := 1;
    PDFCreator.cOption('PDFOwnerPass') := 1;
    PDFCreator.cOption('PDFOwnerPasswordString') := ownerpass;
    PDFCreator.cOption('PDFDisallowCopy') := 0;
    PDFCreator.cOption('PDFDisallowModifyAnnotations') := 1;
    PDFCreator.cOption('PDFDisallowModifyContents') := 1;
    PDFCreator.cOption('PDFDisallowPrinting') := 0;
    PDFCreator.cOption('PDFAllowAssembly') := 0;
    PDFCreator.cOption('PDFAllowDegradedPrinting') := 0;
    PDFCreator.cOption('PDFAllowFillIn') := 0;
    PDFCreator.cOption('PDFAllowScreenReaders') := 0;
  end;

  PDFCreator.cSaveOptions;
end;

procedure TForm1.RestorePDFOptions;
begin
  // reset user's options
  PDFCreator.cOption('UseAutosave') := optUseAutosave;
  PDFCreator.cOption('UseAutosaveDirectory') := optUseAutosaveDirectory;
  PDFCreator.cOption('AutosaveDirectory') := optAutosaveDirectory;
  PDFCreator.cOption('AutosaveFilename') := optAutosaveFilename;
  PDFCreator.cOption('AutosaveFormat') := optAutosaveFormat;
  PDFCreator.cOption('PDFColorsColorModel') := optPDFColorsColorModel;

  // security options
  PDFCreator.cOption('PDFUseSecurity') := optPDFUseSecurity;
  PDFCreator.cOption('PDFHighEncryption') := optPDFHighEncryption;
  PDFCreator.cOption('PDFOwnerPass') := optPDFOwnerPass;
  PDFCreator.cOption('PDFOwnerPasswordString') :=
  optPDFOwnerPasswordString;
  PDFCreator.cOption('PDFDisallowCopy') := optPDFDisallowCopy;
  PDFCreator.cOption('PDFDisallowModifyAnnotations') :=
  optPDFDisallowModifyAnnotations;
  PDFCreator.cOption('PDFDisallowModifyContents') :=
  optPDFDisallowModifyContents;
  PDFCreator.cOption('PDFDisallowPrinting') := optPDFDisallowPrinting;
  PDFCreator.cOption('PDFAllowAssembly') := optPDFAllowAssembly;
  PDFCreator.cOption('PDFAllowDegradedPrinting') :=
  optPDFAllowDegradedPrinting;
  PDFCreator.cOption('PDFAllowFillIn') := optPDFAllowFillIn;
  PDFCreator.cOption('PDFAllowScreenReaders') := optPDFAllowScreenReaders;

  PDFCreator.cSaveOptions;

  Sleep(100);
end;

end.
Responder Con Cita
  #8  
Antiguo 24-06-2011
Avatar de Cowky
Cowky Cowky is offline
Registrado
NULL
 
Registrado: abr 2011
Posts: 7
Poder: 0
Cowky Va por buen camino
mas sencillo, bajate una impresora virtual,

y la podes usas desde cualquier programa.

pd: yo uso la Bullzip PDF Printer
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Formularios Intraweb y pdfs JarLem Internet 2 10-12-2008 18:38:55
Exportando QRPs a PDFs ruedabeat2003 Impresión 5 24-05-2007 11:50:51
Crear PDFs desde Google? marcoszorrilla Noticias 2 18-10-2006 09:29:34
se pueden crear pdfs en delphi??? MiGuEJeReZ Varios 3 04-07-2006 18:10:55
Componente que transforme PDFs rsotolongo Varios 0 03-01-2005 19:48:42


La franja horaria es GMT +2. Ahora son las 21:01:32.


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
Copyright 1996-2007 Club Delphi