android - 如何在android中将内容下载为pdf文件?

标签 android pdf webview

我正在开发一个应用程序,因为我可以显示源和目的地之间的路线并显示有关该路线的一些描述。现在我正在尝试将该描述下载到我的手机中。我是这样搜索的,但我没有找到任何相关的例子。请为此分享任何示例

我的代码

private class GetRouteTask extends AsyncTask<String, Void, String>{
    private ProgressDialog pDialog;
    String response="";
    private  WeakReference<ShowRoutesInMap> weakRef;

    //public ArrayList<String> alter;
    public ArrayList<String> route1;
    public ArrayList<String> route2;
    public ArrayList<String> route3;

    PolylineOptions rectLine = null;
    PolylineOptions rectLine1 = null;
    PolylineOptions rectLine2 = null;
    PolylineOptions rectLine3 = null;
    public ArrayList<LatLng> directionPoint;
    private ArrayList<String> alter;

    public GetRouteTask(ShowRoutesInMap context){
        this.weakRef =new WeakReference<ShowRoutesInMap>(context);
    }
    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
         pDialog = new ProgressDialog(ShowRoutesInMap.this);
         if(!isFinishing()){
         pDialog.setMessage("Please wait For TrafficJam Route...");
         pDialog.setCancelable(false);
         pDialog.show();
         }
    }
    @Override
    protected String doInBackground(String... params) {
        // TODO Auto-generated method stub
        try{
            if(sourcePosition!=null && destinationPostion!=null){
        document = v2GetRouteDirection.getDocument(sourcePosition, destinationPostion,GMapV2Direction.MODE_DRIVING);
            }
        }
        catch(Exception e){
            return "exception caught";
        }

        response = "Success";
        return response;
    }
    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
    //  if(!isFinishing()){
            pDialog.dismiss();
    //      }

         route1 = new ArrayList<String>();
         route2 = new ArrayList<String>();
         route3 = new ArrayList<String>();
        if(result.equalsIgnoreCase("exception caught")){
            Toast.makeText(getApplicationContext(), "INVALID VALUES", Toast.LENGTH_LONG).show();
        }
        else{
        if (weakRef.get() != null && ! weakRef.get().isFinishing()){

    //  if(response.equalsIgnoreCase("Success")){
            alter = v2GetRouteDirection.getAlternativeRoutes(document);


            int duration = v2GetRouteDirection.getDurationValue(document);
            Log.e("TRAFFIC DURATIONTIME",""+duration);
            int trfficClearTime = v2GetRouteDirection.getDistanceValue(document);
            Log.e("TRAFFIC TIME", ""+trfficClearTime);

            for( j=0;j<alter.size();j++){

                 directionPoint =v2GetRouteDirection.getDirection(document, j);

                ArrayList<String> desc = v2GetRouteDirection.getDescription(document,j);

                if(j==0){

                    for(int l=0;l<desc.size();l++){
                    route1.add(desc.get(l));

                    Log.e("ROUTE1", desc.get(l).replace("\\<.*?>",""));
                    }
                }
                    else if(j==1){

                        for(int l=0;l<desc.size();l++){
                        route2.add(desc.get(l));
                        Log.e("ROTE2", desc.get(l).replace("\\<.*?>",""));
                    }
                    }
                        else if(j==2){

                            for(int l=0;l<desc.size();l++){
                            route3.add(desc.get(l));
                            Log.e("ROTE2", desc.get(l).replace("\\<.*?>",""));
                        }
                    }
            rectLine = new PolylineOptions().width(5).color(Color.RED).geodesic(true);

                for (int i = 0; i < directionPoint.size(); i++) {

                    rectLine.add(directionPoint.get(i));

                }

                googleMap.addPolyline(rectLine);


                getMarkersOnMap(googleMap);

                 alterRoutes1.setText(""); 


                if(alter.size()==1){
                     alterRoutes1.setText(alter.get(0)); 
                }
                else if(alter.size()>=1 && alter.size()<=2){
                    alterRoutes1.setText(alter.get(0)); 
                    alterRoutes2.setText(alter.get(1));
                }
                else if(alter.size()>=1 && alter.size()<=3){
                    alterRoutes1.setText(alter.get(0)); 
                    alterRoutes2.setText(alter.get(1));
                    alterRoutes3.setText(alter.get(2));
                }
            }
        }
        alterRoutes1.setOnClickListener(new OnClickListener() {

            private ArrayList<LatLng> directionPoint1;

            @Override
            public void onClick(View v) {                   // TODO Auto-generated method stub
                googleMap.clear();
            //    ArrayList<String> alter = v2GetRouteDirection.getAlternativeRoutes(document);
                 rectLine1 = new PolylineOptions().width(5).color(Color.GREEN).geodesic(true);
                 for( int k=0;k<alter.size();k++){
                     directionPoint1 =v2GetRouteDirection.getDirection(document, k);
                     for (int i = 0; i < directionPoint1.size(); i++) {
                            if(k==0){
                            rectLine1.add(directionPoint1.get(i));

                            }
                        }
                     googleMap.addPolyline(rectLine1);
                     getMarkersOnMap(googleMap);
                 }  

                for(int i=0;i<route1.size();i++){
                    showDirection.append(route1.get(i).replaceAll("\\<.*?>",""));
                    }
            }
        });
        alterRoutes2.setOnClickListener(new OnClickListener() {

            private ArrayList<LatLng> directionPoint2;

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                googleMap.clear();
                showDirection.setText("");
                 rectLine2 = new PolylineOptions().width(5).color(Color.MAGENTA).geodesic(true);
                 for( int k=0;k<alter.size();k++){
                     directionPoint2 =v2GetRouteDirection.getDirection(document, k);
                     for (int i = 0; i < directionPoint2.size(); i++) {
                            if(k==1){
                            rectLine2.add(directionPoint2.get(i));
                          }
                        }
                        googleMap.addPolyline(rectLine2);
                        getMarkersOnMap(googleMap);
                 }  
                for(int i=0;i<route2.size();i++){
                showDirection.append(route2.get(i).replaceAll("\\<.*?>",""));
                }
            }
        });
        alterRoutes3.setOnClickListener(new OnClickListener() {
            private ArrayList<LatLng> directionPoint3;
            int count=0;
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                googleMap.clear();
                showDirection.setText("");
                 rectLine3 = new     
   PolylineOptions().width(5).color(Color.BLUE).geodesic(true);
                 for( int k=0;k<alter.size();k++){
                     directionPoint3 
 =v2GetRouteDirection.getDirection(document, k);
                     for (int i = 0; i < directionPoint3.size(); i++) {
                            if(k==2){

 rectLine3.add(directionPoint3.get(i));

                           }
                        }
                        googleMap.addPolyline(rectLine3);
                        getMarkersOnMap(googleMap);

                        }
                for(int i=0;i<route3.size();i++){
                showDirection.append(""+ ++count);
                    showDirection.append(route3.get(i).replaceAll("\\<.*?
    >",""));
                    }
            }
        });


        }
    }
}
  public void getMarkersOnMap(GoogleMap gmap){
     Markeropition1.position(sourcePosition).icon(BitmapDescriptorFactory
            .defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
            .flat(true);
    Markeropition2.position(destinationPostion).icon(BitmapDescriptorFactory
             .defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
             .flat(true);
    Markeropition1.draggable(true);
    Markeropition2.draggable(true);
    gmap.moveCamera(CameraUpdateFactory.newLatLngZoom(sourcePosition,10)); 
    gmap.addMarker(Markeropition1);
    gmap.addMarker(Markeropition2);
}

最佳答案

可以从 Api 级别 19 在 android 中生成 pdf 文档。您可以引用此链接 http://developer.android.com/reference/android/graphics/pdf/package-summary.html

关于android - 如何在android中将内容下载为pdf文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22853477/

相关文章:

android - AlertDialog 包装它的内容

android - 从以特定方式开始和结束的 Web 链接启动 android 应用 Activity

javascript - 强制 Android WebView 离线

java - 在我的类(class)中实现 Thread Android?

android - 收到接近警报 Intent 时如何接收位置信息?

javascript - 如何强制下载/打开对话框显示来自 Javascript 的 PDF?

php - 在 DOMPDF 中打印边距

reactjs - 如何使用 React 检查文件扩展名

android - ViewPager 中的 WebViews 并不总是更新

android - WebView 和 HTTPClient 之间共享 Cookies?