файл класса для com.itextpdf.io.source.OutputStream не найдена ошибка - PullRequest
0 голосов
/ 11 ноября 2019

Я получаю эту ошибку после запуска моего приложения в Android Studio: «Файл класса для com.itextpdf.io.source.OutputStream не найден». В чем может быть проблема? Вот мой код для приложения, которое записывает пользовательский ввод в pdf:

import androidx.annotation.ColorInt;
import androidx.appcompat.app.AppCompatActivity;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.Map;

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfFormField;
import com.itextpdf.text.pdf.AcroFields;

import android.graphics.Color;
import android.graphics.ColorSpace;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;

import java.util.Map;

import static android.graphics.ColorSpace.Model.RGB;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;

public class MainActivity extends AppCompatActivity {
    String hhName, name, surname, idNumber, cardNumber, phoneNumber,
            village, fdp, rankingOfficer, fieldOfficer;
    int rank, hhSize, wardNumber, quorum;

    EditText villageInput;
    EditText fdpInput;
    EditText rankingOfficerInput;
    EditText fieldOfficerInput;
    EditText wardNumberInput;
    EditText quorumInput;

    EditText rankInput;
    EditText hhNameInput;
    EditText nameInput;
    EditText surnameInput;
    EditText idNumberInput;
    EditText hhSizeInput;
    EditText cardNumberInput;
    EditText phoneNumberInput;

    Button submitButton, rowButton;
    TableLayout table;
    TableRow tableRow;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        setContentView(R.layout.activity_main);

        villageInput = (EditText) findViewById(R.id.villageInput);
        fdpInput = (EditText) findViewById(R.id.fdpInput);
        rankingOfficerInput = (EditText) findViewById(R.id.rankingOfficerInput);
        fieldOfficerInput = (EditText) findViewById(R.id.fieldOfficerInput);
        wardNumberInput = (EditText) findViewById(R.id.wardNumberInput);
        quorumInput = (EditText) findViewById(R.id.quorumInput);

        rankInput = (EditText) findViewById(R.id.rankInput2);
        hhNameInput = (EditText) findViewById(R.id.hhNameInput2);
        nameInput = (EditText) findViewById(R.id.nameInput2);
        surnameInput = (EditText) findViewById(R.id.surnameInput2);
        idNumberInput = (EditText) findViewById(R.id.idNumberInput2);
        hhSizeInput = (EditText) findViewById(R.id.hhSizeInput2);
        cardNumberInput = (EditText) findViewById(R.id.cardNumberInput2);
        phoneNumberInput = (EditText) findViewById(R.id.phoneNumberInput2);

        submitButton = (Button) findViewById(R.id.submitButton);
        rowButton = (Button) findViewById(R.id.rowButton);

        submitButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v){

                village = villageInput.getText().toString();
                fdp = fdpInput.getText().toString();
                rankingOfficer = rankingOfficerInput.getText().toString();
                fieldOfficer = fieldOfficerInput.getText().toString();
                wardNumber = Integer.valueOf(wardNumberInput.getText().toString());
                quorum = Integer.valueOf(quorumInput.getText().toString());

                name = nameInput.getText().toString();
                surname = surnameInput.getText().toString();
                hhName = hhNameInput.getText().toString();
                idNumber = idNumberInput.getText().toString();
                cardNumber = cardNumberInput.getText().toString();
                phoneNumber = phoneNumberInput.getText().toString();
                rank = Integer.valueOf(rankInput.getText().toString());
                hhSize = Integer.valueOf(hhSizeInput.getText().toString());


            }
        });

Я подозреваю, что ошибка связана с этой последней частью кода, то есть с кодом, который записывает пользовательский ввод в pdf,когда я пытаюсь запустить код, я всегда получаю сообщение об ошибке: «файл класса для com.itextpdf.io.source.OutputStream не найден». Обратите внимание, что приведенный ниже код является продолжением приведенного выше кода.

    public static final String SRC = "src/main/res/LSA.pdf";
    public static final String FileName = new SimpleDateFormat("yyyyMMdd_HHmmss",
            Locale.getDefault()).format(System.currentTimeMillis());
    public static final String FilePath = Environment.getExternalStorageDirectory() + "/" +
            FileName + ".pdf";

    public static void main(String args[]) throws IOException {
        File file = new File(FilePath);
        file.getParentFile().mkdirs();
        new MainActivity().manipulatePdf(SRC, FilePath);
    }

    public void manipulatePdf(String SRC, String FilePath) throws IOException {

        try {
            //Initialize PDF document
            PdfDocument pdf = new PdfDocument(new PdfReader(SRC), new PdfWriter(FilePath));


            PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);
            Map<String, PdfFormField> fields = form.getFormFields();
            fields.get("VILLAGE").setValue(village);
            fields.get("WARD").setValue("wardNumber");
            fields.get("FOOD_DISTRIBUTION_POINT").setValue(fdp);
            fields.get("FIELD_OFFICER").setValue(fieldOfficer);
            fields.get("RANKING_OFFICER").setValue(rankingOfficer);
            fields.get("QUORUM").setValue("quorum");

            fields.get("R1").setValue("rank");
            fields.get("HH_NAME1").setValue(hhName);
            fields.get("NAME1").setValue(name);
            fields.get("SURNAME1").setValue(surname);
            fields.get("HHS1").setValue("hhSize");
            fields.get("ID_NO1").setValue(idNumber);
            fields.get("CARD_NO1").setValue(cardNumber);
            fields.get("PHONE_NO1").setValue(phoneNumber);

            pdf.close();
            Toast.makeText(this, FileName + ".pdf\nis saved to\n" +
                    FilePath, Toast.LENGTH_SHORT);
        }
        catch (Exception e){
            Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT);
        }
    }

}

/**
 * Simple filling out form example.
 */

...