(Вроде решено, но все же ценю лучшие ответы) Android Studio: как определить определенные специальные страницы в файле PDF? - PullRequest
0 голосов
/ 05 августа 2020

Я пишу приложение, которое генерирует рабочие листы по математике для школьников. Например, он генерирует от 2 до 5 страниц простых вопросов по математике и от 1 до 2 страниц с ответами. PDF-файл можно сохранить в файл и загрузить позже. Затем у него есть функция печати, которая может распечатать все страницы. Я хочу, чтобы он пропускал печать страниц ответов.

Можно ли автоматически определять, какие страницы являются страницами ответов? Я могу придумать только обходной путь, задав для этих страниц ответов особую высоту или ширину, но даже не уверен, работает ли это. Есть ли лучшие способы сделать это?

1 Ответ

0 голосов
/ 24 августа 2020

Хорошо, я продолжил проект и использовал следующий метод: при создании PDF-файла я поместил слово «Ответ» в верхнем левом углу с серым прямоугольником, окружающим его, нарисованным с помощью drawRect (). Затем перед фактической печатью я использовал следующий код внутри класса PrintDocumentAdapter (), чтобы проверить, является ли цвет пикселя 0,0 серым или нет.

@Override
        public void onStart() {
            if (parcelFileDescriptor != null) {
                try {
                    pdfRenderer = new PdfRenderer(parcelFileDescriptor);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            int tempTotal = pdfRenderer.getPageCount();
            Bitmap[] tempBitmap = new Bitmap[tempTotal];
            finalTotal = tempTotal;
            for (int pageNum = 0; pageNum < tempTotal; pageNum++) {
                PdfRenderer.Page tempPage = pdfRenderer.openPage(pageNum);
                tempBitmap[pageNum] = Bitmap.createBitmap(WS_WIDTH, WS_HEIGHT, Bitmap.Config.ARGB_8888);
                tempPage.render(tempBitmap[pageNum], null, null, PdfRenderer.Page.RENDER_MODE_FOR_PRINT);
                if (tempBitmap[pageNum].getPixel(0, 0) == Color.GRAY) {
                    finalTotal--;
                }
                tempPage.close();
            }
        }

Он работает нормально. По крайней мере, не должно вызывать проблем, если пользователи только пытаются для печати файлов PDF, созданных с помощью моего приложения.: P

Скажите, знаете ли вы, как это лучше сделать. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...