source: osm/applications/editors/josm/plugins/pdfimport/src/pdfimport/pdfbox/PdfBoxParser.java@ 23863

Last change on this file since 23863 was 23863, checked in by extropy, 14 years ago

Transition to pdfbox library.

File size: 1.5 KB
Line 
1package pdfimport.pdfbox;
2import static org.openstreetmap.josm.tools.I18n.tr;
3
4import java.awt.Dimension;
5import java.awt.geom.Rectangle2D;
6import java.io.File;
7import java.util.List;
8
9import org.apache.pdfbox.pdfviewer.PageDrawer;
10import org.apache.pdfbox.pdmodel.PDDocument;
11import org.apache.pdfbox.pdmodel.PDPage;
12import org.apache.pdfbox.pdmodel.common.PDRectangle;
13import org.apache.pdfbox.util.PDFStreamEngine;
14
15import pdfimport.PathOptimizer;
16
17public class PdfBoxParser extends PDFStreamEngine{
18 private final PathOptimizer target;
19
20 public PdfBoxParser(PathOptimizer target){
21 this.target = target;
22 }
23
24 @SuppressWarnings("unchecked")
25 public void parse(File file) throws Exception
26 {
27 PDDocument document = PDDocument.load( file);
28
29 if( document.isEncrypted() ){
30 throw new Exception(tr("Encrypted documents not supported."));
31 }
32
33 List allPages = document.getDocumentCatalog().getAllPages();
34
35 if (allPages.size() != 1) {
36 throw new Exception(tr("The PDF file must have exactly one page."));
37 }
38
39 PDPage page = (PDPage)allPages.get(0);
40 PDRectangle pageSize = page.findMediaBox();
41 Dimension pageDimension = pageSize.createDimension();
42 int rotation = page.getRotation();
43
44 GraphicsProcessor p = new GraphicsProcessor(target, rotation, pageDimension.getHeight());
45 PageDrawer drawer = new PageDrawer();
46 drawer.drawPage(p, page, pageDimension);
47 this.target.bounds = new Rectangle2D.Double(pageSize.getLowerLeftX(), pageSize.getLowerLeftY(), pageSize.getWidth(), pageSize.getHeight());
48 }
49}
Note: See TracBrowser for help on using the repository browser.