[ https://issues.apache.org/jira/browse/PDFBOX-1571?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Harippriya Parameswaran updated PDFBOX-1571: -------------------------------------------- Attachment: Test.pdf text.jpeg > 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 * 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