Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Impresión
Register FAQ Members List Calendar Guía de estilo Today's Posts

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 16/06/2011
cslbcn cslbcn is offline
Miembro
 
Join Date: Jul 2008
Posts: 60
Poder: 19
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.
Reply With Quote
  #2  
Old 16/06/2011
Casimiro Noteví's Avatar
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Join Date: Sep 2004
Location: En algún lugar.
Posts: 32,682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Usa pdfcreator, es libre, y no tendrás esas molestias.
Reply With Quote
  #3  
Old 16/06/2011
newtron's Avatar
[newtron] newtron is offline
Membrillo Premium
 
Join Date: Apr 2007
Location: Motril, Granada
Posts: 4,216
Poder: 24
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
Reply With Quote
  #4  
Old 16/06/2011
Casimiro Noteví's Avatar
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Join Date: Sep 2004
Location: En algún lugar.
Posts: 32,682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Quote:
Originally Posted by newtron View Post
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
.
Reply With Quote
  #5  
Old 16/06/2011
newtron's Avatar
[newtron] newtron is offline
Membrillo Premium
 
Join Date: Apr 2007
Location: Motril, Granada
Posts: 4,216
Poder: 24
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
Reply With Quote
  #6  
Old 16/06/2011
oesqueda's Avatar
oesqueda oesqueda is offline
Miembro
 
Join Date: Dec 2007
Location: Guadalajara, Mexico
Posts: 66
Poder: 19
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

Last edited by oesqueda : 16/06/2011 at 16:28. Reason: Me falto un URL
Reply With Quote
  #7  
Old 16/06/2011
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: 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
Quote:
Originally Posted by Casimiro Notevi View Post
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.
Reply With Quote
  #8  
Old 24/06/2011
Cowky's Avatar
Cowky Cowky is offline
Registrado
NULL
 
Join Date: Apr 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
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Formularios Intraweb y pdfs JarLem Internet 2 10/12/2008 17:38
Exportando QRPs a PDFs ruedabeat2003 Impresión 5 24/05/2007 10:50
Crear PDFs desde Google? marcoszorrilla Noticias 2 18/10/2006 08:29
se pueden crear pdfs en delphi??? MiGuEJeReZ Varios 3 04/07/2006 17:10
Componente que transforme PDFs rsotolongo Varios 0 03/01/2005 18:48


All times are GMT +2. The time now is 05:30.


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