3

logcat でエラーが発生しました:

03-23 07:53:22.422: E/AndroidRuntime(2603): FATAL EXCEPTION: main
03-23 07:53:22.422: E/AndroidRuntime(2603): java.lang.NoClassDefFoundError: java.awt.Color
03-23 07:53:22.422: E/AndroidRuntime(2603):     at com.lowagie.text.pdf.PdfChunk.color(PdfChunk.java:501)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at com.lowagie.text.pdf.PdfDocument.writeLineToContent(PdfDocument.java:2651)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at com.lowagie.text.pdf.PdfDocument.flushLines(PdfDocument.java:2388)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at com.lowagie.text.pdf.PdfDocument.newPage(PdfDocument.java:772)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at com.lowagie.text.pdf.PdfDocument.close(PdfDocument.java:940)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at com.lowagie.text.Document.close(Unknown Source)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at com.example.pdfexample.MainActivity.onCreate(MainActivity.java:26)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at android.app.Activity.performCreate(Activity.java:5104)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at android.os.Looper.loop(Looper.java:137)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at android.app.ActivityThread.main(ActivityThread.java:5039)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at java.lang.reflect.Method.invokeNative(Native Method)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at java.lang.reflect.Method.invoke(Method.java:511)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-23 07:53:22.422: E/AndroidRuntime(2603):     at dalvik.system.NativeStart.main(Native Method)
help me , thanks in advance
4

2 に答える 2

4

純粋な Java 用に設計されたライブラリを使用しています。Java API と Android API の間には、主に gfx に関連するいくつかの小さな違いがありますが、依然として顕著な違いがあります。ご覧のとおり、Java Color クラスは Android に厳密に相当するものはありません。それがあなたのバグの原因です。

Android 対応の PDF ライブラリを見つけるか、リモート サービスを使用してドキュメントを変換し、PDF として直接ダウンロードします。

このスレッドはあなたに興味があるかもしれません: Android 用 PDF ライブラリ - PDFBox?

于 2013-03-23T08:02:11.340 に答える
0

使用している jar ファイルをビルド パスに追加する必要があります。

java.lang.NoClassDefFoundError は通常、ビルド パスに jar ファイルを追加していない場合に発生します。

jar ファイルをビルド パスに追加する方法

PDF変換以外にビルドパスにjarを追加する際に問題がある場合は、このリンクをたどってください。iTextPdfのようなものを使用するのが最善の方法です。

このクラスを使用し、必要な関数を呼び出して pdf を作成します

public class CreatePDF {

    private static Font normalFont = new Font(Font.FontFamily.TIMES_ROMAN, 25,
            Font.NORMAL, BaseColor.BLACK);

    private static Font Head = new Font(Font.FontFamily.TIMES_ROMAN, 35,
            Font.BOLD, BaseColor.BLACK);

    //Path is the path where you want your pdf to get stored
    public void createPDFDoc(ArrayList<notesWrapper> notesList,String path) {
        // TODO Auto-generated method stub
        Document document = new Document();
        try {
            PdfWriter.getInstance(document, new FileOutputStream(path));
            document.open();

            for(int i=0;i<notesList.size();i++)
            {               


                addContentHead(document,"Image "+(i+1));                
                addContent(document,notesList.get(i).message);
                if(i<notesList.size())
                {
                    document.newPage();
                }
            }

            document.close();

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
    }

    private void addContent(Document document,String content) throws DocumentException {


        Paragraph preface = new Paragraph();              
        addEmptyLine(preface, 1);

        if(!content.equalsIgnoreCase("insert note"))
        preface.add(new Paragraph(content, normalFont));

        else
            addEmptyLine(new Paragraph(), 1);

        addEmptyLine(preface, 3);
        document.add(preface);



    }


    private void addContentHead(Document document,String content) throws DocumentException {


        Paragraph preface = new Paragraph();              
        addEmptyLine(preface, 1);

        preface.add(new Paragraph(content, Head));
        addEmptyLine(preface, 3);
        document.add(preface);



    }



    private static void addEmptyLine(Paragraph paragraph, int number) {
        for (int i = 0; i < number; i++) {
            paragraph.add(new Paragraph(" "));
        }
    }


}
于 2013-03-23T08:01:34.523 に答える