Примеры генерации HTML в PDF в приложениях для Android

Если вам необходима конвертация HTML в PDF из приложений Android, вы можете использовать наш веб-сервис. Для этого вам не придется устанавливать или загружать какие-либо библиотеки или компоненты, достаточно реализовать простой API. Это самый надежный, простой и удобный способ создания PDF версий документов для отчетов, счетов-фактур, накладных, электронных билетов и т.п. Можно создать нужную HTML-страницу и использовать ее в качестве источника для создания файла PDF или изображения. Наш сервис может считывать любые веб-страницы в интернет по передаваемоогу адресу и динамически генерировать HTML в PDF или файлы изображений. Сервис может обрабатывать достаточно сложные документы и макеты, в том числе ссылки на изображения, инструкции JavaScript, CSS.

Пример №1 - Преобразование HTML страницы в файл PDF в приложениях под Android

public void ConvertWebPageToPDF()
{
    //может быть HTML или URL, начинающийся с http://...
    String value = "http://www.yandex.ru"
    String apiKey = "ВАШ_КЛЮЧ_API"; //получить можно тут: http://www.pdf4b.ru/register
    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();
            }
        }
    });
}

Пример №2 - Преобразование HTML страницы в файл изображения, например JPEG в приложениях под Android

В данном примере мы получаем файл в формате JPEG, но вы можете установить форматы "png", "bmp" или "svg".
public void ConvertWebPageToImage()
{
    String apiKey = "ВАШ_КЛЮЧ_API"; //получить можно тут: http://www.pdf4b.ru/register
    String value = "http://www.yandex.ru" //может быть HTML или URL, начинающийся с http://...
    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"); //Устанавливаем формат получаемого файла как JPEG
 
    // 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();
            }
        }});
    }

Пример №3 - Преобразование исходного HTML кода в файл PDF в приложениях под Android

Исходный код HTML может влючать в себя CSS, картинки и т.п
public void ConvertHTMLStringToPDF()
{
    String apiKey = "ВАШ_КЛЮЧ_API"; //получить можно тут: http://www.pdf4b.ru/register
    String value = "<h1>Некоторый <strong>текст</strong>строка HTML</h1>" <//может быть HTML или URL, начинающийся с http://...
    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();
            }
        }});
    }

Класс InputStreamReader

Данный класс используется во всех примерах
//Данный класс служит для отправки данных в API
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));
    }
}
Поделитесь с коллегами:
 

Не тратьте свое время! Подключайтесь к API прямо сейчас!

Генерация ключа занимает меньше минуты. Ключ будет мгновенно выслан вам на почту.