Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于PDF到XML转换的java代码_Java_Xml_Pdf - Fatal编程技术网

用于PDF到XML转换的java代码

用于PDF到XML转换的java代码,java,xml,pdf,Java,Xml,Pdf,我尝试使用itext,但无法获取xml格式 我想将pdf转换为xml 我只想要XML格式的文本(位置、大小),因此任何人都可以使用java将PDF转换为XML有一个库,它可以将PDF转换为html而不丢失文本或格式 希望这能对您有所帮助。有一个库可以将pdf转换为html,而不会丢失文本或格式 希望这能对您有所帮助。这是我在自己的应用程序中使用的代码。我不记得是从哪里弄来的,但它确实很有魅力 public class ConvertPDFToXML { static

我尝试使用itext,但无法获取xml格式
我想将pdf转换为xml
我只想要XML格式的文本(位置、大小),因此任何人都可以使用java将PDF转换为XML有一个库,它可以将PDF转换为html而不丢失文本或格式

希望这能对您有所帮助。

有一个库可以将pdf转换为html,而不会丢失文本或格式


希望这能对您有所帮助。

这是我在自己的应用程序中使用的代码。我不记得是从哪里弄来的,但它确实很有魅力

  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();
            }
    }

这是我在自己的应用程序中使用的代码。我不记得是从哪里弄来的,但它确实很有魅力

  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();
            }
    }

但是我无法从上面的代码中获取数据(顺便说一下,这段代码来自roseindia)哦!是 啊它来自印度。我只是不记得是从哪里弄来的。无论如何,您无法获取数据吗?我不明白。我只想阅读pdf文件中坐标和文本形式的全文,但无法使用上述代码检索文本。你能帮我检索不到吗?您遇到错误了吗?java.lang.ClassCastException:com.itextpdf.text.pdf.PdfArray无法在ConvertPDFToXML.main(ConvertPDFToXML.java:24)转换为com.itextpdf.text.pdf.PRIndirectReference,这是我遇到的错误,但我无法从上述代码中获取数据(顺便说一下,这段代码来自roseindia)哦!是 啊它来自印度。我只是不记得是从哪里弄来的。无论如何,您无法获取数据吗?我不明白。我只想阅读pdf文件中坐标和文本形式的全文,但无法使用上述代码检索文本。你能帮我检索不到吗?您收到错误?java.lang.ClassCastException:com.itextpdf.text.pdf.PdfArray无法在ConvertPDFToXML.main(ConvertPDFToXML.java:24)处转换为com.itextpdf.text.pdf.PRIndirectReference这是我收到的错误