THE Anonymous
THE Anonymous

Reputation: 5

open failed: ENOENT (No such file or directory) pdf file is not opening

i am trying to make an app which edit pdf and then save it in my phone storage but the code i write is not working whrn am i trying to open a pdf file it shows open failed: ENOENT (No such file or directory) error

mainActivity.java

   package com.example.pdfeditor;
   import android.app.Activity;
   import android.content.Intent;
   import android.database.Cursor;
   import android.net.Uri;
   import android.os.Bundle;
   import android.provider.MediaStore;
   import android.view.View;
   import android.widget.Button;
   import android.widget.Toast;

   import androidx.annotation.Nullable;
   import androidx.appcompat.app.AppCompatActivity;

   import com.itextpdf.text.Document;
   import com.itextpdf.text.DocumentException;
   import com.itextpdf.text.Font;
   import com.itextpdf.text.Paragraph;
   import com.itextpdf.text.pdf.BaseFont;
   import com.itextpdf.text.pdf.PdfWriter;

   import java.io.FileInputStream;
   import java.io.FileOutputStream;
   import java.io.IOException;
   import java.io.InputStream;
  public class MainActivity extends AppCompatActivity {

  private static final int REQUEST_CODE_PICK_PDF = 1;
  private String pdfFilePath;

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

    Button pickPdfButton = findViewById(R.id.btn);
    pickPdfButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.setType("application/pdf");
            startActivityForResult(intent, REQUEST_CODE_PICK_PDF);
        }
    });
 }

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE_PICK_PDF && resultCode == RESULT_OK && data != null) 
   {
        Uri uri = data.getData();
        if (uri != null) {
            pdfFilePath = getPathFromUri(uri);
            openPdfFile();
        }
    }
  }

  private String getPathFromUri(Uri uri) {
    String filePath;
    Cursor cursor = getContentResolver().query(uri, null, null, null, null);
    if (cursor == null) {
        filePath = uri.getPath();
    } else {
        cursor.moveToFirst();
        int index = cursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME);
        filePath = cursor.getString(index);
        cursor.close();
     }
     return filePath;
 }

 private void openPdfFile() {
    try {
        // Create input stream from file path
        InputStream inputStream = new FileInputStream(pdfFilePath);

        // Create a new PDF document
        Document document = new Document();

        // Set the output file path and create a new FileOutputStream
        String outputPath = pdfFilePath.replace(".pdf", "_edited.pdf");
        FileOutputStream outputStream = new FileOutputStream(outputPath);

        // Create a new PdfWriter instance
        PdfWriter writer = PdfWriter.getInstance(document, outputStream);

        // Open the document
        document.open();

        // Add text to document
        Font font = new Font(BaseFont.createFont("assets/fonts/arial.ttf", 
     BaseFont.IDENTITY_H, BaseFont.EMBEDDED), 12);
        Paragraph p = new Paragraph("This is a test PDF file.", font);
        document.add(p);

        // Close the document
        document.close();

        // Close the writer
        writer.close();

        // Show a toast message to indicate that the PDF file has been saved
        Toast.makeText(this, "PDF file saved at " + outputPath, 
   Toast.LENGTH_LONG).show();

    } catch (Exception e) {
          e.printStackTrace();
          Toast.makeText(this, "Error: " + e.getMessage(), Toast.LENGTH_LONG).show();
       }
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

   <Button
    android:id="@+id/btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Pick PDF file"
    android:layout_centerInParent="true" />

error

W/System.err: java.io.FileNotFoundException: coa 2.1.pdf: open failed: ENOENT (No such file or directory) W/System.err: at libcore.io.IoBridge.open(IoBridge.java:574) W/System.err: at java.io.FileInputStream.(FileInputStream.java:160) W/System.err: at java.io.FileInputStream.(FileInputStream.java:115) W/System.err: at com.example.pdfeditor.MainActivity.openPdfFile(MainActivity.java:76) W/System.err: at com.example.pdfeditor.MainActivity.onActivityResult(MainActivity.java:54) W/System.err: at android.app.Activity.dispatchActivityResult(Activity.java:8951) W/System.err: at android.app.ActivityThread.deliverResults(ActivityThread.java:5987) W/System.err: at android.app.ActivityThread.handleSendResult(ActivityThread.java:6033) W/System.err: at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:67) W/System.err: at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45) W/System.err: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) W/System.err: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2574) W/System.err: at android.os.Handler.dispatchMessage(Handler.java:106) W/System.err:
at android.os.Looper.loopOnce(Looper.java:226) W/System.err: at android.os.Looper.loop(Looper.java:313) W/System.err: at android.app.ActivityThread.main(ActivityThread.java:8757) W/System.err: at java.lang.reflect.Method.invoke(Native Method) W/System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067) W/System.err: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory) W/System.err: at libcore.io.Linux.open(Native Method) W/System.err: at libcore.io.ForwardingOs.open(ForwardingOs.java:563) W/System.err:
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:274) W/System.err:
at libcore.io.ForwardingOs.open(ForwardingOs.java:563) W/System.err:
at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:8619) W/System.err: at libcore.io.IoBridge.open(IoBridge.java:560) W/System.err: ... 19 more V/Toast: show: caller = com.example.pdfeditor.MainActivity.openPdfFile:107 I/ViewRootImpl@dcac326[MainActivity]: stopped(false) old = false I/MSHandlerLifeCycle: removeMultiSplitHandler: no exist. decor=DecorView@ce3e02e[MainActivity] I/ViewRootImpl@dcac326[MainActivity]: performTraversals mFirst=false windowShouldResize=false viewVisibilityChanged=true mForceNextWindowRelayout=false params=null I/ViewRootImpl@dcac326[MainActivity]: updateBlastSurfaceIfNeeded mBlastBufferQueue=null isSameSurfaceControl=false I/BLASTBufferQueue: new BLASTBufferQueue, mName= ViewRootImpl@dcac326[MainActivity] mNativeObject= 0xb400007c12641330 sc.mNativeObject= 0xb400007ba265c640 caller= android.view.ViewRootImpl.updateBlastSurfaceIfNeeded:2909 android.view.ViewRootImpl.relayoutWindow:9847 android.view.ViewRootImpl.performTraversals:3884 android.view.ViewRootImpl.doTraversal:3116 android.view.ViewRootImpl$TraversalRunnable.run:10885 android.view.Choreographer$CallbackRecord.run:1301 android.view.Choreographer$CallbackRecord.run:1309 android.view.Choreographer.doCallbacks:923 android.view.Choreographer.doFrame:852 android.view.Choreographer$FrameDisplayEventReceiver.run:1283 I/BLASTBufferQueue: update, w= 1080 h= 2408 mName = ViewRootImpl@dcac326[MainActivity] mNativeObject= 0xb400007c12641330 sc.mNativeObject= 0xb400007ba265c640 format= -1 caller= android.graphics.BLASTBufferQueue.:84 android.view.ViewRootImpl.updateBlastSurfaceIfNeeded:2909 android.view.ViewRootImpl.relayoutWindow:9847 android.view.ViewRootImpl.performTraversals:3884 android.view.ViewRootImpl.doTraversal:3116 android.view.ViewRootImpl$TraversalRunnable.run:10885 I/ViewRootImpl@dcac326[MainActivity]: Relayout returned: old=(0,0,1080,2408) new=(0,0,1080,2408) req=(1080,2408)0 dur=12 res=0x3 s={true 0xb400007ca263d4b0} ch=true seqId=0 I/ViewRootImpl@dcac326[MainActivity]: mThreadedRenderer.initialize() mSurface={isValid=true 0xb400007ca263d4b0} hwInitialized=true D/OpenGLRenderer: eglCreateWindowSurface I/ViewRootImpl@dcac326[MainActivity]: reportNextDraw android.view.ViewRootImpl.performTraversals:4438 android.view.ViewRootImpl.doTraversal:3116 android.view.ViewRootImpl$TraversalRunnable.run:10885 android.view.Choreographer$CallbackRecord.run:1301 android.view.Choreographer$CallbackRecord.run:1309 I/ViewRootImpl@dcac326[MainActivity]: Setup new sync id=6 I/ViewRootImpl@dcac326[MainActivity]: Setting syncFrameCallback I/ViewRootImpl@dcac326[MainActivity]: registerCallbacksForSync syncBuffer=false I/ViewRootImpl@dcac326[MainActivity]: Received frameDrawingCallback syncResult=0 frameNum=1. I/ViewRootImpl@dcac326[MainActivity]: Setting up sync and frameCommitCallback I/BLASTBufferQueue: ViewRootImpl@dcac326[MainActivity]#5 onFrameAvailable the first frame is available I/ViewRootImpl@dcac326[MainActivity]: Received frameCommittedCallback lastAttemptedDrawFrameNum=1 didProduceBuffer=true I/ViewRootImpl@dcac326[MainActivity]: onSyncComplete I/ViewRootImpl@dcac326[MainActivity]: setupSync seqId=0 mSyncId=6 fn=1 caller=android.view.ViewRootImpl$$ExternalSyntheticLambda11.accept:6 android.window.SurfaceSyncer.lambda$setupSync$1$android-window-SurfaceSyncer:128 android.window.SurfaceSyncer$$ExternalSyntheticLambda1.accept:8 android.window.SurfaceSyncer$SyncSet.checkIfSyncIsComplete:382 android.window.SurfaceSyncer$SyncSet.markSyncReady:359 android.window.SurfaceSyncer.markSyncReady:151 android.view.ViewRootImpl.performTraversals:4503 I/ViewRootImpl@dcac326[MainActivity]: reportDrawFinished seqId=0 mSyncId=-1 fn=1 mSurfaceChangedTransaction=0xb400007bd2631590 I/ViewRootImpl@dcac326[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 1 0 I/ViewRootImpl@dcac326[MainActivity]: mThreadedRenderer.initializeIfNeeded()#2 mSurface={isValid=true 0xb400007ca263d4b0} D/InputMethodManager: startInputInner - Id : 0 I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus I/ViewRootImpl@dcac326[MainActivity]: handleAppVisibility mAppVisible = true visible = false D/OpenGLRenderer: setSurface called with nullptr D/OpenGLRenderer: setSurface() destroyed EGLSurface D/OpenGLRenderer: destroyEglSurface I/ViewRootImpl@dcac326[MainActivity]: performTraversals mFirst=false windowShouldResize=false viewVisibilityChanged=true mForceNextWindowRelayout=false params=null I/ViewRootImpl@dcac326[MainActivity]: Relayout returned: old=(0,0,1080,2408) new=(0,0,1080,2408) req=(1080,2408)8 dur=16 res=0x2 s={false 0x0} ch=true seqId=0 I/ViewRootImpl@dcac326[MainActivity]: stopped(true) old = false I/ViewRootImpl@dcac326[MainActivity]: WindowStopped on com.example.pdfeditor/com.example.pdfeditor.MainActivity set to true I/MSHandlerLifeCycle: removeMultiSplitHandler: no exist. decor=DecorView@ce3e02e[MainActivity] I/ViewRootImpl@dcac326[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 0 0

Upvotes: 0

Views: 387

Answers (1)

Shila Mosammami
Shila Mosammami

Reputation: 1067

Are you sure the file you are trying to open exists in the path? probably on line

InputStream inputStream = new FileInputStream(pdfFilePath);

the file named pdfFilePath does not exists.

Upvotes: 0

Related Questions