You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "MH (JIRA)" <ji...@apache.org> on 2010/12/13 13:26:03 UTC
[jira] Issue Comment Edited: (PDFBOX-854)
PDPageContentStream.drawString() doesn't work with all PDFs
[ https://issues.apache.org/jira/browse/PDFBOX-854?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12970777#action_12970777 ]
MH edited comment on PDFBOX-854 at 12/13/10 7:25 AM:
-----------------------------------------------------
Tested with latest snapshots (pdfbox-1.4.0-20101211.181302-26.jar, fontbox-1.4.0-20101211.181302-27.jar, jempbox-1.4.0-20101211.181302-27.jar), ensured to recompile everything (log shows new PDFBox version number) but text "jumped" all over the place. I had to do translations of my "original" x/y coordinates myself that I expected PDFBox is doing for me:
------------------------------------------------------------------------------
cs.beginText();
cs.setFont(font, sizeOfFont);
final int rotation = page.findRotation();
final PDRectangle pageSize = page.findMediaBox();
final float tf = xf; //temporary save xf value
switch (rotation) {
case 90 :
xf = pageSize.getWidth() - yf;
yf = tf;
cs.setTextRotation(Math.PI/2.0, xf, yf); //rotate text 90° counterclockwise
break;
case 180 : //NOT tested!
xf = -xf;
yf = pageSize.getHeight() - yf;
cs.setTextTranslation(xf, yf); //move to x/y position without text rotation
break;
case 270 : //NOT tested!
xf = -pageSize.getWidth() + yf;
yf = -tf;
cs.setTextRotation(Math.PI/2.0, xf, yf); //rotate text 90° counterclockwise
break;
case 0 :
case 360 : //NOT tested!
default:
cs.setTextTranslation(xf, yf); //move to x/y position without text rotation
break;
}
//cs.moveTextPositionByAmount(xf, yf);
cs.drawString(text);
-------------------------------------------------------------------------
was (Author: mhilpert):
Can't get it to work: I downloaded the latest snapshots (pdfbox-1.4.0-20101211.181302-26.jar, fontbox-1.4.0-20101211.181302-27.jar, jempbox-1.4.0-20101211.181302-27.jar), ensured to recompile everything (log shows new PDFBox version number) text now "jumps" all over the place. I have no idea what that means:
92 if (rotate)
93 {
94 // rotate the text according to the page rotation
95 contentStream.setTextRotation(Math.PI/2, centeredXPosition, centeredYPosition);
96 }
97 else
98 {
99 contentStream.setTextTranslation(centeredXPosition, centeredYPosition);
100 }
Why is ther an if/else? What does setTextTranslation do? And what is the additional parameter in the PDPageContentStream constructor?
> PDPageContentStream.drawString() doesn't work with all PDFs
> -----------------------------------------------------------
>
> Key: PDFBOX-854
> URL: https://issues.apache.org/jira/browse/PDFBOX-854
> Project: PDFBox
> Issue Type: Bug
> Components: PDModel
> Affects Versions: 1.3.1
> Environment: JDK 1.6.0_21
> Reporter: MH
> Assignee: Andreas Lehmkühler
> Fix For: 1.4.0
>
> Attachments: Text_Added_With_iText.zip, Website_A4_Landscape_PDF14.zip, Website_A4_Landscape_PDF14_addedText.pdf
>
>
> I add custom text to misc exsiting PDF files. Now I wondered why my text doesn't appear for a specific PDF. It is not encrypted, has the same page size and adding Text with iText 2.1.7 works as expected. My code to add text is:
> ----------------------------------
> final PDPage page = (PDPage) allPages.get(i);
> final PDPageContentStream contentStream = new PDPageContentStream(doc, page, true, false);
> contentStream.beginText();
> contentStream.setFont(font, sizeOfFont);
> contentStream.moveTextPositionByAmount(xf, yf);
> contentStream.drawString(text);
> contentStream.endText();
> contentStream.close();
> ---------------------------------
> I tried to find differences between this PDF and other PDFs. What I noticed: the PDF where I can't see the text has a PDF-Version "1.3" and was created by "AFPL Ghostscript 8.54". Is there some known issue with PDFBox and such "older" PDF formats?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.