При слиянии PDF-файлов с использованием itext в результате pdf показывает 0 байтов в Android Studio - PullRequest
0 голосов
/ 06 июля 2018

Мой код здесь; Я выбирал PDF-файлы с SD-карты или из внутренней памяти телефона, используя метод showFileChooser(), затем из onActivityResult(), файлы переходят в метод mergePdfFiles(View view), а оттуда файлы переходят в createPdf(String[] srcs).

.

Вот полный код моей деятельности: // Ниже находится onCreate ();

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mergedpdf);

    adapter = new ArrayAdapter<>(this,
            android.R.layout.simple_list_item_1, locations);

    // public void fileSelected(File file ) {
    //      locations.add(file.toString());
    //      adapter.notifyDataSetChanged();
    //  }




    NewText = (TextView)findViewById(R.id.textView);

    AdView mAdView = findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder().build();
    mAdView.loadAd(adRequest);

    listView = (ListView)findViewById(R.id.list_items);



    btn = (ImageView) findViewById(R.id.imageView8);

    btnconvert = (ImageView) findViewById(R.id.imageView11);

    btnconvert.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //   btTag=((Button)v).getTag().toString();

            try {
                createPdf( locations);
            } catch (DocumentException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            //Toast.makeText(Mergedpdf.this, "button clicked", Toast.LENGTH_SHORT).show();
        }
    });





    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //   btTag=((Button)v).getTag().toString();
            showFileChooser();
            NewText.setText("Below Files are Selected");
        }
    });


}

// это mergedfiles ();

 public void mergePdfFiles(View view){
    Toast.makeText(Mergedpdf.this, "merge function", Toast.LENGTH_SHORT).show();
    try {String[] srcs= new String[locations.size()];
        for(int i = 0;i<locations.size();i++) {
            srcs[i] = locations.get(i);
        }

        //  String[] srcs = {txt1.getText().toString(), txt2.getText().toString()};
        createPdf(srcs);

    }catch (Exception e){e.printStackTrace();}
}

// Этот метод создает объединенный файл PDF

public void createPdf (String[] srcs) {
        try {
            // Create document object

            File docsFolder = new File(Environment.getExternalStorageDirectory() + "/Merged-PDFFiles");
            if (!docsFolder.exists()) {
                docsFolder.mkdir();
                Log.i(TAG, "Created a new directory for PDF");
            }

            Date date = new Date();
            @SuppressLint("SimpleDateFormat") final String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(date);

            Document document = new Document();
            // pdfCopy = new File(docsFolder.getAbsolutePath(),pdf+"Images.pdf");
            // Document document = new Document();
            //PdfWriter.getInstance(document, output);

            // Create pdf copy object to copy current document to the output mergedresult file
            PdfCopy copy = new PdfCopy(document, new FileOutputStream(docsFolder + "/" + timeStamp +"combine.pdf"));
            Toast.makeText(Mergedpdf.this, "merged pdf saved", Toast.LENGTH_SHORT).show();
            // Open the document
            document.open();
            PdfReader pr;

            int n;

            for (int i = 0; i < srcs.length; i++) {
                // Create pdf reader object to read each input pdf file
                pr = new PdfReader(srcs[i].toString());
                // Get the number of pages of the pdf file
                n = pr.getNumberOfPages();

                for (int page = 1; page <= n; page++) {
                    // Import all pages from the file to PdfCopy
                    copy.addPage(copy.getImportedPage(pr, page));
                }
            }

            document.close(); // close the document
        } catch (Exception e) {
            e.printStackTrace();
        }
   }

// ниже находится showfilechooser (); Метод

private void showFileChooser () {
    Log.e("AA", "bttag=" + btTag);
    String folderPath = Environment.getExternalStorageDirectory() + "/";
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_GET_CONTENT);
    Uri myUri = Uri.parse(folderPath);
    intent.setDataAndType(myUri, "application/pdf");
    Intent intentChooser = Intent.createChooser(intent, "Select a file");
    startActivityForResult(intentChooser,PICKFILE_RESULT_CODE);
}

// ниже - onActivityResult (); метод

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (data != null) {
        if (requestCode == PICKFILE_RESULT_CODE) {
            if (resultCode == RESULT_OK) {
                String FilePath = data.getData().getPath();
                locations.add(FilePath);
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.listview,locations);
                listView.setAdapter(adapter);

            }
        }
    }
}

// И мои объявленные переменные перед oncreate ().

   public com.itextpdf.text.Document Document;
public PdfCopy Copy;





public ByteArrayOutputStream ms;

TextView NewText;
private TextView txt1;
private Button bt1, bt2,bt3;
private Handler handler;
ListView listView;
ArrayList<String> locations = new ArrayList<>();
ArrayAdapter<String> adapter;
ImageView btn, btnconvert, btn3;
private static final String TAG = "PdfCreator";

private final int PICKFILE_RESULT_CODE=10;

private String btTag = "";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...