Как отобразить содержимое PDF-файла?

#android #pdf

Вопрос:

Я хочу скопировать pdf-файл с URL-адреса и сохранить содержимое pdf-файла в растровом изображении. Я использовал следующий код, но я не получаю его, так как это содержимое pdf. Это дает что-то в другом формате.Пожалуйста, помогите мне и скажите, где я ошибаюсь.

 public class MyActivity extends ListActivity implements OnClickListener
{
 Button addResumeFromUrlBtn;
EditText addResumeFromUrlTxt;
String resume;
@Override
protected void onCreate(Bundle savedInstanceState)
{   
    super.onCreate(savedInstanceState);
    setContentView(R.layout.resumeselection);       

    addResumeFromUrlTxt = (EditText)findViewById(R.id.addResumeFromURLTxt);     
    addResumeFromUrlBtn = (Button)findViewById(R.id.addResumeFromURLBtn);
    addResumeFromUrlBtn.setOnClickListener(this);
}

public String readPDF() throws Exception
{
     BufferedReader in = null;
     String page = "";
     try {
         HttpClient client = new DefaultHttpClient();
         HttpGet request = new HttpGet();
         request.setURI(new URI("http://www.inkwelleditorial.com/pdfSample.pdf"));
         HttpResponse response = client.execute(request);
         in = new BufferedReader
         (new InputStreamReader(response.getEntity().getContent()));
         StringBuffer sb = new StringBuffer("");
         String line = "";
         String NL = System.getProperty("line.separator");
         while ((line = in.readLine()) != null) {
             sb.append(line   NL);
         }
         in.close();
         page = sb.toString();
         } finally {
         if (in != null) {
             try {
                 in.close();
            } catch (IOException e) {e.printStackTrace();}
         }
     }
    return page;        
}

public void onClick(View v) 
{       
    if(v == addResumeFromUrlBtn)
    {   
        try {
            resume = readPDF();             
        } catch (Exception e) 
        {
            e.printStackTrace();
        }   

        RelativeLayout l = (RelativeLayout)findViewById(R.id.resumeRelativelayout);
        TextView txt = new TextView(this);
        txt.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
        txt.setDrawingCacheEnabled(true);
         txt.setText(resume);   
        txt.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
                  MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        txt.layout(0, 0, txt.getMeasuredWidth(), txt.getMeasuredHeight());          
        txt.setDrawingCacheEnabled(false);           
        l.addView(txt);         
    }
}
}
 

Спасибо
Монали

Комментарии:

1. Я хотел, чтобы чтение PDF было таким же легким

Ответ №1:

             File file = new File(fileLocation);    

            if (file.exists()) {
                Uri path = Uri.fromFile(file);
                Intent intent = new Intent(Intent.ACTION_VIEW);    //Set Intent action view pdf file
                intent.setDataAndType(path, "application/pdf");      //Set data type
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);    

                try {
                    startActivity(intent);                          //Start Activity
                } catch (ActivityNotFoundException e) {
                    Toast.makeText(OpenPdf.this,
                            "No Application Available to View PDF",
                            Toast.LENGTH_SHORT).show();
                }
            }
 

Это файл для отображения в формате pdf

Комментарии:

1. спасибо, дроид, но я должен прочитать pdf-файл по URL-адресу, а не из файла. У вас есть какие-либо идеи о том, как читать содержимое pdf с URL

Ответ №2:

Во-первых, в Android нет поддержки pdf, поэтому вам нужно открыть его в каком-либо другом приложении, таком как adob, или, если вы хотите сделать это правильно, вам нужно загрузить библиотеку, такую как vudroid и apdfviewer .

apdfviewer очень хорош, но нет поддержки компиляции исходного кода, на самом деле все библиотеки работают с c в бэкэнде, поэтому вам нужно установить ndk.

Vudroid работает медленно, но вы можете легко скомпилировать.

Я надеюсь, что это вам поможет.