Как сделать так, чтобы изображение в формате PDF помещалось на весь экран android - PullRequest
0 голосов
/ 05 февраля 2020

Я использую это депо git приложение, которое позволяет вам захватывать или выбирать изображения и сохранять их в формате PDF. Он работает отлично, за исключением того, что сохраненное изображение не помещается на весь экран.

enter image description here

Поэтому я попытался изменить номера тезисов Document document = new Document(PageSize.A4, 38, 38, 50, 38); или image.setBorderWidth(15);

(documentRect.getWidth() - image.getScaledWidth()) / 2,
(documentRect.getHeight() - image.getScaledHeight()) / 2);

но не повезло ...

Кроме того, автор не использовал imageview на макете, поэтому мне пришлось редактировать проблематично. Любые идеи?

Обновление: очевидно изменение image.scaleAbsolute(bmp.getWidth(), bmp.getHeight()); на image.scaleAbsolute(500f, 500f); или image.scalePercent(500f); делает трюк (я должен играть с числами, чтобы соответствовать странице). Плохое качество изображения ужасно ...

PdfUtils

    public static final String LOG_ACTIVITY = "PdfUtils";

public static String ImgPdf(Activity activity, ArrayList<String> listPathImg,String folder, String pdfName) {

    String result ="";
    Image image;
    String path = FileUtils.createFolderApp(folder);
    path = path + pdfName + ".pdf";

    Document document = new Document(PageSize.A4, 38, 38, 50, 38);

    Log.v(LOG_ACTIVITY, "Document Created");

    Rectangle documentRect = document.getPageSize();

    try {

        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(path));

        document.open();

        for (int i = 0; i < listPathImg.size(); i++) {

            Bitmap bmp = MediaStore
                    .Images
                    .Media
                    .getBitmap(
                            activity.getContentResolver(),
                            Uri.fromFile(new File(listPathImg.get(i))));

            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bmp.compress(Bitmap.CompressFormat.PNG, 70, stream);

            image = Image.getInstance(listPathImg.get(i));

            if (bmp.getWidth() > documentRect.getWidth() || bmp.getHeight() > documentRect.getHeight()) {

                //bitmap is larger than page,so set bitmap's size similar to the whole page
                image.scaleAbsolute(documentRect.getWidth(), documentRect.getHeight());

            } else {
                //bitmap is smaller than page, so add bitmap simply.
                //[note: if you want to fill page by stretching image,
                // you may set size similar to page as above]

                image.scaleAbsolute(bmp.getWidth(), bmp.getHeight());
            }

            image.setAbsolutePosition(
                    (documentRect.getWidth() - image.getScaledWidth()) / 2,
                    (documentRect.getHeight() - image.getScaledHeight()) / 2);
            image.setBorder(Image.BOX);
            image.setBorderWidth(15);
            document.add(image);
            document.newPage();
        }
        result=path;
    } catch (Exception err) {
        err.printStackTrace();
        result="";
    } finally {
        document.close();
    }

    return  result;
}

Ответы [ 4 ]

1 голос
/ 05 февраля 2020

Вместо image.scaleAbsolute(width,height) попробуйте image.scaleToFit(width,height)

0 голосов
/ 05 февраля 2020

Я использую PDF24 Creator, если правильно понимаю вопрос.

0 голосов
/ 05 февраля 2020

Решение от этот ответ .

Я изменил image.scaleAbsolute(bmp.getWidth(), bmp.getHeight()); на image.scalePercent(scaler); из c Вы должны включить

float scaler = ((document.getPageSize().getWidth() - document.leftMargin()
                    - document.rightMargin() - indentation) / image.getWidth()) * 100;

Теперь оно подходит. Хотя качество изображения не идеальное.

0 голосов
/ 05 февраля 2020

Я думаю, что вы хотите изменить размер

    Rectangle documentRect = document.getPageSize();

Прямоугольник имеет 4 параметра, которые вы можете установить при построении (x, y, ширина, высота). Их изменение может решить вашу проблему.

...