Ich arbeite an einer Anwendung (Android 4.4 - API 20), wo ich einen Bericht im HTML-Format erzeuge. Ich verwende das WebView-Objekt, um den Bericht in meiner App anzuzeigen.Android 4.4 Drucken als PDF ohne Benutzereinbindung
Was ich gerne tun könnte, ist diese WebView in ein PDF-Dokument zu konvertieren.
Ich konnte es mit PdfDocument konvertieren und .draw auf der Seite aus dem WebView-Objekt. Ich speichere die Datei, und das funktioniert, außer dass das Ergebnis ein Einzelseitendokument ist. Es gibt keine Seitenumbrüche.
View content = (View) webView;
PrintAttributes pdfPrintAttrs = new PrintAttributes.Builder().
setColorMode(PrintAttributes.COLOR_MODE_MONOCHROME).
setMediaSize(PrintAttributes.MediaSize.NA_LETTER.asLandscape()).
setResolution(new Resolution("zooey", PRINT_SERVICE, 300, 300)).
setMinMargins(PrintAttributes.Margins.NO_MARGINS).
build();
PdfDocument document = new PrintedPdfDocument(mContext,pdfPrintAttrs);
PageInfo pageInfo = new PageInfo.Builder(webView.getMeasuredWidth(), webView.getContentHeight(), 1).create();
Page page = document.startPage(pageInfo);
content.draw(page.getCanvas());
document.finishPage(page);
Wenn ich es ändern, so dass ich die PrintedPdfDocumet verwenden, und geben Sie nicht die Seiteninfo erhalte ich nur den sichtbaren Teil des WebView-Objekt.
View content = (View) webView;
PrintAttributes pdfPrintAttrs = new PrintAttributes.Builder().
setColorMode(PrintAttributes.COLOR_MODE_MONOCHROME).
setMediaSize(PrintAttributes.MediaSize.NA_LETTER.asLandscape()).
setResolution(new Resolution("zooey", PRINT_SERVICE, 300, 300)).
setMinMargins(PrintAttributes.Margins.NO_MARGINS).
build();
PrintedPdfDocument document = new PrintedPdfDocument(mContext,pdfPrintAttrs);
Page page = document.startPage(0);
content.draw(page.getCanvas());
document.finishPage(page);
Wenn ich die Printmanager verwenden und einen Druckeradapter aus dem WebView-Objekt mit createPrintDocumentAdapter erstellen, kann ich die „Speicher als PDF“ Option auswählen und die resultierende PDF-Datei hat die Seitenumbrüche wie ich in der CSS angeben von die ursprüngliche Webseite.
PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter();
String jobName = getString(R.string.app_name) + " Report "
+ reportName;
PrintAttributes printAttrs = new PrintAttributes.Builder().
setColorMode(PrintAttributes.COLOR_MODE_MONOCHROME).
setMediaSize(PrintAttributes.MediaSize.NA_LETTER.asLandscape()).
setMinMargins(PrintAttributes.Margins.NO_MARGINS).
build();
PrintJob printJob = printManager.print(jobName, printAdapter,
printAttrs);
Meine Frage ist: kann ich angeben, dass ich die Printmanager möchte ein „Speichern als PDF“ auszuführen und den Namen und den Ort der resultierenden Datei zur Verfügung stellen, so dass es keine Interaktion mit dem Benutzer ist?
Oder: Gibt es eine Möglichkeit, mein WebView-Objekt in ein PDF zu konvertieren und Seitenumbrüche zu ermöglichen.
keine Antwort wirklich, aber haben einen Blick auf diese Bibliothek, hat hat mir geholfen, bevor http://sourceforge.net/projects/itext/ – Janpan
Ich dachte, dass iText erfordert, dass Sie eine Lizenz erwerben, um es zu verwenden. Ist das der Fall? – VingInMedina
Nein, nur wenn Sie es kommerziell nutzen und Ihre App verkaufen wollen usw. Ich benutze es in einem oder zwei meiner Projekte, das ist einfach nur für mich im Büro. "Der Kauf einer kommerziellen Lizenz ist obligatorisch, sobald Sie mit dem Vertrieb der iText-Software in Ihrem Produkt oder der Bereitstellung in einem Netzwerk beginnen, ohne den Quellcode Ihrer eigenen Anwendungen unter der AGPL-Lizenz offenzulegen." Sehen Sie den Rest hier http://itextpdf.com/agpl – Janpan