You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Maruan Sahyoun (JIRA)" <ji...@apache.org> on 2013/05/17 08:47:17 UTC

[jira] [Commented] (PDFBOX-1571) Images Look Fuzzy

    [ https://issues.apache.org/jira/browse/PDFBOX-1571?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13660406#comment-13660406 ] 

Maruan Sahyoun commented on PDFBOX-1571:
----------------------------------------

Hi,

looking at the document in Adobe Reader and extracting the 'Hello' image using PDFBox and Adobe Acrobat there is no difference. The image is already fuzzy in the PDF so there is no better quality to be expected after extraction. 

Could you verify this?

BR
Maruan
                
> Images Look Fuzzy 
> ------------------
>
>                 Key: PDFBOX-1571
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-1571
>             Project: PDFBox
>          Issue Type: Bug
>          Components: FontBox, JempBox
>    Affects Versions: 1.7.0, 1.8.1
>         Environment: Java, Linux, Mac OS
>            Reporter: Harippriya Parameswaran
>            Priority: Blocker
>              Labels: Fuzzy
>         Attachments: Test.pdf, text.jpeg
>
>
> I tried to create a image and superimpose on the PDF, the image looks fuzzy. Also if i try to zoom the image created it looks fuzzy even for the first Zoom Out. 
> I tried increasing the resolution this is increasing the image size while superimposing and even looks more fuzzy with a huge image. Tried with the below piece of code.
>              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 * 5)
>                         || 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