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