2015-01-26 20 views
6

Ich benutze das PdfDocument-Framework von Android (link), um ein PDF-Dokument aus meinem Webview Inhalt zu erstellen. Die PDF ist gut erstellt, aber es ist nur eine Seite Dokument. Wenn der Inhalt der Webansicht groß ist, muss ich ein mehrseitiges Dokument erstellen. Alles, was ich brauche, ist, WEBVIEW-Inhalte auf Seiten zu verteilen. Wie kann ich das erreichen? Ich möchte nicht iText oder eine Drittanbieter-Bibliothek verwenden.Android PDF-Dokument erstellen aus Webview mit mehreren Seiten

Brauchen Sie Hilfe bitte. Danke im Voraus.

// 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

Haben Sie eine Lösung gefunden? Ich versuche es auch zu lösen. – Annabelle

Antwort

2

Wenn Sie mehrere Seiten erstellen möchten, dann rufen Sie einfach Startseite() und finishPage() für jede Seite, die Sie in Ihrem Dokument erstellen möchten.
Etwas wie folgt aus:

// 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

Ich weiß, dass ich mehr Seiten hinzufügen kann, aber was ich will ist, den Inhalt der Webseite auf mehrere Seiten zu teilen, wenn dieser Inhalt für eine ISO A4 Seite zu lang ist. – user3065901

+0

ok, ich bekomme dein Problem für lange Inhalte. Ich sehe nicht, wie Sie die Inhaltssegmente auf mehrere Seiten kürzen und verteilen würden. Vielleicht kannst du die Höhe deines Webview erreichen und deine Leinwand skalieren? – rtome

0

Ich war in den letzten paar Tagen das gleiche Problem haben, so fand ich diese answer von Rakesh Gopathi, es funktionierte einwandfrei. Ich empfehle wirklich jedem, der die native PdfDocument Klassen verwendet, um es auszuprobieren.