Read a pdf file from assets folder
Try this
public class SampleActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
CopyReadAssets();
}
private void CopyReadAssets()
{
AssetManager assetManager = getAssets();
InputStream in = null;
OutputStream out = null;
File file = new File(getFilesDir(), "abc.pdf");
try
{
in = assetManager.open("abc.pdf");
out = openFileOutput(file.getName(), Context.MODE_WORLD_READABLE);
copyFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch (Exception e)
{
Log.e("tag", e.getMessage());
}
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(
Uri.parse("file://" + getFilesDir() + "/abc.pdf"),
"application/pdf");
startActivity(intent);
}
private void copyFile(InputStream in, OutputStream out) throws IOException
{
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1)
{
out.write(buffer, 0, read);
}
}
}
Make sure to include
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
in manifest
open pdf file from assets flutter
It appears that the pdf library you are using is set up to use a system filepath to load the pdf. Unfortunately, this differs from the asset path that you have access to, and Flutter currently does not support the ability to get an assets system filepath at runtime. The only way I can find to use that library is to transfer the files to a known directory, and load from there. Rather than do this, I would recommend the native_pdf_view library, as it supports asset loading as well as full screen. You should be able to implement it as follows:
final pdfController = PdfController(
document: PdfDocument.openAsset('assets/copy.pdf'),
);
return Scaffold(
body: Center(
child: PdfView(
controller: pdfController,
)
),
);
-- EDIT --
To switch pages, if you want to start the viewer on a different page, just edit the initialPage in the pdfController
final pdfController = PdfController(
document: PdfDocument.openAsset('assets/copy.pdf'),
initialPage: 2
);
If you want to switch pages after the pdfView has been created, you can call jumpToPage() or animateToPage() from anywhere, provided you can get a reference to the pdfController, and that it and the pdfView have been instantiated.
return Scaffold(
body: Stack(
children: [
Center(
child: PdfView(
controller: pdfController,
)
),
RaisedButton(
child: Text("Page 2"),
onPressed: (){
pdfController.jumpToPage(2);
// -- or --
pdfController.animateToPage(2, duration: Duration(seconds: 1), curve: Curves.linear);
},
),
],
),
);
How to read PDF files from assets subfolder
Copy the files from assets folder to app private memory(so that the file is protected) and use file provider to give access to the pdfs files so that , pdf reader the external app can show pdf content.
https://developer.android.com/training/secure-file-sharing/setup-sharing.html
Load .pdf file / custom file from flutter assets
Copy the asset to a temporary file.
Future<File> copyAsset() async {
Directory tempDir = await getTemporaryDirectory();
String tempPath = tempDir.path;
File tempFile = File('$tempPath/copy.pdf');
ByteData bd = await rootBundle.load('assets/asset.pdf');
await tempFile.writeAsBytes(bd.buffer.asUint8List(), flush: true);
return tempFile;
}
Access pdf file from local directory and display pdf on new tab
put your file in asset folder, this is a example:
this.openFile("help.pdf");
openFile(fileName) {
window.open("assets/documents/" + fileName);
}
Related Topics
Why Must Wait() Always Be in Synchronized Block
Java Says Filenotfoundexception But File Exists
Add Buttons to Tabs and Tab Area Javafx
Any Good Orm Tools for Android Development
How to Change Menu Item Text Dynamically in Android
Android: Difference Between Onintercepttouchevent and Dispatchtouchevent
Inspecting Java Threads in Linux Using Top
Exception in Thread "Main" Java.Lang.Noclassdeffounderror: Org/Apache/Hadoop/Util/Platformname
Runtime Exception Not Terminating the Programm
Connection Pooling Options With Jdbc: Dbcp VS C3P0
Replace String With Another in Java
How to Check If an App Running on Android
Sqlite in Android How to Update a Specific Row
Change File Owner Group Under Linux with Java.Nio.Files
Connect to SQL Server from Linux via Jdbc Using Integratedsecurity (Windows Authentication)