Примеры генерации 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[]> m
Listener;
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, error
Listener);
// 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