работа с pdf

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
Rustam
Сообщения: 40
Зарегистрирован: 13 апр 2014, 11:38

работа с pdf

Сообщение Rustam » 13 янв 2015, 14:46

здравствуйте!
Вопрос такой
каким образом научить itext ладить с русскими буквами
перепробовал все способы, что нашел в инете ,в том числе и через настройку "Cp1251"
англ буквы без проблем, но вот с русскими беда

или подскажите другую библиотеку для работы с pdf

сейчас

Код: Выделить всё

                BaseFont baseFNT=BaseFont.createFont(BaseFont.COURIER, "Cp1251", BaseFont.NOT_EMBEDDED);
    		Font font=new Font(baseFNT,30,Font.NORMAL);
    		docPDF.add(new Paragraph("ТЕКСТ", font));
также пробовал в /assets запихнуть шрифт от винды times.ttf

Код: Выделить всё

BaseFont baseFNT=BaseFont.createFont("TIMES.TTF", "Cp1251", BaseFont.NOT_EMBEDDED);
строка ошибки не выдает - но текст все равно отсутствует

Rustam
Сообщения: 40
Зарегистрирован: 13 апр 2014, 11:38

Re: работа с pdf

Сообщение Rustam » 13 янв 2015, 18:27

ладно кому пригодиться для работы с pdf и itext

кидаем файл с шрифтом в assets
потом делаем следующее

Код: Выделить всё

BaseFont baseFNT=BaseFont.createFont("/assets/TIMES.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    		Font font=new Font(baseFNT,30,Font.NORMAL);
    		docPDF.add(new Paragraph("и что угодно можно тут писать йоптыть",font));
и работает все
в pdf отражаются русские буквы

Anzik
Сообщения: 22
Зарегистрирован: 20 янв 2015, 20:06

Re: работа с pdf

Сообщение Anzik » 22 янв 2015, 17:54

package com.anzik.z;

import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;


public class PdfActivity extends ActionBarActivity {

public int getPreviousPageImageResource() { return R.drawable.left_arrow; }


public int getNextPageImageResource() { return R.drawable.right_arrow; }


public int getZoomInImageResource() { return R.drawable.zoom_in; }


public int getZoomOutImageResource() { return R.drawable.zoom_out; }


public int getPdfPasswordLayoutResource() { return R.layout.pdf_file_password; }


public int getPdfPageNumberResource() { return R.layout.dialog_pagenumber; }


public int getPdfPasswordEditField() { return R.id.etPassword; }


public int getPdfPasswordOkButton() { return R.id.btOK; }


public int getPdfPasswordExitButton() { return R.id.btExit; }


public int getPdfPageNumberEditField() { return R.id.pagenum_edit; }

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);


File sdCard = Environment.getExternalStorageDirectory();


File dir = new File (sdCard.getAbsolutePath() + "/pdf");


dir.mkdirs();


File f = new File(dir,"book.pdf");


if (!f.exists()) try {


InputStream is = getAssets().open("book.pdf");


int size = is.available();


byte[] buffer = new byte[size];


is.read(buffer);


is.close();


FileOutputStream fos = new FileOutputStream(f);


fos.write(buffer);


fos.close();


} catch (Exception e) { throw new RuntimeException(e); }


String path = f.getPath();


Intent intent = new Intent(this, PdfActivity.class);


intent.putExtra(PdfActivity.EXTRA_PDFFILENAME, path);


startActivity(intent);

}
Не могу указать путь к файлу.

Yoko999
Сообщения: 1
Зарегистрирован: 11 ноя 2016, 09:20

Re: работа с pdf

Сообщение Yoko999 » 11 ноя 2016, 09:25

Rustam писал(а):ладно кому пригодиться для работы с pdf и itext

кидаем файл с шрифтом в assets
потом делаем следующее

Код: Выделить всё

BaseFont baseFNT=BaseFont.createFont("/assets/TIMES.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    		Font font=new Font(baseFNT,30,Font.NORMAL);
    		docPDF.add(new Paragraph("и что угодно можно тут писать йоптыть",font));
и работает все
в pdf отражаются русские буквы

Мне почему-то не помогает. Производится парсинг html.... Русских букв в результирующем pdf всё равно не видит. Установка font-family в style для тега body не помогает:

Код: Выделить всё

 Paragraph p = new Paragraph();
                p.setFont(font);
XMLWorkerHelper xwh = XMLWorkerHelper.getInstance();
                ElementList htmlList = xwh.parseToElementList(htmlDocument.toString(), null);
                for (Element element : htmlList) {
                    p.add(element);
                }
document.add(p);

gee12
Сообщения: 1
Зарегистрирован: 12 ноя 2018, 16:32

Re: работа с pdf

Сообщение gee12 » 12 ноя 2018, 16:36

Rustam писал(а):кидаем файл с шрифтом в assets
Спасибо, помог!
Yoko999 писал(а):Мне почему-то не помогает.
Как оказалось, метод setFont() работает некорректно:

Код: Выделить всё

         // так работает
        Phrase phrase = new Phrase(data, font);

        // так НЕ работает
        Phrase phrase = new Phrase(data); 
        phrase.setFont(font);

Ответить