Deprecated: Creation of dynamic property Timber\Site::$pingback is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Site.php on line 180

Deprecated: Creation of dynamic property Timber\User::$name is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/User.php on line 118

Deprecated: Creation of dynamic property Timber\Post::$old_id is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_thumbnail_id is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$ext-thumbnail_url is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_metadesc is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_lock is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$has_disclaimer is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$onesignal_meta_box_present is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$onesignal_send_notification is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$onesignal_modify_title_and_content is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$onesignal_notification_custom_heading is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$onesignal_notification_custom_content is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_focuskw is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_linkdex is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_content_score is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_estimated-reading-time-minutes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_wordproof_timestamp is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_last is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$response_body is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_wp_old_date is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$tipologia is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_tipologia is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$attributi is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_attributi is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$in_evidenza_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_in_evidenza_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$inviato_in_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_inviato_in_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$fonte is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_fonte is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$fonte_url is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_fonte_url is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_category is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_blz_affiliation_attributes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_content_type is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_attributes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_speciali is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_date_gmt is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$ping_status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_password is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_name is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$to_ping is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$pinged is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified_gmt is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_content_filtered is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$guid is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$menu_order is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_mime_type is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_count is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$filter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71
Sumatra PDF: cos'è e qual è la storia di un successo accidentale

Sumatra PDF: cos'è e qual è la storia di un successo accidentale

L'autore di Sumatra PDF racconta la storia che ha portato alla nascita del visualizzatore PDF di successo per Windows, introduce tante nuove funzionalità e lancia addirittura una release destinata ai sistemi ARM64.

Quando un software supera il decennio di vita e continua a vantare una base di utenti invidiabile non si può che parlare di un grande successo. Sumatra PDF è un visualizzatore di documenti PDF leggero e veloce che offre diversi vantaggi rispetto ad altri software simili. Nato a giugno 2006, ha ormai quasi raggiunto “la maggiore età” nel momento in cui scriviamo.

L’autore definisce Sumatra PDF come un “successo accidentale“: non avrebbe mai sviluppato un visualizzatore PDF per Windows se i suoi capi non gli avessero chiesto di realizzarne uno per un dispositivo come Palm Foleo.

Sumatra PDF: le principali caratteristiche

Sumatra PDF è un programma molto leggero che è e resterà tale, sulla base della strada ormai imboccata dal suo sviluppatore. Questo lo rende ideale per l’uso su computer più vecchi e meno potenti.

Progettato per essere veloce, Sumatra PDF apre i documenti PDF molto rapidamente: l’applicazione diventa quindi davvero utile per la visualizzazione di documenti di grandi dimensioni. L’interfaccia utente semplice e intuitiva rende il programma facile da usare per chiunque, anche per gli utenti meno esperti. Oltre ai PDF, Sumatra supporta gli eBook (ePub, Mobi), XPS, DjVu, CHM e Comic Book (CBZ e CBR).

Com’è nato Sumatra PDF

Palm è stata un’azienda specializzata nella produzione di computer palmari che ha cessato tutte le sue attività nel 2011: l’ideatore di Sumatra PDF lavorava proprio per questa società ed egli fu chiamato a realizzare un lettore di PDF per Foleo, un mini-laptop basato su architettura ARM e sistema operativo Linux. Foleo non vide mai la luce perché il progetto fu cancellato a distanza di poche settimane prima del lancio sul mercato per motivi mai chiariti.

Lo sviluppatore di Sumatra PDF, Krzysztof Kowalczyk, racconta che scrivere una libreria per il rendering dei documenti PDF avrebbe richiesto uno sforzo pluriennale. Poiché egli era l’unico chiamato a lavorare sul progetto e non aveva anni a disposizione, decise di usare la libreria open source Poppler. “Il PDF è un formato complesso e il rendering di alcuni documenti è lento. Volevo migliorare la velocità perché Jeff Bezos mi disse che la velocità è qualcosa che interessa sempre ai clienti“, ha dichiarato il programmatore.

Sumatra PDF nato da una costola di Poppler, grazie ai profiler per Windows

Sfortunatamente, l’inventore di Sumatra PDF non aveva gli strumenti giusti per sviluppare su una piattaforma ARM così giovane come quella scelta all’epoca da Palm. Così ebbe l’idea di usare profiler per Windows, strumenti che aiutano ad analizzare le prestazioni di un programma in esecuzione. Il profiler monitora il programma mentre viene eseguito e registra informazioni come il tempo di esecuzione delle varie parti del codice, le chiamate alle funzioni, le allocazioni di memoria e altri dati utili per comprendere come il programma sta utilizzando le risorse del sistema.

I profiler sono strumenti molto utili per gli sviluppatori che desiderano ottimizzare le prestazioni del loro software perché consentono di individuare le parti del codice che richiedono troppo tempo o risorse identificando eventuali problemi di memoria o di accesso ai dati. Esistevano già all’epoca diversi buoni profiler per Windows, tra cui quelli integrati in alcune suite di sviluppo software.

Utilizzando Poppler e aggiungendo la sua libreria in fase di compilazione, lo sviluppatore ha integrato anche una semplice interfaccia grafica pervenendo a un visualizzatore PDF compatto e funzionale per Windows.

Nel suo lungo post Kowalczyk racconta poi delle tante ottimizzazioni e migliorie del codice che hanno reso il software sempre più performante e abile anche nella gestione di documenti PDF pesanti e voluminosi.

Dalla piattaforma Palm al debutto in Windows

L’idea iniziale, come abbiamo visto, era quella di portare il lavoro svolto sulla piattaforma Palm ma alla fine l’ideatore di Sumatra PDF si è ritrovato tra le mani un progetto vincente per l’ambiente Windows. Il suo fiore all’occhiello? Il fatto che il visualizzatore PDF è disponibile anche in versione portabile che non necessita di installazione e che pesa appena 15 MB. Davvero un’inezia per gli standard odierni.

“Come posso mantenere SumatraPDF così piccolo? Evito inutili astrazioni. (…) Potrei usare componenti come Qt, wxWindows o Gtk. Sono più facili da usare ma aumentano le dimensioni del progetto in modo gigantesco“, spiega ancora Kowalczyk che chiarisce il suo approccio alla programmazione. “Non ho paura di scrivere la mia implementazione delle cose: ho ad esempio i miei parser JSON, HTML / XML che sono una frazione delle dimensioni delle librerie più popolari per tali attività“.

Sumatra PDF non è solo veloce, è ricco di funzionalità

Non si tratta di “reinventare la ruota”, si tratta di sfruttare in modo creativo le ricche funzionalità incluse in Windows. “Diciamo che devo fare una richiesta di rete. Potrei includere una libreria mostruosa come curl o potrei scrivere 300 righe di codice usando le API Win32. Ho scritto 300 righe di codice“, osserva Kowalczyk nella sua narrazione.

Che Sumatra PDF sia semplice e leggero non significa che le sue funzionalità siano ridotte all’osso. Il visualizzatore PDF, ad esempio, tiene traccia di tutti i documenti aperti nel corso del tempo per facilitarne la successiva apertura ed elaborazione; inoltre, con la combinazione di tasti “segreta” CTRL+K è possibile accedere a tutte le funzioni di Sumatra PDF attraverso un’unica compatta lista.

La casella di ricerca che Sumatra PDF propone, inoltre, consente di individuare e richiamare rapidamente qualunque funzione integrata nel programma.

Sumatra PDF Reader 3.5 è l’ultima versione e la prima versione pubblica di Sumatra da giugno 2022. Una delle nuove funzionalità è il supporto per il tema scuro: è possibile scegliere tra due opzioni di visualizzazione, entrambe attivabili dalla finestra delle opzioni. Un tocco sul tasto “i” inverte i colori per adattarli allo sfondo e al colore del testo del documento PDF in corso di consultazione.

Lo sviluppatore fa notare che l’adeguamento automatico dei colori non funziona bene per le immagini. I PDF composti da solo testo, invece, ne traggono vantaggio poiché i colori dello sfondo e dei caratteri vengono ottimizzati per migliorare l’esperienza di lettura.

Adobe Reader, uno dei programmi più diffusi per la visualizzazione di file PDF, offre una serie di opzioni per aprire documenti in modi specifici. Queste opzioni includono la possibilità di specificare il percorso del file, il nome del file, le opzioni di visualizzazione e altro ancora all’interno di una singola stringa di comando. Sumatra PDF abbraccia questi comandi e si allinea al comportamento di Adobe Reader in fase di apertura di qualunque documento PDF.

Il visualizzatore PDF open source è adesso in grado di riconoscere l’orientamento delle immagini attingendo ai dati EXIF contenuti nelle immagini JPEG e PNG. Inoltre, offre il supporto per l’aperta e la gestione delle immagini in formato .AVIF.

I documenti PDF possono essere trascinati dalla finestra di Sumatra in una posizione esterna: in questo modo il programma mostra il contenuto del file in una nuova finestra. Le schede supportano adesso i menu contestuali.

C’è anche una nuova comoda scorciatoia con il mouse per utilizzare le modalità a schermo intero e di presentazione. Infine, le annotazioni hanno tre nuove opzioni di visualizzazione alle quali è possibile accedere tramite le impostazioni.

Sumatra PDF apre ai dispositivi basati su SoC ARM

Nell’articolo citato in apertura, Kowalczyk scriveva che Sumatra PDF sarebbe rimasto un lettore PDF per Windows. Il programmatore non aveva intenzione di aprire all’approccio multipiattaforma: “non ho le risorse per scrivere codice per 3 piattaforme. In secondo luogo, credo che un’app eccellente per una piattaforma possa essere più popolare di un’app mediocre per 3 piattaforme diverse“.

In realtà, complice il fermento che stiamo vivendo in ambito Windows on ARM, con diversi produttori che promettono lo sviluppo di SoC ARM destinati al mercato dei PC, Kowalczyk ha pubblicato anche la versione del suo software destinata ai sistemi ARM64. È anch’essa scaricabile dalla pagina di download del progetto.

Ti consigliamo anche

Link copiato negli appunti