文档抽象模型xml,xml解析生成pdf,word文档

标签: 文档 抽象 模型 | 发表时间:2012-10-18 14:53 | 作者:ITrookieGe
出处:http://blog.csdn.net
<?xml version="1.0" encoding="UTF-8"?>
<document>
    <station title="stationParse" flag="true">
        <pargh font="chineseOne">
            <content><![CDATA[站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点
            能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析
            站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析
            站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析
            站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析
            站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析。]]>
            </content>    
        </pargh>
        <table row="2" cell="3" align="left">
            <tr>
                <td><![CDATA[站点能耗分析站1.]]></td>
                <td><![CDATA[站点能耗分析站2.]]></td>
                <td><![CDATA[站点能耗分析站3.]]></td>        
            </tr>
            <tr>
                <td><![CDATA[站点能耗分析站4.]]></td>
                <td><![CDATA[站点能耗分析站5.]]></td>
                <td><![CDATA[站点能耗分析站6.]]></td>        
            </tr>    
        </table>
        <image algin="left">
            <imagepath><![CDATA[D:\\图片\\2.jpg]]></imagepath>    
        </image>
        <items font="chineseOne">
            <item><![CDATA[站点能耗分析站1.]]></item>        
            <item><![CDATA[站点能耗分析站2.]]></item>
            <item><![CDATA[站点能耗分析站2.]]></item>    
        </items>
    </station>
    <fangan title="stationParse" falg="false">
        <pargh font="chineseOne">
            <content><![CDATA[站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点
            能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析
            站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析
            站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析
            站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析
            站点能耗分析站点能耗分析站点能耗分析站点能耗分析站点能耗分析。]]>
            </content>    
        </pargh>
        <table row="2" cell="3" align="left">
            <tr>
                <td><![CDATA[站点能耗分析站1.]]></td>
                <td><![CDATA[站点能耗分析站2.]]></td>
                <td><![CDATA[站点能耗分析站3.]]></td>        
            </tr>
            <tr>
                <td><![CDATA[站点能耗分析站4.]]></td>
                <td><![CDATA[站点能耗分析站5.]]></td>
                <td><![CDATA[站点能耗分析站6.]]></td>        
            </tr>    
        </table>
        <image algin="left">
            <imagepath><![CDATA[D:\\图片\\2.jpg]]></imagepath>    
        </image>
        <items font="chineseOne">
            <item><![CDATA[站点能耗分析站1.]]></item>        
            <item><![CDATA[站点能耗分析站2.]]></item>
            <item><![CDATA[站点能耗分析站2.]]></item>    
        </items>
    </fangan>

</document>

package com.isoftstone.impl.doc;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import com.isoftstone.domain.doc.Field;
import com.isoftstone.inter.doc.createDocument;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.Image;
import com.lowagie.text.List;
import com.lowagie.text.Paragraph;

import com.lowagie.text.ListItem;
import com.lowagie.text.PageSize;
import com.lowagie.text.pdf.PRAcroForm;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;

public class CreatePdfDocument implements createDocument
{
    private Document document;    
    public CreatePdfDocument()
    {        
        
    }    
    /**
     * 初始化
     */
    public void initPdfDocument(Object filePath)    
    {
        String fileSrc=(String)filePath;
        document = new Document(PageSize.A4);
        File file = new File(fileSrc);        
        try
        {
            PdfWriter.getInstance(document, new FileOutputStream(file));            
        }
        catch (FileNotFoundException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (DocumentException e)
        {
            // TODO Auto-generated catch block c://wangjin/qixiang/qixiang.jpg
            e.printStackTrace();
        }
        
       
    }
    
    public void openPdf()
    {
        document.open();
    }

    /**
     * 添加图片
     */
    public boolean addImage(Object imagePath)
    {
        String imagepath = (String)imagePath;
        try
        {
            Image img = Image.getInstance(imagepath);
            img.setAlignment(Image.LEFT);// 设置图片显示位置
            img.scalePercent(50);// 表示显示的大小为原尺寸的80%  
            try
            {
                if (document != null)
                {
                    document.add(img);
                }

            }
            catch (DocumentException e)
            {

                e.printStackTrace();
            }
            return true;
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return false;
        }

    }

    /**
     * 添加条目
     */
    public boolean addItem(Object values,Font font)
    {
        try
        {           
            ArrayList<?> listValues = null;
            if (values != null && values != "")
            {
                listValues = (ArrayList<?>)values;
                List list = new List(true, 20);// 创建列表
                ListItem item = null;
                for (int i = 0; i < listValues.size(); i++)
                {
                    item = new ListItem(listValues.get(i).toString(), font);// 创建列表项
                    list.add(item);
                }
                document.add(list);
                return true;
            }
            else
            {
                return false;
            }
        }
        catch (DocumentException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return false;
        }

    }

    /**
     * 添加表格
     */
    @SuppressWarnings("unchecked")
    public boolean addTable(Object values, Object row, Object cell,Font font)
    {
        
        int tablecell = (Integer)cell;       
        System.out.println(tablecell);
        PdfPTable table = new PdfPTable(tablecell);
        ArrayList tableValue=(ArrayList)values;
        table.setWidthPercentage(100);
        if (tableValue != null)
        {            
            for (int i = 0; i < tableValue.size(); i++)
            {
                table.addCell(new Paragraph(tableValue.get(i).toString(), font));

            }
            try
            {
                document.add(table);
            }
            catch (DocumentException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }        
            return true;
        }
        else
        {
            
            return false;
        }
    }

    /**
     * 添加文本
     */
    public boolean addText(Object values,Font font)
    {        
        String text = (String)values;
        try
        {       
            if (text != null && text != "")
            {
               Paragraph graph = new Paragraph(text,font);// 创建一个段落   
                document.add(graph);
                return true;
            }
            else
            {
                return false;
            }
        }
        catch (Exception e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return false;
        }

        
    }
    /**
     *
     * @param args
     */
    public void closePdf()
    {
        document.close();
    }
    /**
     * 开始新页
     */    
    public void addNewPage()
    {
        try
        {
            document.newPage();
        }
        catch (DocumentException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }    
    }
     

//    public static void main(String[] args)
//    {
//        CreatePdfDocument pdfDocument=new CreatePdfDocument();        
//        String p1="    近几年来,业界逐渐推出了基于Web客户端的数据挖掘平台和产品,"
//            + "如Kxen公司的数据挖掘产品,就是一个基于Web客户端的数据挖掘平台,该平台提供了简洁的网页"
//            + "操作界面,利用向导一步一步的引导用户进行挖掘任务的设置、启动和系统维护。该方式已经逐步得"
//            + "到了业界和客户的认可,已经成为一种公认的趋势。近几年来,业界逐渐推出了基于Web客户端的数据"
//            + "挖掘平台和产品,例如Kxen公司的数据挖掘产品,就是一个基于Web客户端的数据挖掘平台,该平台"
//            + "提供了简洁的网页操作界面,利用向导一步一步的引导用户进行挖掘任务的设置、启动和系统维护。"
//            + "该方式已经逐步得到了业界和客户的认可,已经成为一种公认的趋势。";   
//        String fileSrc="c:\\test.pdf";
//        pdfDocument.initPdfDocument(fileSrc);
//        
//        pdfDocument.pdfOpen();
//        
//        pdfDocument.addImage("D:\\图片\\2.jpg");        
//        pdfDocument.addText(p1);
//        ArrayList arrayList=new ArrayList();
//        for(int i=0;i<10;i++)
//        {
//            arrayList.add(i, "pdf"+i);
//            
//        }
//        pdfDocument.addItem(arrayList);
//        
//        ArrayList<Field> fieldList=new ArrayList<Field>();
//        for(int i=0;i<10;i++)
//        {
//            Field field=new Field(i,"username"+i,"password"+i,"telephone"+i);
//            fieldList.add(field);
//        }
//        pdfDocument.addTable(fieldList, 10, 4);        
//        
//        pdfDocument.closePdf();
//    }
//    
//    
//   

}
package com.isoftstone.inter.doc;
import java.io.IOException;

import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
/**
 *
 * <p>功能简述</p>
 * <p>功能详述</p>
 * @author Wang Jin
 * @version 1.0, 2012-10-15
 * @see
 * @since
 */
public interface createDocument
{
    /**
     * 初始化
     */
    public void initPdfDocument(Object filePath);
    /**
     *打开文档器
     */
    public void openPdf();

    /**
     * 添加图片
     */
    public boolean addImage(Object imagePath);

    /**
     * 添加条目
     */
    public boolean addItem(Object values,Font font);
    /**
     * 添加表格
     * @throws IOException
     * @throws DocumentException
     */
    public boolean addTable(Object values, Object row, Object cell,Font font);
    /**
     * 添加文本
     */
    public boolean addText(Object values,Font font);
    /**
     *关闭文档器     
     */
    public void closePdf();
   
   
}
package com.isoftstone.parse;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.isoftstone.impl.doc.CreatePdfDocument;
import com.lowagie.text.Font;
import com.lowagie.text.pdf.BaseFont;

public class Dom4jToPdf
{
    @SuppressWarnings( { "unchecked" })
    public static void main(String args[]) throws DocumentException
    {
        System.getProperties();
        SAXReader reader = new SAXReader();
        String filePath="d:/document.xml";
        Document document = reader.read(new File(filePath));
        Element rootElm = document.getRootElement();
        List documentNodes = rootElm.elements();
        for (Iterator documentNode = documentNodes.iterator(); documentNode.hasNext();)
        {
            Element documentElm = (Element)documentNode.next();
            CreatePdfDocument pdfDocument = new CreatePdfDocument();
            String fileSrc = "e:\\testwangjin.pdf";
            pdfDocument.initPdfDocument(fileSrc);
            pdfDocument.openPdf();            
            if ("station".equals(documentElm.getName()))
            {
                
                try
                {
                    String title = documentElm.attributeValue("title");
                    BaseFont bfChinese = BaseFont.createFont(
                        "C:\\WINDOWS\\Fonts\\SIMHEI.TTF", BaseFont.IDENTITY_H,
                        BaseFont.EMBEDDED);
                    Font font = new Font(bfChinese, 12, Font.NORMAL);
                    pdfDocument.addText(title, font);
                    List contentNodes = documentElm.elements();                    
                    for (Iterator contentNode = contentNodes.iterator(); contentNode.hasNext();)
                    {
                        Element contentElm = (Element)contentNode.next();
                        if ("pargh".equals(contentElm.getName()))
                        {
                            String p1 = contentElm.elementText("content");
//                            elmContent.setAttributeValue(title, )
                            pdfDocument.addText(p1, font);
                        }
                        if ("image".equals(contentElm.getName()))
                        {
                            String imagePath = contentElm
                                .elementText("imagepath");

                            pdfDocument.addImage(imagePath);
                        }
                        if ("items".equals(contentElm.getName()))
                        {
                            List itemNodes = contentElm.elements();
                            List listValues = new ArrayList();
                            for (Iterator itemNode = itemNodes.iterator(); itemNode.hasNext();)
                            {
                                Element itemContent = (Element)itemNode.next();
                                String itemData = (String)itemContent.getData();
                                listValues.add(itemData);
                            }
                            pdfDocument.addItem(listValues, font);
                        }
                        if ("table".equals(contentElm.getName()))
                        {
                            List tableValues = new ArrayList();
                            int tableCells = Integer.parseInt(contentElm
                                .attributeValue("cell"));
                            int tableRows = Integer.parseInt(contentElm
                                .attributeValue("row"));
                            List trNodes = contentElm.elements();
                            for (Iterator trNode = trNodes.iterator(); trNode.hasNext();)
                            {
                                Element trContent=(Element)trNode.next();
                                List tdNodes = trContent.elements();
                                for (Iterator tdNode = tdNodes.iterator(); tdNode
                                .hasNext();)
                                {
                                    Element tdContent=(Element)tdNode.next();
                                    String tdData=(String)tdContent.getData();
                                    tableValues.add(tdData);
                                }
                            }
                            pdfDocument.addTable(tableValues, tableRows, tableCells,font);
                        }
                    }
                    
                }
                catch (com.lowagie.text.DocumentException e)
                {                   
                    e.printStackTrace();
                }
                catch (IOException e)
                {                    
                    e.printStackTrace();
                }
                finally
                {
                    pdfDocument.closePdf();
                }
            }

        }
    }

}


package com.isoftstone.parse;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.isoftstone.impl.doc.CreatePdfDocument;
import com.lowagie.text.Font;
import com.lowagie.text.pdf.BaseFont;

public class Dom4jToPdf
{
    @SuppressWarnings( { "unchecked" })
    public static void main(String args[]) throws DocumentException
    {
        System.getProperties();
        SAXReader reader = new SAXReader();
        String filePath="d:/document.xml";
        Document document = reader.read(new File(filePath));
        Element rootElm = document.getRootElement();
        List documentNodes = rootElm.elements();
        for (Iterator documentNode = documentNodes.iterator(); documentNode.hasNext();)
        {
            Element documentElm = (Element)documentNode.next();
            CreatePdfDocument pdfDocument = new CreatePdfDocument();
            String fileSrc = "e:\\testwangjin.pdf";
            pdfDocument.initPdfDocument(fileSrc);
            pdfDocument.openPdf();            
            if ("station".equals(documentElm.getName()))
            {
                
                try
                {
                    String title = documentElm.attributeValue("title");
                    BaseFont bfChinese = BaseFont.createFont(
                        "C:\\WINDOWS\\Fonts\\SIMHEI.TTF", BaseFont.IDENTITY_H,
                        BaseFont.EMBEDDED);
                    Font font = new Font(bfChinese, 12, Font.NORMAL);
                    pdfDocument.addText(title, font);
                    List contentNodes = documentElm.elements();                    
                    for (Iterator contentNode = contentNodes.iterator(); contentNode.hasNext();)
                    {
                        Element contentElm = (Element)contentNode.next();
                        if ("pargh".equals(contentElm.getName()))
                        {
                            String p1 = contentElm.elementText("content");
//                            elmContent.setAttributeValue(title, )
                            pdfDocument.addText(p1, font);
                        }
                        if ("image".equals(contentElm.getName()))
                        {
                            String imagePath = contentElm
                                .elementText("imagepath");

                            pdfDocument.addImage(imagePath);
                        }
                        if ("items".equals(contentElm.getName()))
                        {
                            List itemNodes = contentElm.elements();
                            List listValues = new ArrayList();
                            for (Iterator itemNode = itemNodes.iterator(); itemNode.hasNext();)
                            {
                                Element itemContent = (Element)itemNode.next();
                                String itemData = (String)itemContent.getData();
                                listValues.add(itemData);
                            }
                            pdfDocument.addItem(listValues, font);
                        }
                        if ("table".equals(contentElm.getName()))
                        {
                            List tableValues = new ArrayList();
                            int tableCells = Integer.parseInt(contentElm
                                .attributeValue("cell"));
                            int tableRows = Integer.parseInt(contentElm
                                .attributeValue("row"));
                            List trNodes = contentElm.elements();
                            for (Iterator trNode = trNodes.iterator(); trNode.hasNext();)
                            {
                                Element trContent=(Element)trNode.next();
                                List tdNodes = trContent.elements();
                                for (Iterator tdNode = tdNodes.iterator(); tdNode
                                .hasNext();)
                                {
                                    Element tdContent=(Element)tdNode.next();
                                    String tdData=(String)tdContent.getData();
                                    tableValues.add(tdData);
                                }
                            }
                            pdfDocument.addTable(tableValues, tableRows, tableCells,font);
                        }
                    }
                    
                }
                catch (com.lowagie.text.DocumentException e)
                {                   
                    e.printStackTrace();
                }
                catch (IOException e)
                {                    
                    e.printStackTrace();
                }
                finally
                {
                    pdfDocument.closePdf();
                }
            }

        }
    }

}








作者:ITrookieGe 发表于2012-10-18 15:19:20 原文链接
阅读:0 评论:0 查看评论

相关 [文档 抽象 模型] 推荐:

文档抽象模型xml,xml解析生成pdf,word文档

- - CSDN博客推荐文章
            

Istio 中的服务和流量的抽象模型

- - IT瘾-dev
本文介绍了 Istio 和 Kubernetes 中的一些服务和流量的抽象模型. 虽然 Istio 一开始确定的抽象模型与对接的底层平台无关,但目前来看基本绑定 Kubernetes,本文仅以 Kubernetes 说明. 另外在 ServiceMesher 社区中最近有很多关于 Istio、Envoy、Kubernetes 之中的服务模型关系的讨论,本文作为一个开篇说明,Kubernetes 和 Isito 之间有哪些共有的服务模型,Istio 在 Kubernetes 的服务模型之上又增加了什么,为什么说 Kubernetes service 存在的意义仅剩下做服务发现.

HTML文档与盒子模型

- - 蓝飞技术部落格
百度百科里是这么说的:超文本标记语言,即HTML(Hypertext Markup Language),是用于描述网页文档的一种标记语言. 为什么叫用于“描述”网页文档的“标记”语言呢. 简单地说,它不像Java,C++等程式语言,而是通过 标记(也称标签)来表示一个网页的结构与内容,它的语法非常简单,只是由各种不同的标记组合而成,因此这类语言的学习方式主要靠积累,而非程式语言般靠理解来学习.

MMORPG 中场景服务的抽象

- 2sin18 - 云风的 BLOG
MMORPG 中,场景信息同步是很基础而必不可少的服务. 这部分很值得抽象出来,专门做成一个通用的服务程序. 此服务无非提供的是,向有需求的对象,同步场景中每个实体的状态信息. 那么,我们分解需求,可以看到两点,一是提交状态,二是同步状态. 每条状态信息其实是由三部分构成,状态对象名(key)、状态值(value)、时间.

C++ 工程实践(9):数据抽象

- roc - 博客园-陈硕的 Blog
陈硕 (giantchen_AT_gmail). 陈硕关于 C++ 工程实践的系列文章: http://blog.csdn.net/Solstice/category/802325.aspx. 排版正常的版本: http://www.cnblogs.com/Solstice/category/287661.html.

代码的抽象三原则

- - 阮一峰的网络日志
软件开发是 "抽象化"原则(Abstraction)的一种体现. 所谓"抽象化",就是指从具体问题中,提取出具有共性的模式,再使用通用的解决方法加以处理. 开发软件的时候,一方面,我们总是希望使用别人已经写好的代码,另一方面,又希望自己写的代码尽可能重用,以求减少工作量. 要做到这两个目标,这需要"抽象化".

抽象: 程序员必备的能力

- - CSDN博客架构设计推荐文章
抽象指的是从纷繁复杂的事物中提炼本质的过程,是一个具体到概念的过程, 例如苹果、香蕉、生梨、葡萄、桃子等,它们共同的特性就是水果. 得出水果概念的过程,就是一个抽象的过程. 在软件业,抽象能力的重要性怎么说都不为过,因为软件开发是一个高度复杂的智力活动,程序员经常需要面对、处理异常复杂的业务和逻辑,如果你不具备强大的抽象能力,无法把具体变成概念,进而驾驭概念进行思考, 你就很难降低问题的复杂度,从而陷入泥潭,无法自拔.

模型制作

- 小鱼儿 - 非正常人类研究中心 – Mtime时光网
1.材料:一大袋的一次性筷子(花了60块钱);5支502胶水;5张粗砂纸;记号笔一只;锋利的美工刀片若干,破剪刀一把. 就是这种屌毛筷子,质量也太他妈的差了点,80%都是弯的 . 随便提一下:我的脚丫子还是蛮性感滴 . 开始动工了!!  先做门框跟房子的底架. 3.不好意思,忘了交代一下了,我是先画图纸的,看到那张纸了没有.

21款极简抽象风格的平面广告

- 电饭锅 - 译言-每日精品译文推荐
你是否注意到,大多数绝妙的创意,无论是商业或是设计,都很简单明了,而你却惊讶于自己为啥没有早想到呢. 列昂那多·达·芬奇曰:“朴素乃终极的复杂. ”并且建筑师Ludwig Mies van der Rohe信奉这样一句座右铭:“少就是多. 甚至在五百年后,列昂那多的话仍然成立,并且这一信条广泛适用于设计业和广告业.