Lazarus

Other Languages => Spanish => Topic started by: esdonis on September 18, 2018, 04:56:51 pm

Title: Error al crear documento de libreoffice writer en linux
Post by: esdonis on September 18, 2018, 04:56:51 pm
Como puedo crear un documento nuevo de libreoffice writer en linux?

Cuando intento con:
libro := CreateOleObject('com.sun.star.ServiceManager');

Me da error ya que no me permite usar la clase ComObj en linux

Title: Re: Error al crear documento de libreoffice writer en linux
Post by: RayoGlauco on September 18, 2018, 06:21:53 pm
Hola, esdonis

Según la wiki de Lazarus y FreePascal: http://wiki.freepascal.org/Office_Automation (http://wiki.freepascal.org/Office_Automation) no hay actualmente una manera fácil de usar LibreOffice/OpenOffice en sistemas que no sean Windows. Es una lástima  :(
Title: Re: Error al crear documento de libreoffice writer en linux
Post by: lucamar on September 18, 2018, 08:41:05 pm
La forma usual de interactuar con Open/LibreOffice es a través del UNO bridge o usando los interfaz inter-aplicaciones del sistema (IBus, DBus, etc.).

Otra posibilidad, específica de Lazarus: hay librerías que te permiten crear el documento y exportarlo en el formato adecuado. No recuerdo el nombre exacto---que seguramente depende de lo que quieras crear---pero busca en el wiki y la(s) encontrarás: fpvectorial? fpspreadsheet? alguna más?

Lamento no ser de gran ayuda pero espero que este poco te sirva de algo ... :-[

ETA: ¡Ajá! Lo encontré: fpvectorial - Text Document Support (http://wiki.freepascal.org/fpvectorial_-_Text_Document_Support)
Quote
The fpvectorial library can be used to create formatted text files in a variety of file formats. Current file support includes Open Document XML (odt) and Open Office XML (docx). The files can be opened in a variety of products including Microsoft Office, OpenOffice and LibreOffice.
Title: Re: Error al crear documento de libreoffice writer en linux
Post by: MacWomble on September 18, 2018, 09:19:07 pm
Yo uso plantillas Writer con marcadores de posición. Luego, esta plantilla se desempaqueta y se reemplazan los marcadores de posición en los archivos, luego vuelvo a empaquetar todo y lo guardo con un nombre nuevo. Abro este nuevo documento en LibreOffice.

Code: Pascal  [Select]
  1.         UnZipper := TUnZipper.Create;
  2.         try
  3.           UnZipper.FileName := VorlageDatei;
  4.           UnZipper.OutputPath := TempDir;
  5.           UnZipper.Examine;
  6.           UnZipper.UnZipAllFiles;
  7.         finally
  8.           UnZipper.Free;
  9.         end;
  10.  
  11.         //Temp-Dokument Platzhalter ersetzen
  12.  
  13.         ReplaceInODTFile(TempDir + PathDelim + 'content.xml', Adressblock);
  14.         ReplaceInODTFile(TempDir + PathDelim + 'styles.xml', Adressblock);
  15.  
  16.         //Temp-Dokument nach Ziel-Dokument packen
  17.  
  18.         Zipper := TZipper.Create;
  19.         try
  20.           Zipper.Filename := ZielDatei;
  21.           Zipper.Clear;
  22.           ZEntries := TZipFileEntries.Create(TZipFileEntry);
  23.           if DirPathExists(TempDir) then
  24.             try
  25.               ZipFileList := FindAllFiles(TempDir);
  26.               for i := 0 to ZipFileList.Count - 1 do
  27.                 ZEntries.AddFileEntry(ZipFileList[i],
  28.                   CreateRelativePath(ZipFileList[i], TempDir));
  29.             finally
  30.               ZipFileList.Free;
  31.             end;
  32.           if (ZEntries.Count > 0) then
  33.             Zipper.ZipFiles(ZEntries);
  34.           DeleteDirectory(TempDir, False);
  35.         finally
  36.           FreeAndNil(ZEntries);
  37.           Zipper.Free;
  38.         end;
  39.         OpenDocument(ZielDatei);      
  40.