Merge "Add the API to support webview printing" into klp-dev
This commit is contained in:
@@ -48,6 +48,7 @@ import android.widget.AbsoluteLayout;
|
|||||||
|
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.OutputStream;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1033,6 +1034,34 @@ public class WebView extends AbsoluteLayout
|
|||||||
return mProvider.capturePicture();
|
return mProvider.capturePicture();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exports the contents of this Webview as PDF. Only supported for API levels
|
||||||
|
* {@link android.os.Build.VERSION_CODES#KEY_LIME_PIE} and above.
|
||||||
|
*
|
||||||
|
* @param out The stream to export the PDF contents to. Cannot be null.
|
||||||
|
* @param width The page width. Should be larger than 0.
|
||||||
|
* @param height The page height. Should be larger than 0.
|
||||||
|
* @param resultCallback A callback to be invoked when the PDF content is exported.
|
||||||
|
* A true indicates success, and a false failure.
|
||||||
|
*
|
||||||
|
* TODO: explain method parameters, margins, consider making the callback
|
||||||
|
* return more meaningful information, explain any threading concerns, HW
|
||||||
|
* draw limitations, and make it public.
|
||||||
|
* TODO: at the moment we are asking app to provide paper size information (width
|
||||||
|
* and height). This is likely not ideal (I think need margin info too).
|
||||||
|
* Another approach would be using PrintAttributes. This is to be clarified later.
|
||||||
|
*
|
||||||
|
* TODO: explain this webview will not draw during export (onDraw will clear to
|
||||||
|
* background color) so recommend taking it offscreen, or putting in a layer with an
|
||||||
|
* overlaid progress UI / spinner.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public void exportToPdf(OutputStream out, int width, int height,
|
||||||
|
ValueCallback<Boolean> resultCallback) {
|
||||||
|
checkThread();
|
||||||
|
mProvider.exportToPdf(out, width, height, resultCallback);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the current scale of this WebView.
|
* Gets the current scale of this WebView.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -2891,6 +2891,17 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See {@link WebView#exportToPdf()}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void exportToPdf(java.io.OutputStream out, int width, int height,
|
||||||
|
ValueCallback<Boolean> resultCallback) {
|
||||||
|
// K-only API not implemented in WebViewClassic.
|
||||||
|
throw new IllegalStateException("This API not supported in Classic WebView.");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* See {@link WebView#getScale()}
|
* See {@link WebView#getScale()}
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ import android.webkit.WebView.PictureListener;
|
|||||||
|
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.OutputStream;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -146,6 +147,9 @@ public interface WebViewProvider {
|
|||||||
|
|
||||||
public Picture capturePicture();
|
public Picture capturePicture();
|
||||||
|
|
||||||
|
public void exportToPdf(OutputStream out, int width, int height,
|
||||||
|
ValueCallback<Boolean> resultCallback);
|
||||||
|
|
||||||
public float getScale();
|
public float getScale();
|
||||||
|
|
||||||
public void setInitialScale(int scaleInPercent);
|
public void setInitialScale(int scaleInPercent);
|
||||||
|
|||||||
Reference in New Issue
Block a user