【发布时间】:2015-12-14 23:24:01
【问题描述】:
嘿,所以我正在尝试使用 iText 获取用户添加的字符串,然后将它们添加到我导入应用程序的可填充 PDF 中。但是,我的应用程序无法识别我正在添加的预先描述的字符串。我将添加一些代码的 sn-ps,以便任何人都可以告诉我出了什么问题。对不起,如果这听起来像一个弱问题,但这是我第一次使用 iText。
这是我的 MainActivity.java
public class Main extends Activity {
EditText editText,editText2,editText3,editText4,editText5,editText6,editText7,editText8,editText9,editText10;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
final Customer newCustomer=new Customer();
try {
reader=new PdfReader(getResources().openRawResource(R.raw.pgform));
} catch (IOException e) {
e.printStackTrace();
}
findViewsById();
savebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Customer newCustomer=new Customer();
//newCustomer.one(editText.getText().toString());
//newCustomer.two(editText2.getText().toString());
OutputStream output=null;
try {
reader=new PdfReader(getResources().openRawResource(R.raw.pvgform));
} catch (IOException e) {
e.printStackTrace();
}
try {
PdfStamper stamper=new PdfStamper(reader,output);
AcroFields acroFields=stamper.getAcroFields();
acroFields.setField("fullnameorinitials",one);
acroFields.setField("agedob",two);
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
private void findViewsById(){
editText=(EditText)findViewById(R.id.editText);
editText2=(EditText)findViewById(R.id.editText2);
editText3=(EditText)findViewById(R.id.editText3);
editText4=(EditText)findViewById(R.id.editText4);
editText5=(EditText)findViewById(R.id.editText5);
editText6=(EditText)findViewById(R.id.editText6);
editText7=(EditText)findViewById(R.id.editText7);
editText8=(EditText)findViewById(R.id.editText8);
editText9=(EditText)findViewById(R.id.editText9);
editText10=(EditText)findViewById(R.id.editText10);
}
public class Customer{
String one=editText.getText().toString();
String two=editText2.getText().toString();
String three=editText3.getText().toString();
String four=editText4.getText().toString();
String five=editText5.getText().toString();
String six=editText6.getText().toString();
String seven=editText7.getText().toString();
String eight=editText8.getText().toString();
String nine=editText9.getText().toString();
String ten=editText10.getText().toString();
}
}
似乎有问题的代码行是当我尝试使用我的应用程序中的每个 editText 设置 PDF 中的字段时。
acroFields.setField("fullnameorinitials",one);
错误在于字符串值(一)。 请任何形式的生殖帮助表示赞赏!
【问题讨论】:
-
错误在字符串值(一) - 究竟是哪个错误?此外,您不会关闭
stamper。因此,即使没有错误,您的代码也不会按预期工作。 -
向我们展示表格!也许该表单中没有名称为
fullnameorinitials的字段(在这种情况下,永远不会添加one的值)。 -
@mkl 它说了一些关于无法解析方法一的事情,但一个是字符串
-
如何将
setField调用分别更改为acroFields.setField("fullnameorinitials", editText.getText().toString())和acroFields.setField("agedob", editText2.getText().toString())。之后不要忘记stamper.close()。 -
(您当然可以加入
Customerbean 以分离关注点,但在这种情况下,请使用独立于视图字段的合理成员名称,例如fullName而不是one。)
标签: java android pdf-generation itext acrofields