mirror of
				https://github.com/Frooodle/Stirling-PDF.git
				synced 2025-10-25 11:17:28 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			131 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package stirling.software.SPDF.pdf;
 | |
| 
 | |
| import java.awt.geom.Point2D;
 | |
| import java.io.IOException;
 | |
| import java.util.List;
 | |
| 
 | |
| import org.apache.pdfbox.contentstream.operator.Operator;
 | |
| import org.apache.pdfbox.contentstream.operator.OperatorName;
 | |
| import org.apache.pdfbox.cos.COSBase;
 | |
| import org.apache.pdfbox.cos.COSName;
 | |
| import org.apache.pdfbox.pdmodel.PDPage;
 | |
| import org.apache.pdfbox.pdmodel.graphics.PDXObject;
 | |
| import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
 | |
| import org.apache.pdfbox.pdmodel.graphics.image.PDImage;
 | |
| import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
 | |
| 
 | |
| public class ImageFinder extends org.apache.pdfbox.contentstream.PDFGraphicsStreamEngine {
 | |
|     private boolean hasImages = false;
 | |
| 
 | |
|     public ImageFinder(PDPage page) {
 | |
|         super(page);
 | |
|     }
 | |
| 
 | |
|     public boolean hasImages() {
 | |
|         return hasImages;
 | |
|     }
 | |
| 
 | |
|     @Override
 | |
|     protected void processOperator(Operator operator, List<COSBase> operands) throws IOException {
 | |
|         String operation = operator.getName();
 | |
|         if (operation.equals(OperatorName.DRAW_OBJECT)) {
 | |
|             COSBase base = operands.get(0);
 | |
|             if (base instanceof COSName) {
 | |
|                 COSName objectName = (COSName) base;
 | |
|                 PDXObject xobject = getResources().getXObject(objectName);
 | |
|                 if (xobject instanceof PDImageXObject) {
 | |
|                     hasImages = true;
 | |
|                 } else if (xobject instanceof PDFormXObject) {
 | |
|                     PDFormXObject form = (PDFormXObject) xobject;
 | |
|                     ImageFinder innerFinder = new ImageFinder(getPage());
 | |
|                     innerFinder.processPage(getPage());
 | |
|                     if (innerFinder.hasImages()) {
 | |
|                         hasImages = true;
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         super.processOperator(operator, operands);
 | |
|     }
 | |
| 
 | |
| 	@Override
 | |
| 	public void appendRectangle(Point2D p0, Point2D p1, Point2D p2, Point2D p3) throws IOException {
 | |
| 		// TODO Auto-generated method stub
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public void drawImage(PDImage pdImage) throws IOException {
 | |
| 		// TODO Auto-generated method stub
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public void clip(int windingRule) throws IOException {
 | |
| 		// TODO Auto-generated method stub
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public void moveTo(float x, float y) throws IOException {
 | |
| 		// TODO Auto-generated method stub
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public void lineTo(float x, float y) throws IOException {
 | |
| 		// TODO Auto-generated method stub
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public void curveTo(float x1, float y1, float x2, float y2, float x3, float y3) throws IOException {
 | |
| 		// TODO Auto-generated method stub
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public Point2D getCurrentPoint() throws IOException {
 | |
| 		// TODO Auto-generated method stub
 | |
| 		return null;
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public void closePath() throws IOException {
 | |
| 		// TODO Auto-generated method stub
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public void endPath() throws IOException {
 | |
| 		// TODO Auto-generated method stub
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public void strokePath() throws IOException {
 | |
| 		// TODO Auto-generated method stub
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public void fillPath(int windingRule) throws IOException {
 | |
| 		// TODO Auto-generated method stub
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public void fillAndStrokePath(int windingRule) throws IOException {
 | |
| 		// TODO Auto-generated method stub
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public void shadingFill(COSName shadingName) throws IOException {
 | |
| 		// TODO Auto-generated method stub
 | |
| 		
 | |
| 	}
 | |
| 
 | |
|     // ... rest of the overridden methods
 | |
| }
 |