Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-11-2007
nelem nelem is offline
Miembro
 
Registrado: sep 2007
Posts: 50
Poder: 17
nelem Va por buen camino
de word a pdf

Hola estoy intentando pasar un documento word a pdf.

Muchas gracias
Responder Con Cita
  #2  
Antiguo 05-11-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Yo lo hago con open office, desde delphi, mediante COM (a Open Office)
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #3  
Antiguo 05-11-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Tambien puedes instalar un controlador de impresora que hay por ahí que en vez de imprimir lo que hace es pasarlo a PDF.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 05-11-2007 a las 21:49:36.
Responder Con Cita
  #4  
Antiguo 05-11-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Otra opción es usar algunas de las páginas en Internet que te lo convierten OnLine (PDFOnline, por ejemplo).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 05-11-2007
nelem nelem is offline
Miembro
 
Registrado: sep 2007
Posts: 50
Poder: 17
nelem Va por buen camino
Hola D&W me podrias escribir algo del códigop o explicarme un poco mas es que no se a lo que te refieres.
Responder Con Cita
  #6  
Antiguo 05-11-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Claro, ahí va:
Primero crea un unidad aparte....
Código Delphi [-]
unit ooo_Save2PDF;

interface

uses variants, ComObj, windows, SysUtils, StrUtils, ActiveX;

type
  TOOOWriterEx = class(TObject)
  private
    fOpenOffice : Variant;
    fDocument : Variant;
    fConnected : boolean;
    fDocumentOpened : boolean;
    FOwnCreatedOLE : Boolean;
    fDesktop : Variant;
    function MakePropertyValue(PropName:string; PropValue:variant):variant;
  public
     Constructor Create;
     destructor Destroy; override;
     Property OLECreated : Boolean read FOwnCreatedOLE;
     function Connect : boolean;
     procedure Disconnect;
     Procedure CloseActiveDoc;
     function OpenDocument(Filename:string; invisible : Boolean = true):boolean;
     Function SaveToPDF(pFileName: string):String;
     Function SaveToHTML(FileName:String):String;
     procedure SaveDocument(FileName: string);
     procedure CloseDocument;
     Function ConvertToPDF(DocumentFile, PDFFile : String; invisible : Boolean = true):String;
     Function ConvertToHTML(DocumentFile, HTMLFile : String; invisible : Boolean = true):String;
  end;

implementation
Uses Dialogs;

{ TOOOWriterEX }

procedure TOOoWriterEx.CloseDocument;
begin
    if fDocumentOpened then
    begin
       fDocument.Close(false);

       fDocumentOpened := false;
       fDocument := Unassigned;

       fDesktop.Terminate;
       fDesktop := UnAssigned;
    end;
end;

Procedure TOOoWriterEx.CloseActiveDoc;
begin
  if fDocumentOpened then
      fDocument.Close(false);
end;

function TOOoWriterEx.Connect: boolean;
begin
    if  VarIsEmpty(fOpenOffice) then
      Begin
     {   Try
        fOpenOffice := GetActiveOleObject('com.sun.star.ServiceManager');
        FOwnCreatedOLE := False;
        Except   }
          Try
          fOpenOffice := CreateOleObject('com.sun.star.ServiceManager');
          FOwnCreatedOLE := True;
          Except
            Begin
            ShowMessage('No se ha podido iniciar el objeto OLE para la conección a OpenOffice.'+#13+
              'Verifique que el sitema OpenOffice esté instalado adecuadamente en su equipo.');
              Exit;
            end;
          end; // fin de try
       // end;
      end;

    fConnected := not (VarIsEmpty(fOpenOffice) or VarIsNull(fOpenOffice));
    Result := fConnected;
end;

constructor TOOoWriterEx.Create;
begin
  inherited;
  CoInitialize(nil);
end;

destructor TOOoWriterEx.Destroy;
begin
  CoUninitialize;
  inherited;
end;

procedure TOOoWriterEx.Disconnect;
begin
    if fDocumentOpened then
       CloseDocument;

    fConnected := false;
    fOpenOffice := Unassigned;
end;

function TOOoWriterEx.MakePropertyValue(PropName: string;
  PropValue: variant): variant;
var
   Struct: variant;
begin
    Struct := fOpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
    Struct.Name := PropName;
    Struct.Value := PropValue;
    Result := Struct;
end;

function TOOoWriterEx.OpenDocument(Filename: string; invisible : Boolean = true): boolean;
var
   wProperties : Variant;
begin
   if not fConnected then
      abort;
   fDesktop := fOpenOffice.createInstance('com.sun.star.frame.Desktop');
   wProperties := VarArrayCreate([0, 0], varVariant);
   wProperties[0] := MakePropertyValue('Hidden', invisible);

   fDocument := fDesktop.loadComponentFromURL(  'file:///'+ AnsiReplaceText(ExpandFileName(FileName),'\','/')
       , ' _blank', 8, wProperties);
       
   fDocumentOpened := not (VarIsEmpty(fDocument) or VarIsNull(fDocument));
   result := fDocumentOpened;
end;

Function TOOoWriterEx.SaveToPDF(pFileName: string):String;
var
   wProperties: variant;
begin
   Result := '';
   if not (fConnected and fDocumentOpened) then
      abort;

   wProperties := VarArrayCreate([0, 0], varVariant);
   wProperties[0] := MakePropertyValue('FilterName', 'writer_pdf_Export');

  try
   fDocument.StoreToURL('file:///'+ AnsiReplaceText(ExpandFileName(pFileName),'\','/'), wProperties);
   except on E: EOleException do
      Result := E.Message;
  end;

end;

Function TOOoWriterEx.SaveToHTML(FileName:String):String;
var
   wProperties: variant;
begin
   if not (fConnected and fDocumentOpened) then
      abort;

   wProperties := VarArrayCreate([0, 0], varVariant);
   wProperties[0] := MakePropertyValue('FilterName', 'HTML (StarWriter)');

  try
   fDocument.StoreToURL('file:///'+ AnsiReplaceText(ExpandFileName(FileName),'\','/'), wProperties);
   except on E: EOleException do
      Result := E.Message;
  end;
end;

procedure TOOoWriterEx.SaveDocument(FileName: string);
var
   wProperties: variant;
begin
   if not (fConnected and fDocumentOpened) then
      abort;

   wProperties := VarArrayCreate([0, 0], varVariant);
   wProperties[0] := MakePropertyValue('FilterName', '');

   fDocument.StoreToURL('file:///'+ AnsiReplaceText(FileName,'\','/'), wProperties);
end;

Function TOOoWriterEx.ConvertToPDF(DocumentFile, PDFFile : String; invisible : Boolean = true):String;
Begin
Result := '';
  If Not fConnected Then Connect;
  If OpenDocument(DocumentFile) Then
    Result := SaveToPDF(PDFFile);
  CloseActiveDoc;
end;

Function TOOoWriterEx.ConvertToHTML(DocumentFile, HTMLFile : String; invisible : Boolean = true):String;
Begin
Result := '';
  If Not fConnected Then Connect;
  If OpenDocument(DocumentFile) Then
    Result := SaveToHTML(HTMLFile);
  CloseActiveDoc;
end;

end.

Para utilizarlo:
Código Delphi [-]
Procedure Convertir_aPDF(wordFile, PDFFile:TFileName);
var
FOOOInterface : TOOoWriterEx;
Begin
Try
FOOOInterface := TOOoWriterEx.Create;
FOOOInterface.ConvertToPDF(wordFile,PDFFile);

  If FOOOInterface.OLECreated Then
    Begin
    FOOOInterface.CloseDocument;
    FOOOInterface.Disconnect;
    end;
    
Finally
FOOOInterface.Free;
end;
end;

Ese es un ejemplo, no estoy seguro de que servirá porque es una extracción rápida del código que utilizo en mis programas, pero pruebalo.

Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #7  
Antiguo 05-11-2007
nelem nelem is offline
Miembro
 
Registrado: sep 2007
Posts: 50
Poder: 17
nelem Va por buen camino
Muchisimas gracias ya te contare.
Responder Con Cita
  #8  
Antiguo 06-11-2007
nelem nelem is offline
Miembro
 
Registrado: sep 2007
Posts: 50
Poder: 17
nelem Va por buen camino
Gracias por la ayuda

Ya lo hemos estado probando y funciona todo OK. Muchas gracias por tu ayuda
Responder Con Cita
Respuesta



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
modificar documento word sin el word instalado joaquinmol Servers 0 30-03-2005 19:58:54
Diccionario de word sergio_015 Varios 2 25-03-2004 16:49:40
De QR a Word NuncaMas Impresión 9 05-03-2004 11:55:21
De Word a Txt TomasCampeon Servers 1 04-03-2004 23:37:46
De QRP a WORD PaulaG Impresión 1 14-06-2003 22:26:31


La franja horaria es GMT +2. Ahora son las 04:36:29.


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