You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Harippriya Parameswaran (JIRA)" <ji...@apache.org> on 2013/04/24 16:51:15 UTC

[jira] [Created] (PDFBOX-1578) The English Words are shown as Symbols and wrongly displayed

Harippriya Parameswaran created PDFBOX-1578:
-----------------------------------------------

             Summary: The English Words are shown as Symbols and wrongly displayed 
                 Key: PDFBOX-1578
                 URL: https://issues.apache.org/jira/browse/PDFBOX-1578
             Project: PDFBox
          Issue Type: Bug
          Components: FontBox, JempBox
    Affects Versions: 1.8.1, 1.7.0
         Environment: Java, MacOS, Linux
            Reporter: Harippriya Parameswaran
            Priority: Blocker


When i run the below piece of code in my server continuously it is creating the text with symbols and showing incorrect word.

  String fontFile = "Monika.ttf"; 
              String text="Hello"; 
             float fontSize = 20; 
            Font font = null; 
        try { 
                 
                 font = Font.createFont(Font.TRUETYPE_FONT, 
                 Sample.class.getClassLoader() 
                 .getResource(fontFile).openStream()); 
                 font = font.deriveFont(fontSize); 
        } catch (Exception e) { 
                throw new IOException("could not load TrueTypeFont for file: " 
                                + fontFile, e); 
        } 

        FontRenderContext fc = new FontRenderContext(null, true, true); 

        Rectangle2D bounds = font.getStringBounds(text, fc); 

        int width = (int) bounds.getWidth(); 
        int height = (int) bounds.getHeight(); 

        int maxWidth = 500; 
        int maxHeight = 50; 
        int minFontSize = 20; 

        while (width > (maxWidth - 2 * EsignMessages.getInt("PADDING_WIDTH")) 
                        || height > (maxHeight - 2 * 5)) { 
                if (fontSize <= minFontSize) { 
                        break; 
                } 
                fontSize--; 
                font = font.deriveFont(fontSize); 
                bounds = font.getStringBounds(text, fc); 
                width = (int) bounds.getWidth(); 
                height = (int) bounds.getHeight(); 
        } 

        int paddingWidth = 5; 
        int paddingHeight = 5; 
        BufferedImage buffer = null; 
                PDDocument doc = new PDDocument(); 
                PDPage page = new PDPage(new PDRectangle(width + 2 * paddingWidth, 
                                height + 2 * paddingHeight)); 
                 
                BufferedImage newBufferedImage = ImageIO.read(Sample.class 
                                .getClassLoader() 
                                .getResource(Sample.get("image.blue.background")) 
                                .openStream()); 
                PDJpeg newImage = new PDJpeg(doc, newBufferedImage); 

                PDFont pdffont = null; 
                try { 
                         
                         pdffont = PDTrueTypeFont.loadTTF(doc, 
                         Sample.class.getClassLoader().getResource(fontFile).openStream()); 
                         
                } catch (Exception e) { 
                        throw new IOException( 
                                        "could not load PDTrueTypeFont for file: " + fontFile, 
                                        e); 
                } 
                PDPageContentStream stream = new PDPageContentStream(doc, page); 
                stream.drawImage(newImage, 0, 0); 
                stream.setNonStrokingColor(Color.BLACK); 
                stream.setStrokingColor(Color.BLACK); 
                stream.beginText(); 
                stream.setFont(pdffont, fontSize); 
                stream.moveTextPositionByAmount(paddingWidth, 
                                (float) (height / 2.5 + paddingHeight)); 
                stream.drawString(text); 
                stream.endText(); 
                stream.close(); 

                buffer = page.convertToImage(BufferedImage.TYPE_INT_RGB, 
                                94); 

     
       // Convert image image to PDXObjectImage 
        PDXObjectImage watermark = new PDJpeg(doc, buffer); 
        @SuppressWarnings("rawtypes") 
        List pages = doc.getDocumentCatalog().getAllPages(); 
        Iterator iterator1 = pages.iterator(); 
        PDPage page1=null; 
        while(iterator1.hasNext()){ 
            page1 = (PDPage) iterator1.next(); 
        } 

           PDPageContentStream stream1 = new PDPageContentStream(doc, page1, true, true); 
             stream1.drawImage(watermark,50,60); 
            stream1.close(); 
                 ImageIO.write(buffer, "jpeg", new 
                  File("/Users/test/"+"text.jpeg")); 
                doc.close();    

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira