0
私は少しの周りにアンドロイドのための良いPDF APIを見つけるために見て、私はPDFBoxを発見した。私はこの図書館で遊び始めましたが、主に私は特定のPDF形式を操作したいと思っています。pdfbox PDFドキュメントを操作 - android
今こうして私はフィールドに入ると一部を挿入するために開始することができない、私は私の資産フォルダからsuccessfulyファイルをロードしていますが、私は
getAcroForm();
を呼び出すしようとすると、それは私にnullオブジェクトをオンデータ。ここで
は、私はpdfファイルを読み込むコードをSDカードにコピーし、あるとPDDocumentオブジェクトにロードします。
package com.silverfix.pdfpractice;
import android.content.res.AssetManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
import org.apache.pdfbox.pdmodel.interactive.form.PDFieldTreeNode;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
public class MainActivity extends AppCompatActivity{
private final String FORM_NAME = "dgc.pdf";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
AssetManager assetManager = getAssets();
File file = createFileFromInputStream(assetManager.open(FORM_NAME));
PDDocument form = PDDocument.load(file);
PDDocumentCatalog catalog = form.getDocumentCatalog();
catalog.getPages().getCount();
Toast.makeText(this, "Loaded! " + catalog.getPages().getCount(), Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "Loading has failed", Toast.LENGTH_LONG).show();
}
}
private File createFileFromInputStream(InputStream inputStream) {
try{
OutputStream outputStream = new FileOutputStream("/sdcard/PDFPractice/" + FORM_NAME);
byte buffer[] = new byte[1024];
int length = 0;
while((length=inputStream.read(buffer)) > 0) {
outputStream.write(buffer,0,length);
}
outputStream.close();
inputStream.close();
File result = new File("/sdcard/PDFPractice/" + FORM_NAME);
return result;
}catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
どのように私はacroformせずにPDFファイルを操作することができますか?または、私はこのpdfファイルに数種類のacroformを自分で追加できますか?
同様の質問[ここ](http://stackoverflow.com/questions/16420509/getting-null-when-call- acroform-getfields-using-pdfbox) – Bill
PDFBoxソースコードのダウンロードでCreateSimpleFormの例を見てください。 (これがAndroid用のPDFBoxで動作するかどうかはわかりません)。 –
あなたのpdfに実際にAcroFormフォームが含まれていますか?あるいは、フォームフィールドの図がありますか? – mkl