2012-05-31 2 views
1

버튼을 눌렀을 때 PDF 파일을 만들려고합니다. iText 라이브러리를 사용하고 있습니다.iText에서 PDF 파일을 만들려고 할 때의 문제

내 활동

package com.pdf; 

import java.io.FileOutputStream; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 

import com.itextpdf.text.Document; 
import com.itextpdf.text.Paragraph; 
import com.itextpdf.text.pdf.PdfWriter; 

public class PDFActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    public void GenerarPDF(View view)throws Exception{ 
      Document document=new Document(); 
      PdfWriter.getInstance(document,new FileOutputStream("generando.pdf")); 
      document.open(); 
      document.add(new Paragraph("Testing testing and testing")); 
      document.close(); 
    } 

} 

내 XML :

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" android:background="#555"> 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="34dp" 
     android:ems="10" > 

     <requestFocus /> 
    </EditText> 

    <Button 
     android:id="@+id/Submit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/editText1" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="23dp" 
     android:onClick="GenerarPDF" 
     android:text="Button" /> 

</RelativeLayout> 

내 매니페스트 :

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.pdf" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="15" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/> 
    <uses-permission android:name="android.permission.READ_FRAME_BUFFER"/> 
    <uses-permission android:name="android.permission.BIND_INPUT_METHOD"/> 
    <uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".PDFActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

그리고 로그 고양이 :

05-31 12:08:58.778: E/AndroidRuntime(662): FATAL EXCEPTION: main 
05-31 12:08:58.778: E/AndroidRuntime(662): java.lang.IllegalStateException: Could not execute method of the activity 
05-31 12:08:58.778: E/AndroidRuntime(662): at android.view.View$1.onClick(View.java:3044) 
05-31 12:08:58.778: E/AndroidRuntime(662): at android.view.View.performClick(View.java:3511) 
05-31 12:08:58.778: E/AndroidRuntime(662): at android.view.View$PerformClick.run(View.java:14105) 
05-31 12:08:58.778: E/AndroidRuntime(662): at android.os.Handler.handleCallback(Handler.java:605) 
05-31 12:08:58.778: E/AndroidRuntime(662): at android.os.Handler.dispatchMessage(Handler.java:92) 
05-31 12:08:58.778: E/AndroidRuntime(662): at android.os.Looper.loop(Looper.java:137) 
05-31 12:08:58.778: E/AndroidRuntime(662): at android.app.ActivityThread.main(ActivityThread.java:4424) 
05-31 12:08:58.778: E/AndroidRuntime(662): at java.lang.reflect.Method.invokeNative(Native Method) 
05-31 12:08:58.778: E/AndroidRuntime(662): at java.lang.reflect.Method.invoke(Method.java:511) 
05-31 12:08:58.778: E/AndroidRuntime(662): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
05-31 12:08:58.778: E/AndroidRuntime(662): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
05-31 12:08:58.778: E/AndroidRuntime(662): at dalvik.system.NativeStart.main(Native Method) 
05-31 12:08:58.778: E/AndroidRuntime(662): Caused by: java.lang.reflect.InvocationTargetException 
05-31 12:08:58.778: E/AndroidRuntime(662): at java.lang.reflect.Method.invokeNative(Native Method) 
05-31 12:08:58.778: E/AndroidRuntime(662): at java.lang.reflect.Method.invoke(Method.java:511) 
05-31 12:08:58.778: E/AndroidRuntime(662): at android.view.View$1.onClick(View.java:3039) 
05-31 12:08:58.778: E/AndroidRuntime(662): ... 11 more 
05-31 12:08:58.778: E/AndroidRuntime(662): Caused by: java.lang.NoClassDefFoundError: com.itextpdf.text.Document 
05-31 12:08:58.778: E/AndroidRuntime(662): at com.pdf.PDFActivity.GenerarPDF(PDFActivity.java:22) 
05-31 12:08:58.778: E/AndroidRuntime(662): ... 14 more 

추가 된 로그 캣 오류 :

05-31 15:26:00.411: E/dalvikvm(792): Could not find class 'com.itextpdf.text.Document', referenced from method com.pdf.PDFActivity.GenerarPDF 

나는 진짜 문제 먹으 렴 생각하지만, 해결책을 모른다.

+1

글쎄, stacktrace의 마지막 줄에 따르면 iText jar가 클래스 경로에 올바르게 추가되지 않았습니다. 나는 안드로이드 개발자지만, 그냥 일반 자바 녀석, 그래서 정말 그걸 고치기에 당신을 도울 수 없다,하지만 당신은 그 방향으로 봐야한다고 생각해. –

답변

3

정확히 어디에서 pdf 파일을 만들려고합니까? itextpdf-5.2.1.jar를 사용하여 SD 카드에 pdf를 성공적으로 만들 수있었습니다. 귀하의 프로그램에 다음 코드 줄을 추가했습니다 :

public void GenerarPDF(View view)throws Exception{ 
     Document document=new Document(); 
     File root = new File(Environment.getExternalStorageDirectory(), "Notes"); 
     if (!root.exists()) { 
      root.mkdirs(); 
     } 
     File gpxfile = new File(root, "generando.pdf"); 
     PdfWriter.getInstance(document,new FileOutputStream(gpxfile)); 
     document.open(); 
     document.add(new Paragraph("Testing testing and testing")); 
     document.close(); 
} 

희망 답변이 도움이됩니다.

편집 : 당신이 06-01 23 귀하의 코멘트 (언급 오류 : 32 : 37.178 : E/AndroidRuntime (535) : java.io.FileNotFoundException :에 의한 /generando.pdf : 열기 실패 : EROFS (읽기 전용 파일 시스템) )는 내가 제공 한 코드를 실행할 때 얻을 수있는 것입니다. 그 이유는 새 파일을 만들거나 저장할 수있는 위치를 지정하지 않기 때문입니다. 여기에 붙여 넣은 GenerarPDF (보기보기)를 사용하면 프로그램에서 새 PDF 파일을 만듭니다.

이 오류의 또 다른 원인은 장치에 sd 카드가 없다는 것입니다. 당신이에서 onCreate()에서 generatePDF()를 호출하는 것을 잊었다처럼이 선

File root = new File(android.os.Environment.getExternalStorageDirectory(), "Notes"); 
+0

그것은 여전히 ​​그것으로 작동하지 않습니다. 또한 로그 고양이에서이 문제가 발생했습니다 '05-31 15 : 26 : 00.411 : E/dalvikvm (792) : com.pdf.PDFActivity 메소드에서 참조한'com.itextpdf.text.Document '클래스를 찾을 수 없습니다. .GenerarPDF ' – DRaNe

+0

어쩌면 당신이 사용하고있는 itextpdf jar 파일에 문제가 있거나 어쩌면 @Alexis Pigeon이 제안했듯이 클래스 경로에 jar 파일을 올바르게 통합하지 않았을 수 있습니다. 최신 itextpdf jar (itextpdf-5.2.1.jar ... 내가 사용했던 버전)를 사용해보십시오. –

+0

5.2.1.jar도 사용하고 있습니다. Exception : Excepcion : java.io.FileNotFoundException : /Test.pdf : open failed : EROFS (읽기 전용 파일 시스템) – DRaNe

1

변경 파일 루트가 보이는 ... 희망이 도움이!

0

관련 문제