keiron 01/06/25 07:15:54
Modified: src/org/apache/fop/render/pdf PDFRenderer.java
Log:
workaround for a bug in Acrobat Reader where text may disappear or
be placed in the wrong position
Revision Changes Path
1.70 +16 -6 xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java
Index: PDFRenderer.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -r1.69 -r1.70
--- PDFRenderer.java 2001/06/10 17:04:36 1.69
+++ PDFRenderer.java 2001/06/25 14:15:45 1.70
@@ -1,4 +1,4 @@
-/* $Id: PDFRenderer.java,v 1.69 2001/06/10 17:04:36 arved Exp $
+/* $Id: PDFRenderer.java,v 1.70 2001/06/25 14:15:45 keiron Exp $
* Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
* For details on use and redistribution please refer to the
* LICENSE file included with these sources."
@@ -374,7 +374,6 @@
GraphicsNodeRenderContext rc = getRenderContext();
BridgeContext ctx = new BridgeContext(userAgent, rc);
GraphicsNode root;
- //System.out.println("creating PDFGraphics2D");
PDFGraphics2D graphics =
new PDFGraphics2D(true, fs, pdfDoc,
currentFontName, currentFontSize, currentXPosition,
@@ -387,7 +386,7 @@
root.paint(graphics, rc);
currentStream.add(graphics.getString());
} catch (Exception e) {
- e.printStackTrace();
+ MessageHandler.errorln("Error: svg graphic could not be rendered: " +
e.getMessage());
}
currentStream.add("Q\n");
@@ -408,6 +407,7 @@
true);
TextPainter textPainter = new StrokingTextPainter();
+ //TextPainter textPainter = new PDFTextPainter();
GraphicsNodeRableFactory gnrFactory =
new ConcreteGraphicsNodeRableFactory();
@@ -499,9 +499,19 @@
int space = prevWordX - rx + prevWordWidth;
float emDiff =
(float) space / (float) currentFontSize * 1000f;
- pdf.append(Float.toString(emDiff));
- pdf.append(" ");
- pdf.append(startText);
+ // this prevents a problem in Acrobat Reader where large
+ // numbers cause text to disappear or default to a limit
+ if(emDiff < -33000) {
+ closeText();
+
+ pdf.append("1 0 0 1 " +(rx / 1000f) + " " +
+ (bl / 1000f) + " Tm [" + startText);
+ textOpen = true;
+ } else {
+ pdf.append(Float.toString(emDiff));
+ pdf.append(" ");
+ pdf.append(startText);
+ }
}
prevWordWidth = area.getContentWidth();
prevWordX = rx;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]