使用itextpdf从html创建pdf

时间:2018-03-29 15:57:05

标签: java android pdf itext

使用itextpdf将html转换为pdf。 有几个图像需要转换。但是,有时图像地址不正确。 在这种情况下,我得到一个"文件不是公认的图像格式"错误,转换停止。

我发现异常,但我不知道如何继续绕过该图像进行转换。

有什么想法吗?

我的代码:

        try {
            Document document = new Document( com.itextpdf.text.PageSize.A4 );
            String fileNameWithPath = filename;
            FileOutputStream fos = new FileOutputStream( fileNameWithPath );
            PdfWriter pdfWriter = PdfWriter.getInstance( document, fos );
            document.open();
            document.addCreationDate();
);
            HTMLWorker htmlWorker = new HTMLWorker( document );
            htmlWorker.parse( new StringReader( htmlText ) );
            document.close();
            fos.close();

            return true;
        } 
     catch(DocumentException e) {
    e.printStackTrace();
    return false;
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    return false;
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    return false;
    } catch (IOException e) {
    e.printStackTrace();
    return false;
    }catch (Exception e) {
            File file = new File(absoluteFilePath);
            if(file.exists()) {
                boolean isDeleted = file.delete();
                Log.i(TAG, "PDF isDeleted: " + isDeleted);
            }
            Log.d(TAG, "Exception: " + e.getMessage());
            e.printStackTrace();
            return false;
        }
    }

我得到的错误:

  

03-27 22:54:27.065:D / rerore(27830):例外:文件:/不是   认可的图像格式。 03-27 22:54:27.065:W / System.err(27830):   ExceptionConverter:java.io.IOException:file:/不是可识别的   图片格式。 03-27 22:54:27.077:W / System.err(27830):at   com.itextpdf.text.Image.getInstance(Image.java:318)03-27   22:54:27.077:W / System.err(27830):at   com.itextpdf.text.Image.getInstance(Image.java:340)03-27   22:54:27.077:W / System.err(27830):at   com.itextpdf.text.html.simpleparser.ElementFactory.createImage(ElementFactory.java:425)   03-27 22:54:27.077:W / System.err(27830):at   com.itextpdf.text.html.simpleparser.HTMLWorker.createImage(HTMLWorker.java:454)   03-27 22:54:27.077:W / System.err(27830):at   com.itextpdf.text.html.simpleparser.HTMLTagProcessors $ 14.startElement(HTMLTagProcessors.java:431)   03-27 22:54:27.077:W / System.err(27830):at   com.itextpdf.text.html.simpleparser.HTMLWorker.startElement(HTMLWorker.java:193)   03-27 22:54:27.077:W / System.err(27830):at   com.itextpdf.text.xml.simpleparser.SimpleXMLParser.processTag(SimpleXMLParser.java:581)   03-27 22:54:27.077:W / System.err(27830):at   com.itextpdf.text.xml.simpleparser.SimpleXMLParser.go(SimpleXMLParser.java:323)   03-27 22:54:27.077:W / System.err(27830):at   com.itextpdf.text.xml.simpleparser.SimpleXMLParser.parse(SimpleXMLParser.java:607)   03-27 22:54:27.077:W / System.err(27830):at   com.itextpdf.text.html.simpleparser.HTMLWorker.parse(HTMLWorker.java:147)   03-27 22:54:27.077:W / System.err(27830):at   com.zagabun.yyy.MainActivity.createpdf(MainActivity.java:1039)03-27   22:54:27.077:W / System.err(27830):at   com.zagabun.yyy.MainActivity $ 6.run(MainActivity.java:974)

这不是一个重复的问题,因为我已经审核了我的问题并删除了旧问题。

另外,现在我有一个无效图像的解决方案。我在运行HTMLWorker parse命令之前检查每个图像的URL。 但是,其他标签还有其他错误,我不确定如何使用iText 5进行错误处理。

任何人都可以帮忙吗?

0 个答案:

没有答案