Index: /applications/editors/josm/plugins/pdfimport/src/pdfimport/LayerInfo.java
===================================================================
--- /applications/editors/josm/plugins/pdfimport/src/pdfimport/LayerInfo.java	(revision 23861)
+++ /applications/editors/josm/plugins/pdfimport/src/pdfimport/LayerInfo.java	(revision 23862)
@@ -10,40 +10,43 @@
 	public boolean stroke;
 
-	public int nr;	
+	public int nr;
 	public int divider;
-	
+	public int dash;
+
 	@Override
 	public int hashCode()
 	{
-		int code =  Double.toString(width).hashCode() ^ this.divider;
-		
+		int code =  Double.toString(width).hashCode() ^ this.divider ^ this.dash;
+
 		if (this.fill) {
 			code ^= this.fillColor.hashCode();
 		}
-		
+
 		if (this.stroke) {
 			code ^= this.color.hashCode();
 		}
-		
+
 		return code;
 	}
-	
+
+	@Override
 	public boolean equals(Object o)
 	{
 		LayerInfo l = (LayerInfo) o;
-		boolean eq = 
-			this.width == l.width && 
-			this.divider == l.divider && 
+		boolean eq =
+			this.width == l.width &&
+			this.divider == l.divider &&
 			this.fill == l.fill &&
-			this.stroke == l.stroke;
-		
+			this.stroke == l.stroke &&
+			this.dash == l.dash;
+
 		if (this.fill){
-			eq &= this.fillColor.equals(l.fillColor); 
+			eq &= this.fillColor.equals(l.fillColor);
 		}
-		
-		if (this.stroke) {			 
-			eq &= this.color.equals(l.color);			
+
+		if (this.stroke) {
+			eq &= this.color.equals(l.color);
 		}
-		
+
 		return eq;
 	}
@@ -57,6 +60,7 @@
 		result.fill = this.fill;
 		result.stroke = this.stroke;
+		result.dash = this.dash;
 		return result;
 	}
-	
+
 }
Index: /applications/editors/josm/plugins/pdfimport/src/pdfimport/LoadPdfDialog.java
===================================================================
--- /applications/editors/josm/plugins/pdfimport/src/pdfimport/LoadPdfDialog.java	(revision 23861)
+++ /applications/editors/josm/plugins/pdfimport/src/pdfimport/LoadPdfDialog.java	(revision 23862)
@@ -2,10 +2,4 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
-import it.stefanochizzolini.clown.documents.Document;
-import it.stefanochizzolini.clown.documents.Page;
-import it.stefanochizzolini.clown.documents.contents.ContentScanner;
-import it.stefanochizzolini.clown.documents.contents.Contents;
-import it.stefanochizzolini.clown.files.File;
-import it.stefanochizzolini.clown.tokens.FileFormatException;
 
 import java.awt.BorderLayout;
@@ -18,4 +12,5 @@
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
+import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
@@ -43,4 +38,6 @@
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.OsmExporter;
+
+import pdfimport.pdfbox.PdfBoxParser;
 
 public class LoadPdfDialog extends JFrame {
@@ -242,5 +239,5 @@
 				new Runnable() {
 					public void run() {
-						data = loadPDF(fileName.getAbsolutePath());
+						data = loadPDF(fileName);
 					}
 				},
@@ -411,9 +408,12 @@
 	}
 
-	private PathOptimizer loadPDF(String fileName) {
-		File file;
+	private PathOptimizer loadPDF(File fileName) {
+
+		PathOptimizer data = new PathOptimizer();
 
 		try {
-			file = new File(fileName);
+			PdfBoxParser parser = new PdfBoxParser(data);
+			parser.parse(fileName);
+
 		} catch (FileNotFoundException e1) {
 			JOptionPane
@@ -422,5 +422,5 @@
 					tr("File not found."));
 			return null;
-		} catch (FileFormatException e1) {
+		} catch (it.stefanochizzolini.clown.tokens.FileFormatException e1) {
 			JOptionPane
 			.showMessageDialog(
@@ -428,10 +428,17 @@
 					tr("Could not parse file. Not a PDF file?"));
 			return null;
-		}
+		} catch (Exception e) {
+			JOptionPane
+			.showMessageDialog(
+					Main.parent,
+					tr("Error while parsing: {0}", e.getMessage()));
+			return null;
+		}
+
+		/*
+		File file = new File(fileName);
 
 		Document document = file.getDocument();
 		Page page = document.getPages().get(0);
-
-		PathOptimizer data = new PathOptimizer();
 		data.bounds = page.getBox();
 
@@ -440,8 +447,7 @@
 		processor.process(new ContentScanner(c));
 		processor.finish();
-		document.delete();
+		document.delete();*/
 
 		data.optimize();
-
 		return data;
 	}
Index: /applications/editors/josm/plugins/pdfimport/src/pdfimport/PathOptimizer.java
===================================================================
--- /applications/editors/josm/plugins/pdfimport/src/pdfimport/PathOptimizer.java	(revision 23861)
+++ /applications/editors/josm/plugins/pdfimport/src/pdfimport/PathOptimizer.java	(revision 23862)
@@ -145,4 +145,11 @@
 
 					List<Point2D> newNodes = tryMergeNodeLists(path.points, p1.points);
+
+					if (newNodes == null)
+					{
+						int a = 10;
+						a++;
+					}
+
 					path.points = newNodes;
 					mergedPaths.add(p1);
Index: /applications/editors/josm/plugins/pdfimport/src/pdfimport/pdfbox/PdfBoxParser.java
===================================================================
--- /applications/editors/josm/plugins/pdfimport/src/pdfimport/pdfbox/PdfBoxParser.java	(revision 23861)
+++ /applications/editors/josm/plugins/pdfimport/src/pdfimport/pdfbox/PdfBoxParser.java	(revision 23862)
@@ -3,4 +3,5 @@
 
 import java.awt.Dimension;
+import java.awt.geom.Rectangle2D;
 import java.io.File;
 import java.util.List;
@@ -12,5 +13,4 @@
 import org.apache.pdfbox.util.PDFStreamEngine;
 
-import pdfimport.GraphicsProcessor;
 import pdfimport.PathOptimizer;
 
@@ -41,7 +41,8 @@
 		Dimension pageDimension = pageSize.createDimension();
 
-		GraphicsProcessor p = new GraphicsProcessor(target);
+		GraphicsProcessor p = new GraphicsProcessor(target, pageDimension.getHeight());
 		PageDrawer drawer = new PageDrawer();
 		drawer.drawPage(p, page, pageDimension);
+		this.target.bounds = new Rectangle2D.Double(pageSize.getLowerLeftX(), pageSize.getLowerLeftY(), pageSize.getWidth(), pageSize.getHeight());
 	}
 }
