andob / android-awt

Combination of code from Apache Harmony and Apache Commons Imaging to replace classes in java.awt for Android.
Apache License 2.0
28 stars 15 forks source link

java.lang.RuntimeException: Couldn't open the font file #12

Closed xiechunjiang closed 1 year ago

xiechunjiang commented 2 years ago

hi

  1. When I use Apache-POI to convert PPTX to PDF on Android, it reports 'java.lang.RuntimeException: Couldn't open the font file'. The code is as follows:``` public static boolean convertPPTToPDF(File file, File toFile) { try { Document pdfDocument = new Document(); PdfWriter pdfWriter = PdfWriter.getInstance(pdfDocument, new FileOutputStream(toFile)); FileInputStream is = new FileInputStream(file); double zoom = 2;

        is = new FileInputStream(file);
        XMLSlideShow ppt = convertPPTToPDFByPPTX(is);
        if (ppt == null) {
            throw new NullPointerException("This PPTX get data is error....");
        }
        Dimension pgsize = ppt.getPageSize();
        List<XSLFSlide> slide = Arrays.asList(ppt.getSlides());
    
        AffineTransform at = new AffineTransform();
        at.setToScale(zoom, zoom);
        pdfDocument.setPageSize(new com.lowagie.text.Rectangle((float) pgsize.getWidth(), (float) pgsize.getHeight()));
        pdfWriter.open();
        pdfDocument.open();
        PdfPTable table = new PdfPTable(1);
        for (XSLFSlide xslfSlide : slide) {
            BufferedImage img = new BufferedImage((int) Math.ceil(pgsize.width * zoom), (int) Math.ceil(pgsize.height * zoom), BufferedImage.TYPE_INT_RGB);
            /*InputStream open = AppManager.getAppManager().getTopActivity().getAssets().open("fonts/simsun.ttf");
            java.awt.Font fonts = java.awt.Font.createFont(java.awt.Font.TRUETYPE_FONT, open);
            java.awt.GraphicsEnvironment localGraphicsEnvironment =  java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();*/
            Graphics2D graphics = img.createGraphics();
            graphics.setTransform(at);
            graphics.setPaint(Color.white);
            graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
            xslfSlide.draw(graphics);
            graphics.getPaint();
            com.lowagie.text.Image slideImage = com.lowagie.text.Image.getInstance(img, null);
            table.addCell(new PdfPCell(slideImage, true));
        }

// ppt.close(); pdfDocument.add(table); pdfDocument.close(); pdfWriter.close(); Log.e("Exception", file.getAbsolutePath() + "Powerpoint file converted to PDF successfully"); return true;

    } catch (Exception e) {
        Log.e("Exception", file.getAbsolutePath() + "--->" + e);
        return false;
    }
}

private static XMLSlideShow convertPPTToPDFByPPTX(FileInputStream is) {
    try {
        return new XMLSlideShow(is);
    } catch (IOException e) {
        return null;
    }
}```