Я получаю эту ошибку после запуска моего приложения в 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.
*/