Как преобразовать файлы PDF в HTML со стилями, используя APACHE TIKA - PullRequest
0 голосов
/ 26 мая 2020

Я использую apache tika для преобразования файлов PDF в HTML, мне нужно извлечь html со стилями, такими как полужирный, курсив, верхний, левый, высота, ширина и семейство шрифтов элемента, но я использовал получить только необработанные html теги, которые содержат теги без стилей,

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.sax.ExpandedTitleContentHandler;
import org.xml.sax.SAXException;
import com.google.common.io.Files;

public class Test4 {

    public static void main(String[] args) throws IOException, TransformerConfigurationException, SAXException, TikaException {
        byte[] file = Files.toByteArray(new File("src/main/java/test/test.pdf"));
        AutoDetectParser tikaParser = new AutoDetectParser();
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        SAXTransformerFactory factory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
        TransformerHandler handler = factory.newTransformerHandler();
        handler.getTransformer().setOutputProperty(OutputKeys.METHOD, "html");
        handler.getTransformer().setOutputProperty(OutputKeys.INDENT, "yes");
        handler.getTransformer().setOutputProperty(OutputKeys.ENCODING, "UTF-8");
        handler.setResult(new StreamResult(out));
        ExpandedTitleContentHandler handler1 = new ExpandedTitleContentHandler(handler);
        tikaParser.parse(new ByteArrayInputStream(file), handler1, new Metadata());
        System.out.println(new String(out.toByteArray(), "UTF-8"));

    }

}

На выходе я получаю только HTML как показано ниже,

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="date" content="2017-01-10T12:56:54Z"/>
<meta name="pdf:PDFVersion" content="1.5"/>
<meta name="pdf:docinfo:title" content="GROUP HEALTH INSURANCE"/>
<meta name="pdf:docinfo:created" content="2016-09-01T05:45:44Z"/>

<!-- some meta's here  -->
<title>GROUP HEALTH INSURANCE</title>
</head>
<body>
<div class="page">
<p/>
<p> Group Personal Accident Policy for Optional Travel Insurance for E-ticket </p>
<p>Sample Registration Number:102 

</p>
<p>Annexure 1 

</p>
</div>
</body>
</html>

Как я могу извлечь содержимое как HTML из PDF с его собственными стилями, просьба дать свой ответ, заранее спасибо.

...