You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2010/04/05 19:15:45 UTC
svn commit: r930909 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java
Author: lehmi
Date: Mon Apr 5 17:15:44 2010
New Revision: 930909
URL: http://svn.apache.org/viewvc?rev=930909&view=rev
Log:
PDFBOX-582: added support for text rendering mode 2 (invisible text). Patch by Maruan Sahyoun (sahyoun at fileaffairs dot de)
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java?rev=930909&r1=930908&r2=930909&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java Mon Apr 5 17:15:44 2010
@@ -16,10 +16,14 @@
*/
package org.apache.pdfbox.pdfviewer;
+import java.awt.AlphaComposite;
import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Composite;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
+import java.awt.color.ColorSpace;
import java.awt.geom.Area;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
@@ -134,38 +138,40 @@ public class PageDrawer extends PDFStrea
/**
* You should override this method if you want to perform an action when a
- * text is being processed.
+ * text is being processed.
*
- * @param text The text to process
+ * @param text The text to process
*/
protected void processTextPosition( TextPosition text )
{
- //should use colorspaces for the font color but for now assume that
- //the font color is black
try
{
- if( this.getGraphicsState().getTextState().getRenderingMode() == PDTextState.RENDERING_MODE_FILL_TEXT )
- {
- graphics.setColor( this.getGraphicsState().getNonStrokingColor().getJavaColor() );
- }
- else if( this.getGraphicsState().getTextState().getRenderingMode()
- == PDTextState.RENDERING_MODE_STROKE_TEXT )
- {
- graphics.setColor( this.getGraphicsState().getStrokingColor().getJavaColor() );
+ switch(this.getGraphicsState().getTextState().getRenderingMode()) {
+ case PDTextState.RENDERING_MODE_FILL_TEXT:
+ graphics.setColor( this.getGraphicsState().getNonStrokingColor().getJavaColor() );
+ break;
+ case PDTextState.RENDERING_MODE_STROKE_TEXT:
+ graphics.setColor( this.getGraphicsState().getStrokingColor().getJavaColor() );
+ break;
+ case PDTextState.RENDERING_MODE_NEITHER_FILL_NOR_STROKE_TEXT:
+ //basic support for text rendering mode "invisible"
+ Color nsc = this.getGraphicsState().getStrokingColor().getJavaColor();
+ float[] components = {Color.black.getRed(),Color.black.getGreen(),Color.black.getBlue()};
+ Color c = new Color(nsc.getColorSpace(),components,0f);
+ graphics.setColor(c);
+ break;
+ default:
+ // TODO : need to implement....
+ log.warn("Unsupported RenderingMode "
+ + this.getGraphicsState().getTextState().getRenderingMode()
+ + " in PageDrawer.processTextPosition()."
+ + " Using RenderingMode "
+ + PDTextState.RENDERING_MODE_FILL_TEXT
+ + " instead");
+ graphics.setColor( this.getGraphicsState().getNonStrokingColor().getJavaColor() );
}
- else
- {
- // TODO : need to implement....
- log.warn("Unsupported RenderingMode "
- + this.getGraphicsState().getTextState().getRenderingMode()
- + " in PageDrawer.processTextPosition()."
- + " Using RenderingMode "
- + PDTextState.RENDERING_MODE_FILL_TEXT
- + " instead");
- graphics.setColor( this.getGraphicsState().getNonStrokingColor().getJavaColor() );
- }
- PDFont font = text.getFont();
+ PDFont font = text.getFont();
Matrix textPos = text.getTextPos().copy();
float x = textPos.getXPosition();
// the 0,0-reference has to be moved from the lower left (PDF) to the upper left (AWT-graphics)