2011-07-17 6 views
1

Je crée une présentation Impress à partir d'une série de fichiers image. Je peux créer un Page et insérer le GraphicObjectShape sans aucun problème, mais je me suis coincé quand je dois dimensionner la forme contenant l'image.API de dessin OpenOffice: créer un diaporama à partir d'images de la taille d'une page

Mon problème est que je n'ai aucune idée quelles tailles dois-je utiliser. Bien sûr, je pourrais aller avec un processus d'essais et d'erreurs, mais ce ne serait pas très professionnel le ferait-il? Mes questions: quelle est la taille de la nouvelle Page Je crée en pixels? Comment accéder à la fonction "Taille originale" qui se trouve dans le menu contextuel de l'image?

Dans la mise en page, je vois une taille de 11,02 "x 8,27" - Y at-il une garantie que toutes les versions futures utiliseront cette taille lorsque je crée un nouveau document et une nouvelle page à l'intérieur?

Il serait intéressant de connaître la taille du fichier image pour l'adapter à l'ensemble de la page.

Répondre

1

Il semble que les images raster sont chargées avec une résolution de 96 DPI. Si vous utilisez la taille de page par défaut pour Impress (11,02" x 8,27"), la taille de l'image raster entièrement approprié (en pixels) est la suivante:

1058 x 794

De plus, si vous vous en tenez à ce taille (comme c'est probablement le choix le plus compatible par exemple lorsque vous enregistrez en PPT), ne vous reposez pas sur le fait qu'il s'agit de la valeur par défaut. Une fois le document créé, vous pouvez définir la taille des diapositives en définissant la propriété Width et Height de n'importe quelle page (il semble que toutes les autres pages suivront après avoir redimensionné l'une d'entre elles).

L'API utilise une échelle de 100/mm. 11.02 iches sont 280 mm, de sorte que la largeur est de 280 * 100 = 28000, la hauteur est 21000.

Java par exemple pour redimensionner la presentaion à 11,02" x 8,27" et insérer (a de préférence de 4: 3) image adaptée à la page entière:

XDrawPage page; 
XMultiServiceFactory factory; 

// ... setting up the environment and opening document 

// resize the page (and all other pages) to our default size 
XPropertySet pagePropSet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, page); 
pagePropSet.setPropertyValue("Width", 28000); 
pagePropSet.setPropertyValue("Height", 21000); 

// create GraphicObjectShape with the size of the page in the top-left corner 
Object picture = factory.createInstance("com.sun.star.drawing.GraphicObjectShape"); 
XShape pictureShape = (XShape)UnoRuntime.queryInterface(XShape.class, picture); 
pictureShape.setSize(new Size(28000, 21000)); 
pictureShape.setPosition(new Point(0, 0)); 

// load the image file into our the shape 
XPropertySet propSet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, pictureShape); 
propSet.setPropertyValue("GraphicURL", new File("c:\\Users\\Vbence\\Downloads\\slide.png").toURI().toURL().toString()); 

// add the shape to the page 
page.add(pictureShape); 
Questions connexes