使用itext-1.4.1来生成pdf的ByteArrayOutputStream文件流,然后将文件流加入使用jdom生成的xml中。
其中生成pdf文件到硬盘的测试已经通过,没有问题。
但是现在将ByteArrayOutputStream流放到xml中的时候,提示错误:下载文件[a]过程中出现错误:[org.jdom.IllegalDataException: The data “ 。”
is not legal for a JDOM character content: 0x10 is not a legal XML character.]其中文件[a]是xml的文件名, 上面错误中的双引号部分中大部分是乱码。请高手来指教,这是什么问题

解决方案 »

  1.   

    我们公司xml都是自动生成其对应的pdf文件的,我们用国外公司的一套软件!不知道楼主公司是怎么生成pdf的??
      

  2.   

    你的.pdf文件在数据库中储存的类型是BLOB类型的吧,如果是的话可能是你用流操作BLOB数据的问题,下面我有一段用流获取的方法,希望能给你启示:
    public static List<byte[]> getBlobToByteList(oracle.sql.BLOB blob) throws SQLException, IOException {
        ArrayList<byte[]> arryResult = new ArrayList<byte[]>();
        if (blob != null){ 
          InputStream reader = blob.getBinaryStream();
          BufferedInputStream buffReader = new BufferedInputStream(reader); 
          byte[] cbuftemp = new byte[1000];
          while ((buffReader.read(cbuftemp)) != -1) { 
            arryResult.add(cbuftemp.clone());
          }
        }
        return arryResult;
      }
    返回的是一个ArrayList的集合,这样你的BLOB类型的数据就可以被读取了,不过不知道你的.pdf文件在数据库中是不是以BLOB类型存储的,祝你好运!
      

  3.   

    itext-1.4.1我没用过,如果你用它来控制流的话,那么你看看用它还有注意些什么,比如设置、输出后的字符编码等
      

  4.   

    程序是这样的:         ByteArrayOutputStream buffer = new ByteArrayOutputStream();
            BuildPDF pdf = new BuildPDF();//生成pdf的类
            buffer = pdf.controlle(censor_ID);//调用方法        String strPdf = buffer.toString();//转换成String
    下面的就是保存到xml中了。
    我觉得是转换成String的时候出的问题,是不是和字符集有关,请高手看看