以编程方式在android中创建pdf文件并在其中编写

我正在尝试在我的应用程序中创建一个pdf文件,将其保存在打开它的外部存储器上.保存文件对我来说不是问题,也不是打开文件,我的问题是创建文件并写入文件.所以在网上进行一些研究后,我发现了以下方法
File file = new File(directoryName,fileName);

        // Creating output stream to write in the newly created file
        FileOutputStream fOut = null;

        try {
            fOut = new FileOutputStream(file);
        } catch (FileNotFoundException e) {
            e.printstacktrace();
        }

        // Creating a new document
        Document document = new Document(PageSize.A4,50,50);

        try {
            PdfWriter.getInstance(document,fOut);

            // Open the document for writing
            document.open();

            // Write in the document
            document.add(new Paragraph("Hello world"));
            document.close();

        } catch(DocumentException de) {
            System.err.println(de.getMessage());
        }

运行我的应用程序并执行上面的代码后,我收到以下错误

java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/Color;

有人会知道我的代码有什么问题,或者其他确保用于创建和编写pdf文件方法有什么问题?

谢谢 !

解决方法

显然我使用的代码与android不兼容,因此我得到了错误.您可以在下面找到实际正常工作的正确代码(用于创建pdf文件,在其中放入一些内容,保存并打开新创建的文件):

PS:为此,您需要将iTextG的jar添加到您的项目中:

// Method for creating a pdf file from text,saving it then opening it for display
    public void createanddisplayPdf(String text) {

        Document doc = new Document();

        try {
            String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Dir";

            File dir = new File(path);
            if(!dir.exists())
                dir.mkdirs();

            File file = new File(dir,"newFile.pdf");
            FileOutputStream fOut = new FileOutputStream(file);

            PdfWriter.getInstance(doc,fOut);

            //open the document
            doc.open();

            Paragraph p1 = new Paragraph(text);
            Font paraFont= new Font(Font.COURIER);
            p1.setAlignment(Paragraph.ALIGN_CENTER);
            p1.setFont(paraFont);

            //add paragraph to document
            doc.add(p1);    

        } catch (DocumentException de) {
            Log.e("PDFCreator","DocumentException:" + de);
        } catch (IOException e) {
            Log.e("PDFCreator","ioException:" + e);
        }
        finally {
            doc.close();
        }

        viewPdf("newFile.pdf","Dir");
    }

    // Method for opening a pdf file
    private void viewPdf(String file,String directory) {

        File pdfFile = new File(Environment.getExternalStorageDirectory() + "/" + directory + "/" + file);
        Uri path = Uri.fromFile(pdfFile);

        // Setting the intent for pdf reader
        Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
        pdfIntent.setDataAndType(path,"application/pdf");
        pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        try {
            startActivity(pdfIntent);
        } catch (ActivityNotFoundException e) {
            Toast.makeText(TableActivity.this,"Can't read pdf file",Toast.LENGTH_SHORT).show();
        }
    }

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...