Skip to main content

Bij het downloaden van een factuur in Mijn NS merk ik al maanden dat de MIME type van de PDF niet goed is. Hierdoor wordt deze niet herkend als zijnde PDF als ik hem bij mijn werkgever in het systeem upload. 

Ik heb het nagekeken, de MIME type staat op application/octet-stream i.p.v. application/pdf.

 

Hallo Freek en welkom bij de NS Community,

 

Kan je de factuur dan nu niet downloaden of openen? Ik ben niet zo thuis in deze techniek, maar kan dit niet komen door het systeem van je werkgever? 


Ik vermoed dat het aan het systeem van je werkgever ligt, tenzij je de factuur per e-mail verstuurt en je e-mail client er zelf een verkeerd MIME type aan hangt.

Gebruik van base64 encoding levert volgens mij altijd een octet-stream op.

PDF’s van facturen beginnen bij mij met %PDF-1.4 (en eindigen natuurlijk met een %%EOF), dus een systeem/portal zou na het decoderen van een octet-stream alsnog een PDF moeten herkennen.

Bij verzenden per e-mail is het wel van belang dat je hem als attachment/bijlage verzendt, en niet ‘inline’ in een bericht plakt.


De MIME type is geen onderdeel van het bestand zelf, dus zou ook geen problemen mogen opleveren bij het uploaden in een systeem.


De MIME type is geen onderdeel van het bestand zelf, dus zou ook geen problemen mogen opleveren bij het uploaden in een systeem.

Juist, de client (in dit geval zal het een browser zijn) bepaalt het ‘file-type’ voor een upload.

Het systeem (de server) dient eigenlijk gewoon octet-stream te accepteren en vervolgens te controleren of het bestand een geldige PDF is (en met facturen die ik download is weinig mis, tenzij het om een € 0,00 factuur gaat, daar staat onzin in en is helemaal geen PDF).

application/octet-stream is the type of your file. This is set by the browser of the client. fgetcsv() is just to check if your CSV file can be loaded as CSV to check is it the the right filetype.

if( $file "type"] == "application/vnd.ms-excel" || $file "type"] == "text/plain" || $file "type"] == "application/octet-stream"){ a...] 

Bovenstaande voor CSV bestanden, voor PDF dienen application/pdf en application/octet-stream geaccepteerd te worden.

Een wilde gok, je zou het nog kunnen proberen door van .PDF kleine letters te maken (.pdf).


Gerelateerd topic (van enige tijd geleden) 

Dat lag aan NS maar vandaag werkt het bij mij prima. Misschien de factuur/facturen die je niet naar je werkgever kunt uploaden even opnieuw downloaden vanuit Mijn NS.


Ja ok, maar dat was een storing waarbij het bestand zelf niet goed was. Daar is bij MIME geen sprake van. Je downloadt met je browser het bestand van een server. De server zegt daarbij: dit is een application/huppeldepup. Dan kan de browser bepalen wat-ie ermee gaat doen, bv. downloaden, openen in de browser zelf, of openen in een andere applicatie. Maar die informatie zit niet in het bestand zelf opgeslagen, dus als je het bestand vervolgens ergens op schijf opslaat is die informatie verdwenen. Als een ander systeem dat bestand vervolgens niet herkent, komt dat door iets anders.


Ja ok, maar dat was een storing waarbij het bestand zelf niet goed was.

Klopt, en bovendien ging dat om ‘on the fly’ gegenereerde declaratie-overzichten en niet om facturen.

Hoe dan ook, een ‘corrupte’ PDF kan zomaar het probleem van TS verklaren. Kijk inderdaad eerst zelf of je favoriete PDF reader het wel kan openen.


@mrfreeze en @Freek10283757 ik vond dit nog (voor o.a. Mozilla/Firefox)

https://superuser.com/questions/496758/how-can-i-view-a-pdf-in-firefox-when-the-server-specifies-the-wrong-content-type

Anyway, een PDF downloaden en daarna naar je werkgever sturen zou gewoon moeten werken.

En nog wat technischer, https://stackoverflow.com/questions/64859031/getting-pdf-file-from-api-response

En voor Linux https://askubuntu.com/questions/310096/cant-open-pdf-error-file-type-unknown-application-octet-stream-is-not-suppo

Download the PDF locally and save it as a PDF, making sure there is .pdf at the end.

Dus kleine letters…? 🤔

Firefox browser was able to open it and it turned out to be a scanned document. Printed it using PDF output printing option. The disadvantage with this is the PDF isn't searchable.

Tenslotte… https://stackoverflow.com/questions/20508788/do-i-need-content-type-application-octet-stream-for-file-download

Hope this helps, en anders wordt het toch bij je werk/opdrachtgever te rade gaan.


Nog ééntje dan… (uit een forum van 10 jaar geleden, en ja aan het eind van een bij NS gedownloade PDF staan in Notepad++ inderdaad nog wat <NUL> karakters na de %%EOF…)

https://superuser.com/questions/278562/how-can-i-fix-repair-a-corrupted-pdf-file

 


Bedankt voor jullie reacties. Nog wat extra info vanuit mijn kant:

Ik kan het bestand prima openen met een PDF-reader. Als ik het bestand vanuit die reader opsla op disk kan ik het daarna ook uploaden zonder problemen. Alleen het originele bestand dat vanuit MijnNS is gedownload (met Chrome browser) en automatisch opgeslagen op disk werkt niet. 


Bedankt voor jullie reacties. Nog wat extra info vanuit mijn kant:

Ik kan het bestand prima openen met een PDF-reader. Als ik het bestand vanuit die reader opsla op disk kan ik het daarna ook uploaden zonder problemen. Alleen het originele bestand dat vanuit MijnNS is gedownload (met Chrome browser) en automatisch opgeslagen op disk werkt niet. 

Bingo! Dan komt het vrijwel zeker omdat de download na %%EOF (end of file) nog wat ‘null’ karakters bevat (meer dan 500 zelfs). Je reader gooit die overbodige ‘rommel’ bij opnieuw opslaan dus netjes weg.

Je kunt dat terugzien in bijv. Notepad++ of een andere hex editor.

Maar goed, je hebt in ieder geval een ‘workaround’ en zou het nog bij de IT afdeling van je werkgever (of de ontwikkelaars van je declaratie portal) kunnen aankaarten.

Voor NS: dit speelt bij downloads van facturen, een pdf declaratieoverzicht vanuit de Reishistorie is ‘clean’.


Lekker gewerkt, Robert! Ik zal je kennis intern delen.


 

.


Reageer