All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.pdfbox.examples.rendering.CustomGraphicsStreamEngine Maven / Gradle / Ivy

Go to download

The Apache PDFBox library is an open source Java tool for working with PDF documents. This artefact contains examples on how the library can be used.

There is a newer version: 3.0.3
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.pdfbox.examples.rendering;

import java.awt.geom.Point2D;
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.contentstream.PDFGraphicsStreamEngine;
import org.apache.pdfbox.contentstream.PDFStreamEngine;
import org.apache.pdfbox.cos.COSArray;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.graphics.image.PDImage;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
import org.apache.pdfbox.util.Matrix;
import org.apache.pdfbox.util.Vector;

/**
 * Example of a custom PDFGraphicsStreamEngine subclass. Allows text and graphics to be processed
 * in a custom manner. This example simply prints the operations to stdout.
 *
 * 

See {@link PDFStreamEngine} for further methods which may be overridden. * * @author John Hewson */ public class CustomGraphicsStreamEngine extends PDFGraphicsStreamEngine { public static void main(String[] args) throws IOException { File file = new File("src/main/resources/org/apache/pdfbox/examples/rendering/", "custom-render-demo.pdf"); PDDocument doc = PDDocument.load(file); PDPage page = doc.getPage(0); CustomGraphicsStreamEngine engine = new CustomGraphicsStreamEngine(page); engine.run(); doc.close(); } /** * Constructor. * * @param page PDF Page */ protected CustomGraphicsStreamEngine(PDPage page) { super(page); } /** * Runs the engine on the current page. * * @throws IOException If there is an IO error while drawing the page. */ public void run() throws IOException { processPage(getPage()); for (PDAnnotation annotation : getPage().getAnnotations()) { showAnnotation(annotation); } } @Override public void appendRectangle(Point2D p0, Point2D p1, Point2D p2, Point2D p3) throws IOException { System.out.printf("appendRectangle %.2f %.2f, %.2f %.2f, %.2f %.2f, %.2f %.2f\n", p0.getX(), p0.getY(), p1.getX(), p1.getY(), p2.getX(), p2.getY(), p3.getX(), p3.getY()); } @Override public void drawImage(PDImage pdImage) throws IOException { System.out.println("drawImage"); } @Override public void clip(int windingRule) throws IOException { System.out.println("clip"); } @Override public void moveTo(float x, float y) throws IOException { System.out.printf("moveTo %.2f %.2f\n", x, y); } @Override public void lineTo(float x, float y) throws IOException { System.out.printf("lineTo %.2f %.2f\n", x, y); } @Override public void curveTo(float x1, float y1, float x2, float y2, float x3, float y3) throws IOException { System.out.printf("curveTo %.2f %.2f, %.2f %.2f, %.2f %.2f\n", x1, y1, x2, y2, x3, y3); } @Override public Point2D getCurrentPoint() throws IOException { // if you want to build paths, you'll need to keep track of this like PageDrawer does return new Point2D.Float(0, 0); } @Override public void closePath() throws IOException { System.out.println("closePath"); } @Override public void endPath() throws IOException { System.out.println("endPath"); } @Override public void strokePath() throws IOException { System.out.println("strokePath"); } @Override public void fillPath(int windingRule) throws IOException { System.out.println("fillPath"); } @Override public void fillAndStrokePath(int windingRule) throws IOException { System.out.println("fillAndStrokePath"); } @Override public void shadingFill(COSName shadingName) throws IOException { System.out.println("shadingFill " + shadingName.toString()); } /** * Overridden from PDFStreamEngine. */ @Override public void showTextString(byte[] string) throws IOException { System.out.print("showTextString \""); super.showTextString(string); System.out.println("\""); } /** * Overridden from PDFStreamEngine. */ @Override public void showTextStrings(COSArray array) throws IOException { System.out.print("showTextStrings \""); super.showTextStrings(array); System.out.println("\""); } /** * Overridden from PDFStreamEngine. */ @Override protected void showGlyph(Matrix textRenderingMatrix, PDFont font, int code, String unicode, Vector displacement) throws IOException { System.out.print(unicode); super.showGlyph(textRenderingMatrix, font, code, unicode, displacement); } // NOTE: there are may more methods in PDFStreamEngine which can be overridden here too. }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy