2015-01-26 15 views
6

Im utilizzando il framework PdfDocument da Android (link) per creare un documento PDF dal mio contenuto di visualizzazione web. Il pdf è creato bene ma è solo un documento di una pagina. Quando il contenuto della webview è ampio, ho bisogno di creare un documento multipagina. TUTTO QUANTO BISOGNO È DI SPETTARE IL CONTENUTO DI WEBVIEW IN PAGINE. Come posso raggiungere questo obiettivo? Non voglio usare iText o qualsiasi libreria di terze parti.Android crea documento pdf da Webview con più pagine

Hai bisogno di aiuto per favore. Grazie in anticipo.

// create a new document 
PdfDocument document = new PdfDocument(); 

// create a page description 
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(width, height, 1).create(); 

// start a page 
PdfDocument.Page page = document.startPage(pageInfo); 

// draw something on the page 
View content = myWebview; 
content.draw(page.getCanvas()); 

// finish the page 
document.finishPage(page); 

FileOutputStream fos; 
try { 
    fos = new FileOutputStream(fileNameWithPath, false); 
    // write the document content 
    document.writeTo(fos); 

} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

// close the document 
document.close(); 
+0

Hai trovato una soluzione? Sto anche cercando di risolverlo. – Annabelle

risposta

2

Se si desidera creare più pagine, allora basta chiamare StartPage() e finishPage() per ogni pagina che si desidera creare nel documento.
Qualcosa di simile a questo:

// create document 
PdfDocument document = new PdfDocument(); 

// create a page description 
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(width, height, 1).create(); 

// start 1st page 
PdfDocument.Page page = document.startPage(pageInfo); 
// draw something on the page 
View content = myWebview; 
content.draw(page.getCanvas()); 
// finish 1st page 
document.finishPage(page); 

// start 2nd page 
PdfDocument.Page page = document.startPage(pageInfo); 
// draw something on the page 
View content = someOtherWebview; 
content.draw(page.getCanvas()); 
// finish 2nd page 
document.finishPage(page); 

// and so on... 

FileOutputStream fos; 
try { 
    fos = new FileOutputStream(fileNameWithPath, false); 
    // write the document content 
    document.writeTo(fos); 

} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

// close the document 
document.close(); 
+0

So che posso aggiungere più pagine, ma quello che voglio è dividere il contenuto della webview in più pagine se quel contenuto è troppo lungo per una pagina ISO A4. – user3065901

+0

ok, ho il tuo problema per i contenuti lunghi. Non vedo come potresti troncare e diffondere i segmenti di contenuti su più pagine. Forse puoi ottenere l'altezza della tua webview e ridimensionare la tua tela? – rtome

0

ho avuto questo stesso problema per gli ultimi due giorni, così ho trovato questo answer da Rakesh Gopathi, ha funzionato perfettamente. Consiglio vivamente chiunque stia utilizzando le classi native PdfDocument per verificarlo.