2013-06-05 108 views
0

我試着用iText的,無法得到XML格式
我想將PDF轉換爲XML
我只是想文本(位置,大小),它可在XML格式等在使用JavaJava代碼到XML轉換

回答

3

PDFXML轉換任意一個幫助NE有一個圖書館pdf2htmlEX,它可以轉換的PDF格式,而不會丟失文本或格式的HTML。

希望這可以幫助你。

1

這是我在自己的應用程序中使用的代碼。我不記得我從哪裏得到它,但它確實像一個魅力。

public class ConvertPDFToXML { 
      static StreamResult streamResult; 
      static TransformerHandler handler; 
      static AttributesImpl atts; 

      public static void main(String[] args) throws IOException { 

        try { 
          Document document = new Document(); 
          document.open(); 
          PdfReader reader = new PdfReader("C:\\hello.pdf"); 
          PdfDictionary page = reader.getPageN(1); 
          PRIndirectReference objectReference = (PRIndirectReference) page 
              .get(PdfName.CONTENTS); 
          PRStream stream = (PRStream) PdfReader 
              .getPdfObject(objectReference); 
          byte[] streamBytes = PdfReader.getStreamBytes(stream); 
          PRTokeniser tokenizer = new PRTokeniser(streamBytes); 

          StringBuffer strbufe = new StringBuffer(); 
          while (tokenizer.nextToken()) { 
            if (tokenizer.getTokenType() == PRTokeniser.TK_STRING) { 
              strbufe.append(tokenizer.getStringValue()); 
            } 
          } 
          String test = strbufe.toString(); 
          streamResult = new StreamResult("data.xml"); 
          initXML(); 
          process(test); 
          closeXML(); 
          document.add(new Paragraph("..")); 
          document.close(); 
        } catch (Exception e) { 
        } 
      } 

      public static void initXML() throws ParserConfigurationException, 
          TransformerConfigurationException, SAXException { 
        SAXTransformerFactory tf = (SAXTransformerFactory) SAXTransformerFactory 
            .newInstance(); 

        handler = tf.newTransformerHandler(); 
        Transformer serializer = handler.getTransformer(); 
        serializer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1"); 
        serializer.setOutputProperty(
            "{http://xml.apache.org/xslt}indent-amount", "4"); 
        serializer.setOutputProperty(OutputKeys.INDENT, "yes"); 
        handler.setResult(streamResult); 
        handler.startDocument(); 
        atts = new AttributesImpl(); 
        handler.startElement("", "", "data", atts); 
      } 

      public static void process(String s) throws SAXException { 
        String[] elements = s.split("\\|"); 
        atts.clear(); 
        handler.startElement("", "", "Message", atts); 
        handler.characters(elements[0].toCharArray(), 0, elements[0].length()); 
        handler.endElement("", "", "Message"); 
      } 

      public static void closeXML() throws SAXException { 
        handler.endElement("", "", "data"); 
        handler.endDocument(); 
      } 
    } 
+0

但我無法從上面的代碼中獲取數據(順便說一下Roseindia的這個代碼) – nikhil

+0

哦,哦!是啊!它來自roseindia。我不記得我從哪裏得到它。無論如何,你無法獲得數據?我不明白。 – Swayam

+0

我只是想要閱讀pdf文件中的文本形式的座標和文本,但是無法使用上面的代碼檢索文本可以幫助我 – nikhil