You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "pupkin (JIRA)" <ji...@apache.org> on 2014/12/23 11:58:13 UTC
[jira] [Created] (PDFBOX-2581) Text corruption
pupkin created PDFBOX-2581:
------------------------------
Summary: Text corruption
Key: PDFBOX-2581
URL: https://issues.apache.org/jira/browse/PDFBOX-2581
Project: PDFBox
Issue Type: Bug
Affects Versions: 1.8.8
Reporter: pupkin
I use PDFBox 1.8.8 and try to add new text to existing pdf file. The problem is that text added by me is looking compressed for this specific pdf
[original pdf (i think this file is source of problem)|https://www.dropbox.com/s/foeb9raub20lbnx/1.pdf?dl=0]
(it is working for other pdfs).
[pdfbox generated file|https://www.dropbox.com/s/4e5ozksm5ycv7v2/2.pdf?dl=0]
[image of problem with explanation|https://www.dropbox.com/s/8r7hwq4d1i5yuxz/2014-12-23-11-04-14-5937500.png?dl=0]
It was not shown in all originally but i fixed problem with this command (set font display mode)
{code}
content.appendRawCommands("0 Tr ");
{code}
I was working with pdf matrix and checked almost everything ... and do not see way how may i fix the problem...
{code}
content.setTextMatrix(1, 0, 0, 1, 0, 0);
{code}
questions:
1) why pdfbox not ignore page font settings and use default options of font on page?
2) what mode was used in my pdf to archive such kind transformation how i may fix problem to show font correctly?
{code}
private static void writePdfBoxStamp(PDDocument document, int page,
float topLeftX, float topLeftY, float width, float height,
String text, float itemFontSize, int[] color, int rotation) throws IOException {
PDPage pdfPage = (PDPage) document.getDocumentCatalog().getAllPages().get(page);
PDPageContentStream content = new PDPageContentStream(document, pdfPage, true, true);
// COSDictionary pageFonts = pdfPage.getResources().getCOSDictionary();
//border draw
float lineWidth = 2;
float bottomLeftX = topLeftX;
float bottomLeftY = topLeftY - height;
float topRightX = topLeftX + width;
float topRightY = topLeftY;
float radius = 10;
content.setLineWidth(lineWidth);
content.setStrokingColor(new Color(color[0], color[1], color[2]));
content.setNonStrokingColor(new Color(color[0], color[1], color[2]));
PDFont font = PDType1Font.HELVETICA_BOLD;
int fontSize = (int) itemFontSize;
float linesHeight = font.getFontDescriptor().getFontBoundingBox()
.getHeight()
/ 1000 * fontSize;
float txtLineWidth = font.getStringWidth(text)
/ 1000 * fontSize;
content.setFont(font, fontSize);
content.beginText();
content.setFont(font, fontSize);
float posTextX = topLeftX + (width-txtLineWidth)/2;
float posTextY = topLeftY - height/2 - linesHeight/2 + lineWidth;
if (rotation > 0) {
int step = 0;
// clockwise rotation
if (rotation == 90) {
step = 6;
posTextX = topLeftX + (width + linesHeight)/2 - lineWidth;
posTextY = topLeftY - (height + txtLineWidth)/2;
}
if (rotation == 270) {
step = -6;
posTextX = topLeftX + (width - linesHeight/2)/2;
posTextY = topLeftY - (height - txtLineWidth)/2;
}
content.setTextRotation(-step*Math.PI*0.25, posTextX, posTextY);
} else {
content.moveTextPositionByAmount(posTextX,posTextY);
}
content.appendRawCommands("0 Tr "); //set normal text procession
content.drawString(text);
content.endText();
content.stroke();
content.close();
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)