PDF to TXT oder Array/ArrayList to XLS

burny

Grünschnabel
Hey Jungs!!

Ich habe schon wieder ein Problem. Hier kann man nachlesen um was es ging, mein jetztiges hängt damit Zusammen.
Um es grob zusammenzu fassen, ich versuche aus einem PDF bestimmte Textstellen in ein XLS zu speichern.
Mein Ansatz ist das PDF als TXT umzuwandeln, das TXT dann nach einer bestimmten RegEx zu bearbeiten (Zeilenumbruch nach jedem Tab) und dann in eine ArrayList zu laden. Diese ArrayList kann ich dann gezielt ansteuern um mein XLS zu füllen und erstellen.

Mein Problem ist, dass ich für das Umwandeln der PDF in TXT die PDFBox verwende und hier genau den PDFTextStripper, dieser achtet aber nicht auf die Formatierung der PDF und das ist das Problem. Denn ich muss das PDF nach Tabs bearbeiten, die Stripper macht die Tabs aber kaputt und in dem TXT werden diese dann als Leerzeichen dargestellt.
Ich habe schon ein Programm geschrieben, das alles umsetzt aber eben nicht richtig ****t.

Wie seht ihr das, ist mein Weg über die TXT zu umständlich, kann ich das PDF gleich in eine ArrayList oder Array speichern? Ich bin noch ziemlich am Anfang meiner Programmierlaufbahn und würde mich sehr über Tips und HIlfe freuen!!

Schon mal vielen Dank und
beste Grüße Chhristian

Hier noch mal der Code von dem was ich bis jetzt gemacht habe:
Code:
public class PDFtoXLSTest
{
	public static void main(String[] args)
	{
		String pdfPath="c:\\test\\8.10.pdf"; //Pfad zu dem auszulesenden PDF
		convertPdftoTxt(pdfPath);
		
		String fileName="c:\\test\\8.10.xls"; //Pfad und Name des zu erstellenden XLS
		writeDataToExcelFile(fileName);
	} //endmethod main

	public static void convertPdftoTxt (String pdfPath)
	{
		PDDocument pd;
		BufferedWriter wr;
		try 
		{
			File input = new File(pdfPath); 
			File output = new File("C:\\test\\temporaeretxt.txt"); 
			pd = PDDocument.load(input);
			PDFTextStripper stripper = new PDFTextStripper();
			wr = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(output)));
			stripper.writeText(pd, wr);
			System.out.println ("PDF to TXT conversion successfull");
			if (pd != null) 
			{
				pd.close();
			} //endif
		} //endtry
		
		catch (Exception e)
		{
			e.printStackTrace();
		} //endcatch
	} //endmethod convertPdftoTxt
	
	public static void writeDataToExcelFile(String fileName) 
	{

		String [][] excelData = preapreDataToWriteToExcel();		 

		HSSFWorkbook myWorkBook = new HSSFWorkbook();
		HSSFSheet mySheet = myWorkBook.createSheet();
		HSSFRow myRow = null;
		HSSFCell myCell = null;

		for (int rowNum = 0; rowNum < excelData[0].length; rowNum++)
		{
			myRow = mySheet.createRow(rowNum);

			for (int cellNum = 0; cellNum < 3 ; cellNum++)
			{
				myCell = myRow.createCell(cellNum);
				myCell.setCellValue(excelData[rowNum][cellNum]);      

			}
		}

		try
		{
			FileOutputStream out = new FileOutputStream(fileName);
			myWorkBook.write(out);
			out.close();
		}
		catch(Exception e){ e.printStackTrace();}			

	}
	 
	public static String [][] preapreDataToWriteToExcel()
	{
		 
		String line;
		ArrayList<String> array = new ArrayList<String>();
		
		try
		{
			FileReader fread = new FileReader("C:\\test\\temporaeretxt.txt"); 
			BufferedReader in = new BufferedReader(fread); 

			while ((line = in.readLine()) != null) 
			{
				String[] result = line.split("[\\ ]");

				for (int y = 0; y < result.length; y++) 
				{
					array.add(result[y]);
				}
			}//endwhile

			for (String s : array)
			{ 
				System.out.println(s);
			} //endfor 

			System.out.println ("XLS wurde erstellt");
		} //endtry
		catch(IOException e)
		{
			System.out.println("IO-Fehler!");
		} //endcatch
 
		String [][] excelData = new String [3][3];
		excelData[0][0]="Test";
		excelData[0][1]="Test2";
		excelData[0][2]="Test3";

		excelData[1][0]=array.get(0);
		excelData[1][1]=array.get(1);
		excelData[1][2]=array.get(2);

		return excelData;

	} //preapreDataToWriteToExcel	
	
} //endclass
 
Mußt du das auf der Arbeit machen? Kennt sich da vielleicht sonst noch jemand mit PDF Extraktion aus? Nur so als Frage, weil es normalerweise besser ist direkt Leute zu fragen wenn man die Möglichkeit hat, statt es im Internet zu versuchen.

Woran siehst du denn, dass im PDF Tabs vorhanden sind?
 
Nein ich mache es nicht auf der Arbeit, ist eine Hausarbeit für die Hochschule.

Wenn man in dem PDF alles markiert sieht man, dass dort Tabs sind.
 
Zurück