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:
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