Как убрать пустое пространство из нижней части PDF itext - PullRequest
1 голос
/ 08 марта 2019

Я пытаюсь создать гигантский PDF-файл, который будет содержать всю информацию на одной странице, поскольку между данными в документе не должно быть разрывов. он, вероятно, никогда не будет напечатан, поэтому размер PDF не является проблемой. Используя Itext, единственный способ, который я нашел возможным, - это создать страницу длиной 14400px "или 5M на страницах формата A4, но это оставляет пробел, если документ короче, чем ожидалось (я никогда не видел документ длиннее 14400px ) это мой код пока

private void pdfSave() {
        float pageWidth = 200f;
        float pageHeight = 1440f;
        Rectangle pageSize = new Rectangle(pageWidth, pageHeight);
        Document mDoc =new Document(pageSize);
        String mFileName = new SimpleDateFormat("ddMMyyyy_HHmmss",
                Locale.getDefault()).format(System.currentTimeMillis());

        String mFilePath = Environment.getExternalStorageDirectory()+"/"+"pdf_viewer"+"/"+mFileName+".pdf";
        File dir = new File(mFilePath);
        if(!dir.exists()){
            dir.getParentFile().mkdir();
        }
        try{
            PdfWriter.getInstance(mDoc, new FileOutputStream(mFilePath));
            mDoc.setMargins(10,10,10,10);
            mDoc.open();

            String mText = mTextEt.getText().toString();


            mDoc.add(new Paragraph(mText,FontFactory.getFont(FontFactory.HELVETICA, 4, Font.BOLDITALIC)));
            mDoc.close(); 
        }

Редактировать: я пытался использовать поле кадрирования и второй проход, как указано в комментарии, но мое приложение вылетает в этой строке, если я отлаживаю его

Rectangle rect = getOutputPageSize(pageSize, reader, i); 
...