【发布时间】:2014-10-15 07:09:45
【问题描述】:
我正在尝试使用 Android 平台中的 MuPDF 库从 PDF 文件中提取文本。
是否可以在由坐标(左、上、右、下)指定的矩形内提取文本?
注意:我没有从源代码编译库。我正在使用分布在https://github.com/libreliodev/android 中的编译库。
【问题讨论】:
-
这个问题有答案吗?有没有找到通过指定左上右下坐标来获取文本的方法?
我正在尝试使用 Android 平台中的 MuPDF 库从 PDF 文件中提取文本。
是否可以在由坐标(左、上、右、下)指定的矩形内提取文本?
注意:我没有从源代码编译库。我正在使用分布在https://github.com/libreliodev/android 中的编译库。
【问题讨论】:
是的,当然 这是你可以做的。
1.GeneratedText 活动
public class GeneratedText extends Activity {
private Button close;
private Button clear;
private TextView tv;
private String data;
String text = "";
Intent i;
Context mContext;
// MuPDFPageView pdfview = new MuPDFPageView(mContext, null, null);
private EditText edit;
private Button undo;
public static GeneratedText screen;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_generated_text);
close = (Button)findViewById(R.id.close);
clear = (Button)findViewById(R.id.clear);
tv = (TextView)findViewById(R.id.text1);
edit = (EditText)findViewById(R.id.edit);
undo = (Button)findViewById(R.id.undo);
undo.setEnabled(false);
i = getIntent();
data = i.getStringExtra("data");
tv.setText(data);
String mypattern = "Name and address of the Employee \n";
Pattern p = Pattern.compile(mypattern,Pattern.DOTALL);
if(data.matches(mypattern))
{
System.out.println("Start Printing name");
}
else
//do nothing
edit.setText(data);
System.out.println("hello user "+"/n"+"user1"+ "\n"+ "user2");
SharedPreferences pref = getSharedPreferences("key", 0);
SharedPreferences.Editor editor = pref.edit();
editor.putString("text", data);
editor.commit();
clear.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv.setText("");
edit.setText("");
undo.setEnabled(true);
}
});
close.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
});
undo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String value = "";
SharedPreferences pref = getSharedPreferences("key", 0);
value = pref.getString("text", value);
edit.setText(value);
tv.setText(value);
undo.setEnabled(false);
}
});
}
}
1。现在在 mupdfactivity 中写这个
public void Showtext( )
{
destroyAlertWaiter();
core.stopAlerts();
MuPDFPageView pdfview = new MuPDFPageView(MuPDFActivity.this, core, null);
String data = "";
pdfview.setFocusable(true);
data = pdfview.getSelectedText();
Intent i = new Intent(getApplicationContext(),GeneratedText.class);
i.putExtra("data",data);
startActivity(i);
}
在 OnAcceptButtonClick 中调用 Showtext
你会得到你的文字。
【讨论】:
是的,可以借助 MuPDF 库从 PDF 文档中提取文本。 mupdf.c 中有一个名为 text() 的方法,该方法在 MuPDFCore.java 中定义,它返回页面的文本。您需要逐页调用该方法。 脚步: 1. gotopage(页码) 2.文本()
【讨论】: