Toon posts:

[Java] Krijg file niet geopend met PDFBox

Pagina: 1
Acties:

Verwijderd

Topicstarter
Heb het volgende stukje code in java, waarbij ik dmv van PDFBox een PDF in wil lezen, de metagegevens invullen en dan weer opslaan. Klinkt erg simpel, maar toch gaat er iets niet goed. Volgens mij gaat het laden van de PDF namelijk niet goed (als ik bijv. het document wil printen krijg ik een null pointer exception).

Waarschijnlijk is het iets heel simpels, maar wie helpt me uit de brand? De (weinige) voorbeelden die ik gevonden heb werkten ook niet echt.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
File scanFile = new File(pdfURL);

if(scanFile.exists()) 
{
    PDDocument pdDoc = null;
    pdDoc.load(scanFile);
    PDDocumentInformation pdDocInfo = pdDoc.getDocumentInformation();

    pdDocInfo.setAuthor(auteurs);
    pdDocInfo.setTitle(titel);
    pdDoc.setDocumentInformation(pdDocInfo);
    pdDoc.save(scanFile.toString());
    pdDoc.close();
}

  • Janoz
  • Registratie: Oktober 2000
  • Nu online

Janoz

Moderator Devschuur®

!litemod

pdDoc is null. Deze heb je nog niet geinstantieerd. Je kunt op dit object dus nog helemaal niet de methode 'load' aanroepen. Ik weet niet precies hoe pdfbox werkt maar waarschijnlijk zul je een nieuw pddocument aan moeten maken met new of via een factory methode.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Nee maar, je krijgt een NullpointerException? Waarschijnlijk point er iets naar null dan, nee?

Lees deze 2 regeltjes maar eens totdat je weet wat er mis zou kunnen zijn:
Java:
1
2
PDDocument pdDoc = null;
pdDoc.load(scanFile);


edit:
OK, iets minder sarcasme dan maar...

Je hebt een bepaalde variabele getypeerd, maar er nog geen echt object aan gehangen die bepaalde operaties voor jou kan uitvoeren. Je moet dus nog ergens een new PDDocument voorzien, en misschien dat je zelfs je scanFile in de constructor kan meegeven?

[ Voor 39% gewijzigd door -FoX- op 23-02-2007 09:15 ]


Verwijderd

Topicstarter
Ok duidelijk, dat was idd nog een testfout. Hiervoor had ik hem echter wel geinstantieerd, maar laadt hij de pdf alsnog niet.

  • Marcj
  • Registratie: November 2000
  • Laatst online: 12:49
Ok, maar wat voor error krijg je? Wat gaat er fout? Want als dit niet je echt code is, wat valt er dan voor ons wel te beoordelen?

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Het is een URL, moet je die dan niet eerst binnenhalen met een soort WebRequest?

Going for adventure, lots of sun and a convertible! | GMT-8


Verwijderd

Topicstarter
Dit is wel mijn 'echte' code. De string fileURL staat voor de absolute locatie van het bestand.

De file bestaat ook (getest met scanFile.exists() ),dus dat gaat goed.

Verder krijg ik geen error, maar als ik de pdf weer opsla (regel 12) is mijn pdf 'kapot' hij is dan nog maar 1kb groot en kan hem dus ook niet meer openen met de melding dat het bestand beschadigd is.

Meer informatie qua foutmeldingen heb ik helaas niet.

Verwijderd

laatmaar

[ Voor 97% gewijzigd door Verwijderd op 23-02-2007 12:20 ]


  • Marcj
  • Registratie: November 2000
  • Laatst online: 12:49
En als je alleen load en save achter elkaar uitvoerd? Gaat het dan ook nog steeds fout? Want dan denk ik dat hij of het origineel niet (goed) kan lezen of dat de save functie stuk is. In beide gevallen waarschijnlijk een probleem in PDFBox. Ik denk dat je daarvoor echt in de source van PDFBox moet duiken wat er mis gaat...

  • Janoz
  • Registratie: Oktober 2000
  • Nu online

Janoz

Moderator Devschuur®

!litemod

Als je in de javadoc kijkt zie je dat load een static methode van PDDocument is. Deze methode levert een PDDocument op. Naast het feit dat je een static methode op een niet static manier aanroept vang je het resulterende document ook niet op. Je laat hem wel in, maar je doet er niks mee (nee, pdDoc is GEEN referentie naar je zojuist ingeladen pdf document).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Kijk.. aan zulke reacties hebben we wat :) het was inderdaad de fout dat ik de methode niet als een static methode aanriep. hij loopt nu als een zonnetje :-)

Bedankt voor de hulp..

  • Janoz
  • Registratie: Oktober 2000
  • Nu online

Janoz

Moderator Devschuur®

!litemod

Voglende keer gewoon gelijk ff in de documentatie kijken. Dan had je dat zo een halve dag gescheeld ;)..

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Marcj
  • Registratie: November 2000
  • Laatst online: 12:49
Ik weet niet met welke IDE jij werkt, maar Eclipse geeft hier bij mij dan een warning dat je een statische methode op een object ipv een klasse aanvraagt. Dan gaat er vaak al een lampje branden dat je daar iets fout doet :)
Pagina: 1