itextg 5.5.1 で PDF フォームに入力しようとしていますが、できません。コードは新しい PDF を作成しますが、入力しません。これは acrobat を使用した pdf 作成であり、フィールドは 3 つしかありません。問題は、de AcrobFields form= stamper.getfields(); を作成したときです。フォームにはフィールドがありません。itextg の古いバージョン 5.5.0 では、すべてのフィールドが入力された新しい pdf が生成されました。
手伝って頂けますか?ここにコードを入れます:
Package com.example.gnenerarpdf;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener{
private final static String NOMBRE_DIRECTORIO = "MiPdf";
private final static String NOMBRE_DOCUMENTO = "prueba3.pdf";
private final static String ETIQUETA_ERROR = "ERROR";
private final static String INPUTFILE="prototipo.pdf";
private static String OUTPUTNAME="prototiporelleno.pdf";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Generaremos el documento al hacer click sobre el botón.
findViewById(R.id.btnGenerar).setOnClickListener(this);
}
@Override
public void onClick(View v) {
// Creamos el documento.
//Document documento = new Document();
try {
// Creamos el fichero con el nombre que deseemos.
//File f = crearFichero(NOMBRE_DOCUMENTO);
PdfReader reader;
PdfStamper stamper;
File file=crearFichero(INPUTFILE);
String ruta=file.getAbsolutePath();
reader = new PdfReader(ruta);
OUTPUTNAME=file.getParentFile()+"/"+"prototiporelleno1.pdf";
stamper = new PdfStamper(reader, new FileOutputStream (OUTPUTNAME));
AcroFields form = stamper.getAcroFields();
form.setField("Nombre", "pepe");
form.setField("Apellidos", "rodriguez hernandez");
form.setField("Fecha", "15/05/14");
stamper.close();
reader.close();
Toast.makeText(this, "Pdf generated", Toast.LENGTH_LONG).show();
} catch (IOException e) {
Log.e(ETIQUETA_ERROR, e.getMessage());
} catch (com.itextpdf.text.DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// Cerramos el documento.
}
}
/**
* Crea un fichero con el nombre que se le pasa a la función y en la ruta
* especificada.
*
* @param nombreFichero
* @return
* @throws IOException
*/
public static File crearFichero(String nombreFichero) throws IOException {
File ruta = getRuta();
File fichero = null;
if (ruta != null)
fichero = new File(ruta, nombreFichero);
return fichero;
}
/**
* Obtenemos la ruta donde vamos a almacenar el fichero.
*
* @return
*/
public static File getRuta() {
// El fichero será almacenado en un directorio dentro del directorio
// Descargas
File ruta = null;
if (Environment.MEDIA_MOUNTED.equals(Environment
.getExternalStorageState())) {
ruta = new File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
NOMBRE_DIRECTORIO);
if (ruta != null) {
if (!ruta.mkdirs()) {
if (!ruta.exists()) {
return null;
}
}
}
} else {
}
return ruta;
}
}