Showing posts with label pdfdocument. Show all posts
Showing posts with label pdfdocument. Show all posts

Wednesday, 31 May 2017

Create PDF using PdfDocument

Create PDF using PdfDocument



android.graphics.pdf.PdfDocument enables generating a PDF document from native Android content. This example show how to create a two page PDF file using PdfDocument, store as "/sdcard/test.pdf". Then use last example Display PDF using PdfRenderer to view it.

(remark: if you use last example to view the PDF file, you have to change targetPdf = "/sdcard/test.pdf".)


MainActivity.java
package com.blogspot.android_er.androidcreatepdf;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.pdf.PdfDocument;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

Button btnCreate;

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

btnCreate = (Button)findViewById(R.id.create);
btnCreate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
createPdf();
}
});

}

private void createPdf(){
// create a new document
PdfDocument document = new PdfDocument();

// crate a page description
PdfDocument.PageInfo pageInfo =
new PdfDocument.PageInfo.Builder(100, 100, 1).create();

// start a page
PdfDocument.Page page = document.startPage(pageInfo);

Canvas canvas = page.getCanvas();

Paint paint = new Paint();
paint.setColor(Color.RED);

canvas.drawCircle(50, 50, 30, paint);

// finish the page
document.finishPage(page);

// Create Page 2
pageInfo = new PdfDocument.PageInfo.Builder(500, 500, 2).create();
page = document.startPage(pageInfo);
canvas = page.getCanvas();
paint = new Paint();
paint.setColor(Color.BLUE);
canvas.drawCircle(200, 200, 100, paint);
document.finishPage(page);

// write the document content
String targetPdf = "/sdcard/test.pdf";
File filePath = new File(targetPdf);
try {
document.writeTo(new FileOutputStream(filePath));
Toast.makeText(this, "Done", Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "Something wrong: " + e.toString(),
Toast.LENGTH_LONG).show();
}

// close the document
document.close();
}

}


activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout

android_id="@+id/activity_main"
android_layout_width="match_parent"
android_layout_height="match_parent"
android_paddingBottom="16dp"
android_paddingLeft="16dp"
android_paddingRight="16dp"
android_paddingTop="16dp"
android_orientation="vertical"
tools_context="com.blogspot.android_er.androidcreatepdf.MainActivity">

<TextView
android_layout_width="wrap_content"
android_layout_height="wrap_content"
android_layout_margin="20dp"
android_layout_gravity="center_horizontal"
android_autoLink="web"
android_text="http://android-er.blogspot.com/"
android_textStyle="bold"/>

<Button
android_id="@+id/create"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_text="Create PDF"/>
</LinearLayout>



uses-permission of "android.permission.WRITE_EXTERNAL_STORAGE" is needed in AndroidManifest.xml.
<?xml version="1.0" encoding="utf-8"?>
<manifest
package="com.blogspot.android_er.androidcreatepdf">

<application
android_allowBackup="true"
android_icon="@mipmap/ic_launcher"
android_label="@string/app_name"
android_supportsRtl="true"
android_theme="@style/AppTheme">
<activity android_name=".MainActivity">
<intent-filter>
<action android_name="android.intent.action.MAIN" />

<category android_name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android_name="android.permission.WRITE_EXTERNAL_STORAGE"/>

</manifest>

{ Read More }