我正在捕获对deriving
的postscript调用,并将当前字体和字体大小存储到pdf Text对象的输出中。
PDF file
Input Postscript Program
但是public class MainActivity extends AppCompatActivity {
EditText et_message;
FloatingActionButton fab_send;
API api;
ListView list_view_conversation;
List<ChatModel> list_chat = new ArrayList<>();
RevealDetailsCallbacks callback;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_message = (EditText) findViewById(R.id.et_message);
fab_send = (FloatingActionButton) findViewById(R.id.fab_send);
list_view_conversation = (ListView) findViewById(R.id.list_view_conversation);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
api = retrofit.create(API.class);
fab_send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//this method ultimately is to get response and send back to user
String s = et_message.getText().toString();
ChatModel model = new ChatModel(s, true);
list_chat.add(model);
new retrieveDetails().execute(list_chat);
et_message.setText("'");
}
});
}
public class retrieveDetails extends AsyncTask<List<ChatModel>, Void, String> {
String text = et_message.getText().toString();
String mainReply = "";
List<ChatModel> models;
List<String> details = new ArrayList<String>();
@Override
public String doInBackground(List<ChatModel>[] lists) {
Call<List<Patient>> call = api.getPatients();
models = lists[0];
call.enqueue(new Callback<List<Patient>>() {
public String reply;
@Override
public void onResponse(Call<List<Patient>> call, Response<List<Patient>> response) {
List<Patient> patients = response.body();
for (int i = 0; i < patients.size(); i++) {
if (patients.get(i).getNric().equals(text)) {
details.add("Name: " + patients.get(i).getName() + "\nNRIC: " + patients.get(i).getNric()
+ "\nDOB: " + patients.get(i).getDob() + "\nContact No: " + patients.get(i).getContactno());
}
}
this.mainReply = details.get(0);
Log.i("Here Log i", reply);
}
@Override
public void onFailure(Call<List<Patient>> call, Throwable t) {
Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
return mainReply;//I want to reply with the data added into the details arraylist in the onResponse segment
}
@Override
public void onPostExecute(String s) {
ChatModel chatModel = new ChatModel(s, false);
models.add(chatModel);
CustomAdapter adapter = new CustomAdapter(models, getApplicationContext());
list_view_conversation.setAdapter(adapter);
}
}
}
给了我一个错误:
show
ghostscript的输出并没有给出我理解问题所需的细节:
identify
任何人都可以帮我理解我输出的pdf文件的问题是什么吗?
答案 0 :(得分:2)
PDF中存在许多错误。根据所讨论的PDF查看器,需要修复其中较小或较大的子集,以允许按预期显示PDF。
页面内容流的内容如下所示:
BT F1 10.0 Tf 30.0 750.0 Td (<< ) Tj ET BT F1 10.0 Tf 50.0 738.0 Td (/) Tj ET [...]
此处的错误出现在字体选择说明中:
F1 10.0 Tf
字体名称操作数 F1 不是作为PDF名称对象给出的(可以通过前导斜杠识别),而是作为通常为指令运算符保留的通用文字。
(另外,这些内容流结构不必要地膨胀,大多数单独的文本对象只绘制一到三个字形,并且拥有(总是相同的)文本字体选择指令。本身不是错误,但完全没必要)< / p>
此外,正如@ usr2564301所示,流长度似乎偏离了1。
字体资源如下所示:
<<
/Type /Font
/SubType /Type1
/BaseFont /Palatino-Roman
>>
首先,存在的问题是:正如@KenS已经指出的那样,正确的拼写是子类型,而不是 SubType 。
不还存在另一个问题:因此,只有标准的14种字体才允许使用短的字体资源字典,而PDF格式只允许使用短字体资源字典,而不再允许使用PDF 2.0。由于 Palatino-Roman 显然不是标准的14字体,因此无论如何资源都是不完整的。
根据表109 - ISO 32000-2中的Type 1字体字典中的条目,
根据PDF查看器,您尝试的要求可能看起来更宽松,但如果您不符合规范要求,任何PDF处理器都可以合理地拒绝您的PDF。
@ usr2564301还提到许多交叉引用表条目(以及对交叉引用表本身的开头的引用)都是1。
他们确实没有指向对象编号/ xref 文字,而是指向之前的空白区域。由于在数字/文字之前只需要忽略空格,因此很多PDF处理器都不会注意到。