Android应用程序将pdf文件保存到设备存储中

时间:2020-08-12 10:55:23

标签: java android android-studio

我正在尝试在Android应用程序中保存pdf文件,数据(“ formData”)来自存储在Hashtable 中的几个EditText字段,但是我总是以损坏/无法打开的结尾文件。保存过程是否有误,还是我做错了其他事情?

const [videos, setVideos] = useState([])
const handleFormSubmit = async (searchterm) => {
  const response = await fetch(
    `https://www.googleapis.com/youtube/v3/search?${params.toString()}&q=${searchterm}`
  )
  const data = await response.json()
  console.log(data)
  setVideos(data.items)
  console.log(videos)
}

PdfFillerImpl类:

   InputStream ins = getResources().openRawResource(getResources().getIdentifier(FORM_NAME,
                    "raw", getPackageName()));

    Context context = getApplicationContext();
    PdfFillerImpl fill = new PdfFillerImpl();
    byte[] data = fill.formFiller(formData, ins);
    if(!saveFileToExternalStorage(data)){
        Log.d("TAG", "FAILED TO SAVE FILE");
    }

} saveFileToExternalStorage方法:

public class PdfFillerImpl implements PdfFiller {
@Override
public byte[] formFiller(Hashtable<String, String> formData, InputStream inputStream) throws IOException {

    PDDocument pdfDoc = PDDocument.load(inputStream);

    PDDocumentCatalog docCatalog = pdfDoc.getDocumentCatalog();
    PDAcroForm acroForm = docCatalog.getAcroForm();

    for (Object fieldObj : acroForm.getFields()) {

        PDTextField field = (PDTextField) fieldObj;

        if (formData.containsKey(field.getFullyQualifiedName())) {
            field.setValue(formData.get(field.getFullyQualifiedName()));
        }
    }

    PDStream pdStream = new PDStream(pdfDoc);

    byte[] data;
    data = pdStream.toByteArray();
    return data;
}

0 个答案:

没有答案