Поля формы Android iText addTemplate Stamp выходят за пределы существующего документа PDF

Я пытаюсь открыть стандартную PDF-форму из устаревшего приложения на Android, наложить поля формы с помощью iText и перейти в Adobe Reader на Android для заполнения формы.

Мне удалось создать текстовые поля вручную, но я бы предпочел использовать файл PDF в качестве шаблона, чтобы ускорить процесс и лучше контролировать качество.

Вот код, который у меня есть до сих пор, он следует примерам itext.

    AssetFileDescriptor descriptor = getAssets().openFd("standardWO_Template_v1_fo.pdf");
            File templateFile = new File(descriptor.getFileDescriptor().toString());
            PdfReader reader = new PdfReader(intent.getData().getPath());
            reader.selectPages("1");
            PdfReader templateReader = new PdfReader(templateFile.getAbsolutePath());
            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(file));
            // Stamp the template onto the document
            PdfImportedPage page = stamper.getImportedPage(templateReader, 1);
            PdfContentByte cb = stamper.getOverContent(1);
            cb.addTemplate(page, 0, 0);

Проблема, с которой я сталкиваюсь, находится в последней строке. cb.addTemplate(страница, 0,0);

Eclipse сообщает о следующей ошибке. Тип java.awt.geom.AffineTransform не может быть разрешен. На него косвенно ссылаются необходимые файлы .class.

Из того, что я смог сказать, java.awt.geom.AffineTransform не будет работать на Android, только на Java.

Есть ли другой способ выполнить мою задачу или заставить AffineTransform работать в Android?


person Nick    schedule 12.09.2012    source источник


Ответы (1)


После еще нескольких поисков я нашел этот метод. Сначала мне пришлось перейти от использования библиотеки iText5.3.1 в моем проекте Android к библиотеке droidText.

После того, как я установил библиотеку droidText, я смог использовать следующий код. (и ctrl-o в затмении)

    File templateFile = new File(dir.getAbsolutePath() + "/templates/standardWO.pdf");
            // Read the incoming file
            PdfReader reader = new PdfReader(intent.getData().getPath());
            // Read the template form information
            PdfReader templateReader = new PdfReader(templateFile.getAbsolutePath());
            // Create the stamper from the incoming file.
            PdfStamper stamper = new PdfStamper(templateReader, new FileOutputStream(file));
            // Import the template information
            PdfImportedPage iPage = stamper.getImportedPage(reader, 1);
            // get the direct content
            PdfContentByte cb = stamper.getUnderContent(1);
            // Add the imported page to the content
            cb.addTemplate(iPage, 0, 0);
            stamper.close();
            Log.v(TAG, "Opening file in adobe reader: " + file.getAbsolutePath());
            loadDocInReader(file);
person Nick    schedule 13.09.2012
comment
Эй, спасибо, Ник, за эту конкретную информацию. Я пытаюсь использовать pdfReader API в своем Java-приложении в eclipse. Это дает: pdfreader не может быть разрешен к ошибке типа. Не подскажете, что здесь делать? - person The Dark Knight; 12.11.2012