Ejemplo n.º 1
0
        /**
         * This method shall store image bytes in external file and convert it if
         * necessary. Images shall be stored using PNG format (for bitmap) or SVG
         * (for vector). Other formats may be not supported by your XSL FO
         * processor.
         * <p>
         * Please note the
         * {@link WordToFoUtils#setPictureProperties(Picture, XmlElement)} method.
         * 
         * @param currentBlock
         *            currently processed FO element, like <tt>fo:block</tt>. Shall
         *            be used as parent of newly created
         *            <tt>fo:external-graphic</tt> or
         *            <tt>fo:instream-foreign-object</tt>
         * @param inlined
         *            if image is inlined
         * @param picture
         *            HWPF object, contained picture data and properties
         */
        protected override void ProcessImage(XmlElement currentBlock, bool inlined,
                Picture picture)
        {
            PicturesManager fileManager = GetPicturesManager();
            if (fileManager != null)
            {
                String url = fileManager
                        .SavePicture(picture.GetContent(),
                                picture.SuggestPictureType(),
                                picture.SuggestFullFileName());

                if (!string.IsNullOrEmpty(url))
                {
                    ProcessImage(currentBlock, inlined, picture, url);
                    return;
                }
            }

            // no default implementation -- skip
            currentBlock.AppendChild(foDocumentFacade.Document
                    .CreateComment("Image link to '"
                            + picture.SuggestFullFileName() + "' can be here"));
        }