Примеры генерации HTML в PDF в приложениях для Android
Если вам необходима конвертация HTML в PDF из приложений Android, вы можете использовать наш веб-сервис. Для этого вам не придется устанавливать или загружать какие-либо библиотеки или компоненты, достаточно реализовать простой API.
Это самый надежный, простой и удобный способ создания PDF версий документов для отчетов, счетов-фактур, накладных, электронных билетов и т.п. Можно создать нужную HTML-страницу и использовать ее в качестве источника для создания файла PDF или изображения.
Наш сервис может считывать любые веб-страницы в интернет по передаваемоогу адресу и динамически генерировать HTML в PDF или файлы изображений. Сервис может обрабатывать достаточно сложные документы и макеты, в том числе ссылки на изображения, инструкции JavaScript, CSS.
Пример №1 - Преобразование HTML страницы в файл PDF в приложениях под Android
public void ConvertWebPageToPDF()
{
String value = "http://www.yandex.ru"
String apiKey = "ВАШ_КЛЮЧ_API";
String apiURL = "http://api.pdf4b.ru/pdf";
HashMap<string, string> params = new HashMap<string, string>();
params.put("apiKey", apiKey);
params.put("value", value);
// Call the API convert to a PDF
InputStreamReader request = new InputStreamReader(Request.Method.Post, apiURL, new Response.Listener<byte[]>(){
@Override
public void onResponse(byte[] response)
{
try
{
if(response != null)
{
File localFolder = new File(Environment.getExternalStorageDirectory(), "WebPageToPDF");
if(!localFolder.exists())
{
localFolder.mkdirs();
}
// Write stream output to local file
File pdfFile = new File (localFolder, "mypdf.pdf");
OutputStream opStream = new FileOutputStream(pdfFile);
pdfFile.setWritable(true);
opStream.write(response);
opStream.flush();
op.close();
}
} catch (Exception ex)
{
Toast.makeText(getBaseContext(), "Ошибка генерации файла PDF!", Toast.LENGTH_LOG).show();
}
}
});
}
Дополнительно смотрите список опций для генерации
PDF или
JPEG
Пример №2 - Преобразование HTML страницы в файл изображения, например JPEG в приложениях под Android
В данном примере мы получаем файл в формате JPEG, но вы можете установить форматы "png", "bmp" или "svg".
public void ConvertWebPageToImage()
{
String apiKey = "ВАШ_КЛЮЧ_API";
String value = "http://www.yandex.ru"
String apiURL = "http://api.pdf4b.ru/pdf";
HashMap<string, string> params = new HashMap<string, string>();
params.put("apiKey", apiKey);
params.put("value", value);
params.put("OutputFormat", "jpg");
// Call the API convert to a PDF
InputStreamReader request = new InputStreamReader(Request.Method.Post, apiURL,
new Response.Listener<byte[]>(){
@Override
public void onResponse(byte[] response)
{
try
{
if(response != null)
{
File localFolder = new File(Environment.getExternalStorageDirectory(), "WebPageToPDF");
if(!localFolder.exists())
{
localFolder.mkdirs();
}
// Write stream output to local file
File pdfFile = new File (localFolder, "my_image_file.jpg");
OutputStream opStream = new FileOutputStream(pdfFile);
pdfFile.setWritable(true);
opStream.write(response);
opStream.flush();
op.close();
}
} catch (Exception ex)
{
Toast.makeText(getBaseContext(), "Ошибка генерации файла PDF!", Toast.LENGTH_LOG).show();
}
}});
}
Дополнительно смотрите список опций для генерации
PDF или
JPEG
Пример №3 - Преобразование исходного HTML кода в файл PDF в приложениях под Android
Исходный код HTML может влючать в себя CSS, картинки и т.п
public void ConvertHTMLStringToPDF()
{
String apiKey = "ВАШ_КЛЮЧ_API";
String value = "<h1>Некоторый <strong>текст</strong>строка HTML</h1>" <
String apiURL = "http://api.pdf4b.ru/pdf";
HashMap<string, string> params = new HashMap<string, string>();
params.put("apiKey", apiKey);
params.put("value", value);
// Call the API convert to a PDF
InputStreamReader request = new InputStreamReader(Request.Method.Post, apiURL,
new Response.Listener<byte[]>(){
@Override
public void onResponse(byte[] response)
{
try
{
if(response != null)
{
File localFolder = new File(Environment.getExternalStorageDirectory(), "WebPageToPDF");
if(!localFolder.exists())
{
localFolder.mkdirs();
}
// Write stream output to local file
File pdfFile = new File (localFolder, "mypdf.pdf");
OutputStream opStream = new FileOutputStream(pdfFile);
pdfFile.setWritable(true);
opStream.write(response);
opStream.flush();
op.close();
}
} catch (Exception ex)
{
Toast.makeText(getBaseContext(), "Ошибка генерации файла PDF!", Toast.LENGTH_LOG).show();
}
}});
}
Дополнительно смотрите список опций для генерации
PDF или
JPEG
Класс InputStreamReader
Данный класс используется во всех примерах
class InputStreamReader extends Request<byte[]> {
private final Response.Listener<byte[]> mListener;
private Map<string, string> mParams;
public Map<string, string> responseHeaders;
public InputStreamReader(int method, String mUrl, Response.<byte[]> listener,
Response.ErrorListener errorListener, HashMap<string, string> params) {
super(method, mUrl, errorListener);
// Every time it should make new request, should not use cache
setShouldCache(false);
mListener = listener;
mParams = params;
}
@Override
protected Map<string, string> getParams()
throws com.android.volley.AuthFailureError {
return mParams;
}
@Override
protected void deliverResponse(byte[] response) {
mListener.onResponse(response);
}
@Override
protected Response<byte[]> parseNetworkResponse(NetworkResponse response) {
//Initialise local responseHeaders map with response headers received
responseHeaders = response.headers;
//Pass the response data here
return Response.success(response.data, HttpHeaderParser.parseCacheHeaders(response));
}
}
Дополнительно смотрите список опций для генерации
PDF или
JPEG