3

J'écris un programme en Java (j'utilise Ubuntu). J'utilise Jodconverter pour convertir le document en PDF. Je dois convertir le document en mode paysage mais j'ai lu que Jodconverter ne supporte pas les changements d'orientation. J'ai aussi essayé avec OpenOffice API mais je suis confronté au même problème.Comment convertir un document en mode paysage à l'aide d'une bibliothèque Java?

Y a-t-il une bibliothèque Java qui convertit en mode paysage?

Répondre

0

Exporter vers PDF, puis utiliser une bibliothèque PDF comme PDFbox pour faire pivoter les pages de 90 degrés. Essayez PDPage.setRotation(int) sur toutes les pages (PDDocument.getDocumentCatalog().getAllPages()).

+0

J'ai essayé PDFBox lib mais il tourne la page .... Mais je dois changer l'orientation de la page Paysage tout comme lorsque nous imprimons le document en mode paysage . –

+0

Pour changer "l'orientation", vous devez changer la limite de la page (essayez 'PDPage.setMediaBox()', si cela échoue, essayez les autres méthodes qui acceptent un rectangle). –

0

J'ai trouvé la solution. J'ai converti le document en pdf de paysage using l'API ouverte de bureau pour Java. Voici le code pour le même.

System.out.println("starting..."); 
       String oooExeFolder = "/usr/lib/openoffice/program"; 
       XComponentContext xContext = BootstrapSocketConnector.bootstrap(oooExeFolder); 

       XMultiComponentFactory xMCF = xContext.getServiceManager(); 

       Object oDesktop = xMCF.createInstanceWithContext("com.sun.star.frame.Desktop", xContext); 

       XComponentLoader xCLoader = (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class, oDesktop); 
       System.out.println("loading "); 
       PropertyValue[] printerDesc = new PropertyValue[1]; 
       printerDesc[0] = new PropertyValue(); 
       printerDesc[0].Name = "PaperOrientation"; 
       printerDesc[0].Value = PaperOrientation.LANDSCAPE; 
       // Create a document 
       XComponent document = xCLoader.loadComponentFromURL(loadUrl, "_blank", 0, printerDesc); 
       // Following property will convert doc into requested orientation. 
       XPrintable xPrintable = (XPrintable) UnoRuntime.queryInterface(XPrintable.class, document); 
       xPrintable.setPrinter(printerDesc); 
       PropertyValue[] conversionProperties = new PropertyValue[3]; 
       conversionProperties[1] = new PropertyValue(); 
       conversionProperties[1].Name = "FilterName"; 
       conversionProperties[1].Value = "writer_pdf_Export";// 
       conversionProperties[0] = new PropertyValue(); 
       conversionProperties[0].Name = "Overwrite "; 
       conversionProperties[0].Value = new Boolean(true); 
       System.out.println("closing"); 
       XStorable xstorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, document); 
       xstorable.storeToURL(storeUrl, conversionProperties); 
       System.out.println("closing"); 
       XCloseable xcloseable = (XCloseable) UnoRuntime.queryInterface(XCloseable.class, document); 
       xcloseable.close(false); 
0

Essayez primordial OfficeDocumentConverter

OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager) { 

      private Map<String, Object> createDefaultLoadProperties() { 
       Map<String, Object> loadProperties = new HashMap<String, Object>(); 
       loadProperties.put("Hidden", true); 
       loadProperties.put("ReadOnly", true); 
       loadProperties.put("UpdateDocMode", UpdateDocMode.QUIET_UPDATE); 
       return loadProperties; 
      } 

      @Override 
      public void convert(File inputFile, File outputFile, DocumentFormat outputFormat) throws OfficeException { 
       String inputExtension = FilenameUtils.getExtension(inputFile.getName()); 
       DocumentFormat inputFormat = getFormatRegistry().getFormatByExtension(inputExtension); 
       inputFormat.setLoadProperties(Collections.singletonMap("PaperOrientation", PaperOrientation.LANDSCAPE)); 
       StandardConversionTask conversionTask = new StandardConversionTask(inputFile, outputFile, outputFormat) { 

        @Override 
        protected void modifyDocument(XComponent document) throws OfficeException { 
         PropertyValue[] printerDesc = OfficeUtils.toUnoProperties(Collections.singletonMap("PaperOrientation", PaperOrientation.LANDSCAPE)); 
         XPrintable xPrintable = cast(XPrintable.class, document); 
         try { 
          xPrintable.setPrinter(printerDesc); 
         } catch (com.sun.star.lang.IllegalArgumentException e) { 
          logger.error(e.getMessage()); 
         } 
         super.modifyDocument(document); 
        } 
       }; 
       conversionTask.setDefaultLoadProperties(createDefaultLoadProperties()); 
       conversionTask.setInputFormat(inputFormat); 
       officeManager.execute(conversionTask); 
      } 

     };