2017-06-30 8 views
1

J'essaie de convertir des documents (.docx/.xlsx/.pptx) en PDF en utilisant JOD Converter. J'utilise OpenOffice 4.1.2 sur Centos 7. Mon problème est, je reçois une utilisation CPU constante de 100% pendant que je convertis le fichier, et cela a un impact sur les performances de l'ensemble de la machine. J'ai essayé toutes les options possibles dans les options de la ligne de commande, mais, malheureusement, je n'ai pas été en mesure d'atténuer ce problème. J'ai cherché sur beaucoup de forums, et j'ai constaté que beaucoup d'autres personnes font face au même problème, cependant, il n'y a pas de solution. Grâce à mes lectures, je réalise que cela pourrait être dû à des problèmes de fuite de mémoire dans OpenOffice. Quelqu'un peut-il m'aider s'il vous plaît à résoudre ou au moins atténuer cela? Voici la commande que j'utilise pour générer l'instance OpenOffice.Utilisation du processeur 100% en utilisant OpenOffice4

/opt/openoffice4/program/soffice.bin -accept=socket,host=127.0.0.1,port=8016;urp; -env:UserInstallation=file:///tmp/.jodconverter_socket_host-127.0.0.1_port-8016 -headless -nocrashreport -nodefault -nofirststartwizard -nolockcheck -nologo -norestore 

Le code que je utilise pour convertir les fichiers est la suivante: package org.samples.docxconverters.jodconverter.pdf;

import java.io.File; 

import org.apache.commons.io.FilenameUtils; 
import org.artofsolving.jodconverter.OfficeDocumentConverter; 
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration; 
import org.artofsolving.jodconverter.office.OfficeManager; 

public class Word2PdfJod { 

    public static void main(String[] args) { 

     // 1) Start LibreOffice in headless mode. 
     OfficeManager officeManager = null; 
     try { 
      officeManager = new DefaultOfficeManagerConfiguration() 
       .setOfficeHome(new File("/Applications/OpenOffice.app/Contents/")).buildOfficeManager(); 
      officeManager.start(); 

      // 2) Create JODConverter converter 
      OfficeDocumentConverter converter = new OfficeDocumentConverter(
        officeManager); 

      // 3) Create PDF 
      createPDF(converter); 

     } finally { 
      // 4) Stop OpenOffice in headless mode. 
      if (officeManager != null) { 
       officeManager.stop(); 
      } 
     } 
    } 

    private static void createPDF(OfficeDocumentConverter converter) { 
     try { 
      long start = System.currentTimeMillis(); 
      String src_file = "/Users/Aman/Documents/WindowsData/DocumentConversionPoc/Powerpoint2Pdf/JODConverterV3/Sample_pptx_files/AdeemSample2.pptx"; 

      System.out.println(src_file.substring(0, src_file.lastIndexOf(".")) + "_" + FilenameUtils.getExtension(src_file)); 
      //Actual Conversion 

      converter.convert(new File(src_file), new File(src_file.substring(0, src_file.lastIndexOf(".")) + "_" 
         + FilenameUtils.getExtension(src_file) +"_Jod.pdf")); 
      System.out.println("Time Taken in conversion - "+ (System.currentTimeMillis() - start) + "ms"); 


     } catch (Throwable e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Et les pots pertinents peuvent être téléchargés à partir de: https://drive.google.com/file/d/0B4hS5IGxGOh9OE5Ca0RlbTdVclU/view?usp=sharing

+0

éviter JOD Converter et imprimer les documents avec Ghostscript – deblocker

+0

@deblocker problème est avec OpenOffice/LibreOffice et pas avec JOD. Pour info, j'ai déjà essayé Ghostscript ce n'est pas utile. Il décompose ensuite la conversion en 2 parties Doc -> PostScript -> PDF. Il augmente le temps de conversion par une bonne marge, ce que nous voulons vraiment garder bas – Geek

+0

j'ai fait dans le passé beaucoup d'impression de masse pdf, bien que pas avec votre version OO, et GS a été pour moi le meilleur choix. J'ai peur, si cela ne vous aide pas. bonne chance! – deblocker

Répondre

0

En réduisant le nombre de cœurs votre application peut utiliser, vous pouvez empêcher le système d'être verrouillé:

Process.GetCurrentProcess().ProcessorAffinity = (System.IntPtr)2; 

To set the affinity of CPUs using C#