Using iTextSharp to generate pdf file in asp.net

One of the common requirement of web applications is to provide users a way to download some contents. In case of a report, almost all of the reporting tools have the export to pdf kind of function available.

But sometime, it is not a report that needs to be generated in pdf. But it could be simple web page or content of a page or sometimes a plain text needs to be generated in pdf format.

There are many third party tools are available for this task. We can import their API's in Asp.net application and it takes care of all core function of creating pdf files. iTexSharp being one of the widely used and Open source (FREE) component, we are going to see how easily it can be used and range of features it provides

Code starting

I intend to cover other features of iTextSharp component. Focus of this article would be on simply creating a pdf file with different sources of text.

To start with, download iTextSharp dll from official page here iTexSharp is a c# version of original Java library iText. To demonstrate the use, i have created a sample web application in c# and added reference to iTextSharp.dll. I wanted to test using some other site's html page as a source to convert into pdf also, i would user entered string to convert into pdf. After creating couple of textboxes for input, I want to write code on button click event.

Before that, lets add few references in our code.

using System.IO;
using iTextSharp;
using iTextSharp.text.api;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.html.simpleparser;

In button click event, create object of Document and PDFWriter

Document itextDoc = new Document();
PdfWriter pdfDoc = PdfWriter.GetInstance(itextDoc,Response.OutputStream);

At the end generated PDF file is going to be outputted to outputstream. The following code is just for reading other web page using WebClient and converting response into string reader (or reading text file into stringreader). You may want ignore this code if you are aware about how to do it.

 System.Net.WebClient webClient=new System.Net.WebClient(); 
 //passing url of local web page to read its html content
 Stream responseData = webClient.OpenRead("http://localhost:51951/Test/Default4.aspx");
 //converting stream into stream reader object
 StreamReader inputstream = new StreamReader(responseData);
 //If you want to read text from other source like plain text file or user input, ignore all above lines
 StringWriter sw = new StringWriter();
 HtmlTextWriter writer = new HtmlTextWriter(sw);
 writer.Write(inputstream.ReadToEnd());
 //comment above line and uncomment below line if you wish to convert text file to pdf
 //writer.Write(File.ReadAllText(@"E:\MyFolder\filename.txt"));
 StringReader sr = new StringReader(sw.ToString());

Now that e have the source content, we need to parse the source content for valid HTML format and extract iTextSharp elements. The parsed elements will be returned into List of IElement. We will then need to loop through all elements and add them individually using Document object we just created. Below lines of code will do just that

List<IElement> elements =HTMLWorker.ParseToList(sr,null);  

  itextDoc.Open();
  //htmlwrite.Parse(sr);
  foreach (IElement el in elements)
  {
      itextDoc.Add(el);
  }                  
  itextDoc.Close();

Before adding elements using Document object, Open method is called on Document object and Close afterwards

Lets run the test. I already have another simple asp.net page running in another Visual studio instance. When viewed in browser, the page looks like this

pdf1

From my sample application when I call this page using WebClient and generate the PDF file, it opens up as

pdf2

Our basic task is completed. You might want to add little more stuff to generated PDF. Like adding header/footer, images, watermark etc. Most of these functionality available in ITextSharp. We will look at them in following articles. Please find complete code for this test below.

System.Net.WebClient webClient=new System.Net.WebClient(); 
 //passing url of local web page to read its html content
 Stream responseData = webClient.OpenRead("http://localhost:51951/Test/Default4.aspx");
 //converting stream into stream reader object
 StreamReader inputstream = new StreamReader(responseData);
 //If you want to read text from other source like plain text file or user input, ignore all above lines
 StringWriter sw = new StringWriter();
 HtmlTextWriter writer = new HtmlTextWriter(sw);
 writer.Write(inputstream.ReadToEnd());
 //comment above line and uncomment below line if you wish to convert text file to pdf
 //writer.Write(File.ReadAllText(@"E:\MyFolder\filename.txt"));
 StringReader sr = new StringReader(sw.ToString());

 //Parse into IElement
 List<IElement> elements =HTMLWorker.ParseToList(sr,null);        
 //Open the Document
 itextDoc.Open();
 //loop through all elements
 foreach (IElement el in elements)
 {
     //add individual element to Document
     itextDoc.Add(el);
 }                  
 //Close the document
 itextDoc.Close();
 //set the Response object
 Response.ContentType = "application/pdf";
 Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf");
 Response.End();

 

Happy coding!

Aggiornamento Kindle Paperwhite 5.4.3

Amazon ha rilasciato un nuovo aggiornamento Kindle Paperwhite. Si tratta dell’update 5.4.3 che contiene alcuni miglioramenti per l’usabilità di uno degli ebook reader di maggior successo degli ultimi anni.

Aggiornamento Kindle Paperwhite: update 5.4.3

Il nuovo aggiornamento rilasciato da Amazon prevede, in sostanza, un miglioramento di alcune funzioni già presenti sul vecchio software. La prima riguarda le Note che ora saranno disponibili con diversi percorsi: con il primo si potranno raggiungere direttamente dal menu di lettura con il secondo, ancora più facilmente, dalla barra degli strumenti. Un’altra importante novità riguarderà i file PDF: si potrà utilizzare lo zoom per ingrandire porzioni di documento. Per questo tipo di file si registra anche un miglioramento nell’impostazione dei margini.

Potrai inoltre gestire con maggiore flessibilità le tue raccolte di documenti su Kindle Paperwhite visualizzandole nella modalità Raccolte e stabilendo la posizione con cui verranno inserite sul tuo ebook reader.  La novità più importante riguarda, probabilmente, la possibilità di annullare l’acquisto di un ebook dopo il download di un estratto. Kindle infatti permette con un semplice touch di acquistare l’intero ebook mentre si sta visualizzando la prima porzione di testo: se lo hai acquistato per errore ora potrai annullare la tua scelta prima che il download sia stato completato tramite la nuova funzionalità Cancella Acquisto.

Come aggiornare il Kindle Paperwhite

Al momento l’aggiornamento non è disponibile direttamente dal dispositivo ma bisogna passare necessariamente tramite computer. Dovrete quindi scaricare l’aggiornamento e in seguito collegare il Kindle al PC tramite il comodo cavo USB. A questo punto dovrete spostare l’aggiornamento nell’unità Kindle (non in una delle cartelle al suo interno). Dopo aver scollegato il dispositivo accedete al menu Impostazioni e scegliete Aggiorna Kindle (sarà disponibile solo se il vostro Kindle non è aggiornato). Attendete che Kindle Paperwhite installi il nuovo aggiornamento (al termine si riavvierà in automatico).  Prima di procedere con questa operazione controllate la versione software del vostro dispositivo.

A questo link troverete la pagina di Amazon contenente tutte le informazioni e il link per scaricare l’aggiornamento Kindle Paperwhite.

Convertire AZW3 in ePub

Quando acquisti un eBook su Amazon o ne scarichi uno da internet, il formato potrebbe non essere quello che ti serve. Ad esempio molti eBook sono in formato AZW3 (il nuovo formato di Amazon) e lo vorresti in ePub per leggerlo su un altro dispositivo.

Vi propongo questo nuovo sito che vi consente direttamente on line di effettuare tutte le conversioni di cui avere bisogno http://www.zamzar.com

ZamZar

Pubblicare fumetti per Kindle o ePub3

Con lo EPUB 3, il nuovo standard per questo formato (come si può capire dal numero, è la terza versione dello standard, anche se in pochi si sono accorti della seconda), il campo di azione dello EPUB è stato allargato, ammettendo anche contenuti audio e video e fornendo il modo corretto di incorporare questi elementi in un file EPUB. Se adesso è almeno teoricamente possibile creare e-book in questo formato, che contengano anche elementi multimediali come appunto i video o registrazioni audio, resta ancora aperto un altro problema, ossia quello delle immagini. Più in particolare, il problema di come realizzare un e-book composto unicamente da immagini. Un fumetto, per esempio.

Il formato EPUB supporta le immagini fin dalla sua nascita e le incorpora nella pagina attraverso tag pressoché identici a quelli utilizzati per una pagina web: <img> e </img>, con tutti gli attributi che si possono specificare al loro interno. Utilizzando Sigil, ad esempio, possiamo appiccicare una immagine nel punto della pagina che vogliamo, cliccando solo una icona e senza preoccuparci di tag e altro: resta poi da vedere se l’immagine manterrà la stessa posizione e lo stesso aspetto su qualsiasi dispositivo, dato che la struttura della pagina si adatta alle dimensioni dello schermo su cui è visualizzata, ma questo è un altro problema.

Se il nostro obiettivo non è quello di inserire qualche immagine all'interno di una pagina in cui predomina il testo, ma è invece quello di realizzare pagine composte da sole immagini, allora il discorso si complica. Creare una pagina bianca e poi incollarvi le immagini una dopo l’altra, come in una sorta di pellicola cinematografica, potrebbe apparire una soluzione accettabile, ma in realtà non è una grande idea: lo EPUB è un formato fluido, non rigido come il PDF, e ciò che vedete voi non è sempre e necessariamente identico a quello che vedranno gli altri. Due lettori diversi possono visualizzare uno stesso EPUB in modo molto diverso, sia per le differenze di dimensione dello schermo, sia per il diverso modo in cui è stato codificato il lettore: esiste uno standard per il formato EPUB, ma i dispositivi che leggono gli EPUB sono ancora piuttosto lontani dalla standardizzazione.

Alla ricerca di un sistema per distribuire fumetti in formato EPUB, potremmo allora imbatterci in questo sito: https://code.google.com/p/epub-revision/. In realtà, più che un sito è un deposito di appunti e codice, ma è comunque di discreto interesse, appartenendo al gruppo di lavoro che si occupa della gestione e stesura dello standard del formato EPUB per conto dello idpf (International Digital Publishing Forum). Se in questo sito visitiamo la sezione download, troveremo tre modelli di fumetto in formato EPUB, inseriti apposta per fornire esempi di altrettante soluzioni al problema: il fumetto si chiama Haruko, è un manga molto breve in lingua originale e ne possiamo scaricare tranquillamente tutte e tre le versioni, per procedere con una bella vivisezione e scoprirne i segreti.

harukoSVG.epub (harukoSVG.epub (199,36 kb)) è il primo modello che troviamo, procedendo dall'alto verso il basso, e ci propone una possibile risposta al problema di come infilare un fumetto in un file EPUB: utilizzare immagini JPEG “inglobate” da un documento SVG. È una buona soluzione ed è quella che io consiglierei di esaminare per prima, anche se presenta alcuni inconvenienti (almeno per i miei gusti). In questo modello, ogni pagina del fumetto è rappresentata da un documento SVG: uno per ogni pagina, il che può portare a una discreta montagna di files, a seconda delle dimensioni del fumetto, ma questo è un problema che vedremo più o meno identico in tutte e tre le soluzioni. Il documento SVG, a sua volta, contiene una immagine JPEG, che è la pagina del fumetto: grazie all'uso di un codice JavaScript, una delle novità introdotte dallo EPUB 3, la dimensione dell’immagine è adattata alla dimensione dello schermo. Il JavaScript che se ne occupa è panelmo.js e lo trovate all'interno della cartella “script”: vivisezionate pure il file, per farvi una idea di come funzioni e di come si possa riprodurre l’effetto, se decidete di utilizzarlo.

harukoJPEG.epub (harukoJPEG.epub (2,16 mb)) è il secondo modello e utilizza una struttura molto semplice: ogni pagina del fumetto è un file JPEG, cioè una normalissima immagine. La struttura dello EPUB, invece di presentarsi come una serie di documenti xhtml, si presenterà dunque come una serie di JPEG. Struttura molto semplice, per l’appunto: una prima pagina “vera”, per introdurre l’opera, inserire titolo, nome dell’autore e altre eventuali note di copyright o edizione, dopodiché si passa a una serie di immagini. Il funzionamento è lo stesso di qualsiasi altro file EPUB, ma cambia il contenuto. Un limite di questo modello, però, è che le immagini non si ridimensionano automaticamente, ma mantengono sempre la stessa taglia, col rischio molto concreto di sforare. Anzi, diciamo pure che è una certezza, specialmente se vogliamo leggere il fumetto su dispositivi dallo schermo piccolo, come un qualsiasi smartphone.

harukoHTML.epub (harukoHTML.epub (2,14 mb)) è il terzo modello ed è una via di mezzo semplificata dei precedenti. A ogni pagina del fumetto corrisponde una pagina in xhtml; questa pagina, a sua volta, contiene soltanto un elemento, ossia una immagine JPEG. Rispetto al secondo modello, dunque, si aggiunge uno strato ulteriore, ossia la base xhtml che contiene l’immagine del fumetto: questa base ci permette, ad esempio, di inserire un testo che accompagni ogni immagine, ad esempio (la classica riga di testo in sovrimpressione quando si passa col mouse sopra certe immagini), oppure di impostare una dimensione fissa per l’immagine, modificando il tag <img>. Ciò che non ci è permesso di fare, però, è di ridimensionare l’immagine in base alle dimensioni dello schermo, come accadeva col primo modello, trattandosi qui di una pagina normale e statica, senza JavaScript ad animarla. È però un buon compromesso, che chiunque può utilizzare con facilità.

Come linea generale comunque una pagina di un fumetto (come nell'immagine qui sotto) deve essere delle dimensioni di 600x837 pixel con una risoluzione consigliata di 600 dpi. Tengo inoltre a farvi sapere che a brevissimo rilascieremo la nostra piattaforma on line e gratuita per la creazione di ebook!

 

Converti i tuoi ebook da Kindle in qualsiasi altro formato

AVS Document COnverter

Ho trovato questo interessante software che si chiama AVS Document Converter che a mio avviso è molto utile. Ti spiego in sintesi cosa fa. Ammettiamo che hai un libro in formato Kindle (senza DRM!) e vuoi ottenere da uesto un file che sia possibile modificarlo in Word, per esempio. Questo programma fa proprio la conversione del formato. La versione di prova è perfettamente funzionante.

I vari formati per gli eBook

ebookNonostante sembri una tematica nata di recente, l'eBook è un concetto nato diversi anni fa. Basta pensare che il progetto Gutenberg, che si propone d rendere disponibili in formato digitale i libri di pubblico dominio ovvero senza copyright, è nato nel 1971.

Non esiste un unco formato che permette di leggere i libri elettronici ma possiamo riassumere quelli che vengono principalmente usati.

Epub

Standard ufficiale dell'International Digital Pubishing Forum (http://idpf.org). Si tratta di un file in formato ZIP all'interno del quale sono presenti i contenuti in formato XHTML e la struttura del libro viene gestita attraverso diversi file XML.

Mobi

È un formato della Mobipocket (azienda acquisita da Amazon) che si basa su PRC, altro formato per ebook. Oggi è usato da Amazon sul suo dispositivo Kindle nella versione AZW che è una versione di MOBI compressa e che permette di gestire il DRM.

F2B (FictionBook)

È un formato che si basa su un unico file XML dove viene riportato l'intero contenuto del libro, comprese le immagini che vengono encodate in Base64.

LIT

Formato utilizzato dalla Microsoft, ormai in disuso. Si tratta praticamente di un estensione del formato CHM ovvero i classici help di Windows,

PDF

È un formato che non riguarda nello specifico gli ebook ma che comunque viene supportato da molti ebook reader, compreso il Kindle.

TXT

Formato testuale semplice, letto ovviamente da tutti gli ebook reader ma senza la possibilità di fornire formattazioni, indici, immagini e quant'altro diverso da semplice testo.

Convertire file in AZW

Molti eBook che troviamo online vengono distribuiti nel formato PDF o ePub. Il Kindle è compatibile con il formato PDF, anche se non è molto pratico leggerelo perché ad esempio il testo non scorre (per altre info vedi un precedente post).

Per i file in formato ePUB, invece, e per altri formati come PML o LIT, non è disponibile il servizio di conversione gratuita di Amazon, quindi dobbiamo convertirlo noi stessi. Nulla di più facile: è possibile farlo in modo semplice con Calibre.

L’installazione è particolarmente semplice ed è disponibile anche in italiano. Durante l'installazione è necessario selezionare il Kindle come dispositivo di lettura. Calibre crea quindi una cartella “Libreeria di Calibre” (notare l’errore delle due “ee” nel nome della cartella) dentro /Utenti/{user}/ in cui copierà gli eBook, sia quelli inseriti che quelli convertiti (potete correggere l’errore o lasciarlo così com’è).

Come convertire

Primo passo: aggiungere l’eBook nel formato originale.
Cliccare sull’icona “Aggiungi libri” nel menu superiore di Calibre e selezionare l’eBook nel formato originale. In questo modo l’eBook viene inserito nella libreria di Calibre e viene copiato nella cartella “Libreeria di Calibre”. I formati di eBook che è possibile inserire sono: CBZ, CBR, CBC, ePUB, FB2, HTML, LIT, LRF, MOBI, ODT, PDF, PRC, PDB, PML, RB, RTF, TCR, TXT.

Secondo passo: convertire l’eBook.
Selezionare il libro appena aggiunto e cliccare sull’icona “Converti libri” nel menu superiore di Calibre.
Si apre una finestra con un menu ad icone sulla sinistra che aprono le relative schede sulla destra. La prima cosa su cui fare attenzione è di verificare che in alto a destra in questa finestra appaia il formato MOBI come formato di oputput, ovvero il formato compatibile con il Kindle.

Finestra di conversione libro con Calibre

La prima scheda che si apre è quella dei metadati che contiene i dati su copertina, titolo ed autore del libro, e possiamo modificare questi dati, se non sono esatti. È possibile anche caricare una copertina separata da un file immagine, se nel file non è già compresa.

Ci sono poche impostazioni da fare:

  • cliccando sull’ìcona “Visualizzazione” selezionare l’opzione “Rimuovi gli spazi tra i paragrafi” altrimenti il file convertito potrebbe avere uno spazio bianco fra i paragrafi
  • cliccando sull’icona “Indice” selezionare l’opzione “Non aggiungere al sommario i capitoli autorilevati
  • cliccando sull’icona “Output MOBI” selezionare l’opzione “Non aggiungere indice al libro”.

Infine cliccare sul pulsante “OK” in basso a destra.

Dopo pochi istanti, quando l’indicatore a ruota si ferma, basta andare nella cartella “Libreeria di Calibre” per trovare il file MOBI convertito. Basta collegare il Kindle e copiare questo file nella cartella “documents” del Kindle per avere l’eBook sul Kindle.

In questo modo si possono leggere sul Kindle tutti gli eBook a partire da tutti quelli gratuiti, come quelli della libreria GoogleBooks.

Convertire un PDF

Molti dei libri che troviamo in rete vengono distribuiti in formato PDF. Il Kindle supporta questo formato: per poter leggere il file, è sufficiente collegare il Kindle al proprio PC. Lo stesso verrà riconosciuto come una normale chiavetta USB ed al quale sarà assegnata un lettera di unità per poterci accedere come ad un qualsiasi disco.

La consultazione però potrebbe non essere comoda in quanto le pagine del file PDF verranno sostanzialmente visualizzate come fossero delle immagini. Non è quindi possibile evidenziare delle frasi o inserire commenti.

Amazon ha messo a disposizione di chiunque un tools utilizzabile via email per poter convertire un file PDF in un file facilmente gestibile dal nostro Kindle.

Basta inviare un'email con in allegato il file PDF al nostro indirizzo di posta kindle per esempio a rossini@free.kindle.com e inserire come oggetto "Convert". Così facendo vi sarà restuitito entro pochi minuti un link per scaricare il libro convertito richiesto in formato azw.

Advertsing

125X125_06

Planet Xamarin

Planet Xamarin

Calendar

<<  September 2017  >>
MonTueWedThuFriSatSun
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

View posts in large calendar

Month List