在java中使用IText库生成pdf并不像预期的那样工作

时间:2015-06-16 19:28:04

标签: java itext

我有这段代码让我以某种方式在图像中显示乳胶配方并显示为pdf。第一件事是我打开pdf文件109时出错。并且第一页的公式不是显示在所有。 接下来的还可以。 有任何想法吗?感谢

 document.open();
                Paragraph preface = new Paragraph();
                // We add one empty line
                addEmptyLine(preface, 1);
                // Lets write a big header
                preface.add(new Paragraph("Test Generat", catFont));

                addEmptyLine(preface, 1);
                document.add(preface);
            // Start a new page
           // document.newPage();
            for (int i = 0; i < intrebari.size(); i++) {

                TeXFormula formula = new TeXFormula("x=\\frac{-b \\pm \\sqrt {b^2-4ac}}{2a}");
                TeXIcon icon = formula
                        .createTeXIcon(TeXConstants.STYLE_DISPLAY, 20);

                // insert a border 
                icon.setInsets(new Insets(5, 5, 5, 5));

                // now create an actual image of the rendered equation
                BufferedImage image = new BufferedImage(icon.getIconWidth(),
                        icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB);
                Graphics2D g2 = image.createGraphics();
                g2.setColor(Color.white);
                g2.fillRect(0, 0, icon.getIconWidth(), icon.getIconHeight());
                JLabel jl = new JLabel();
                jl.setForeground(new Color(0, 0, 0));
                icon.paintIcon(jl, g2, 0, 0);
                document.setPageSize(PageSize.A4);
                PdfContentByte pdfCB = new PdfContentByte(writer);
                try {

                    Image image1 = Image.getInstance(pdfCB, image, 1);
                    document.newPage();

                    Phrase p = new Phrase("quick brown fox jumps over the lazy dog.");

                    p.add(new Chunk(image1, 0, 0, true));
                    p.add("  ");
                    p.add(new Chunk(image1, 0, 0, true));
                    ColumnText ct = new ColumnText(writer.getDirectContent());
                    ct.setSimpleColumn(new Rectangle(20, document.getPageSize().getWidth(), 400, 800));
                    ct.addText(p);
                    ct.go();
                    document.newPage();

                } catch (BadElementException | IOException ex) {
                    Logger.getLogger(Utils.class.getName()).log(Level.SEVERE, null, ex);
                }

            }

            document.newPage();

        }

0 个答案:

没有答案