Blogg

Alfresco och ECM

Ersätta Alfresco standard flash viewer med pdf.js

jan 08 2012

Kategorier : Tillkännagivanden, Produkter och tillägg

Har du noterat att den flash-baserade förhandsgranskningen ser lite suddig ut i Alfresco 4.0? Då har du rätt, det är inte din syn som det är fel på. Det beror på en ändring för inställningarna i programmet pdf2swf (som skapar flash filerna) för att göra den mer robust vid konvertering av stora filer. Och för en del pdf-filer kunde den till och med krascha jvm. Så det finns en god anledning till ändringen.Bilden ovan visar skillnaden vid de olika inställningarna. Detaljer för detta ärende finns på ALF-10870. Ärendet är stängt med status ‘won’t fix’, något som jag inte håller med om. Det hade varit bättre att senarelägga en fix till 4.0.x (eller valfri senare version) om det inte finns en omedelbar fix, för en fix behövs, ingen vill ha förhandsgranskning som gör att Alfresco ser åt som en lågkvalitetsprodukt (vilket det absolut inte är) som första intryck.

Men min avsikt är inte att gnälla, Alfresco har att se helheten och sätta prioriteringen. Och eftersom det är en öppen-källkodsprodukt så kan du om du inte är nöjd med hur något fungerar, fixa eller förbättra det. Så det har jag gjort. Jag har tagit fram en alternativ dokumentvisare baserad på Mozilla projektet pdf.js.

Alla dokument som visas i den flashbaserade dokumentvisaren måste transformeras i kedjan <source format> - <pdf> - <flash>. Om vi kan skippa det sista steget så kan vi undvika pdf2swf och risken för en jvm krash. Och vi kommer stödja samma format som nu. Men då måste det finnas ett sätt att visa pdf-filer direkt i webbläsaren. Chrome och Safari kommer med en pdf-visare inbyggd, så den kan vi använda. Och många andra har en extern plugin såsom Acrobat reader installerad. Vilket kommer att täcka väldigt många användare, men det bästa vore om det gick att visa pdf-filer direkt i webbläsaren. Och det är vad pdf.js gör, allt implementerat i Javascript med hjälp av html5.

Så dokumentvisaren jag tagit fram försöker

  • Använda pdf.js visare för webbläsare som stödjer html5

  • Om pdf.js inte kan användas, försök och se om en pdf plugin är installerad och visa pdf-filen med den.

  • Som sista alternativ, använd standard Alfresco flash based dokumentvisare.

Det enklaste sättet att göra detta var att använda <iframe>, där pdf.js visaren laddas via en Alfresco surf sida som implementerar pdf.js standard visare i stort sett ‘out of the box’. Du kan testa standard visaren här here. Den är väldigt funktionell, och de flesta pdf-filer jag testat visas utan problem.

Samma metod med att använda iframe används för att visa pdf med en extern pdf-tillägg. Genom att sätta src i iframe så starts tillägget.

Uppdatering
Källkoden är incheckad Share Extras projektet. Du kan se koden här.
Det finns ingen kompilerad version ännu, vilket är med avsikt, Det är fortfarande otestad, men om du vet hur du checkar ut och komplilerar så antar jag att du inte rusar iväg och använder det på en produktionsserver.