1

Android テキストを使用して PDF を作成しようとしていますが、生成しようとするとログに次のメッセージが表示されます。

07-29 19:45:23.682: D/PDFCreator(12569): PDF Path: /mnt/sdcard/droidText
07-29 19:45:23.682: E/PDFCreator(12569): ioException:java.io.FileNotFoundException: /mnt/sdcard/droidText/sample.pdf (Permission denied)
07-29 19:45:27.456: D/PDFCreator(12569): PDF Path: /mnt/sdcard/droidText
07-29 19:45:27.456: E/PDFCreator(12569): ioException:java.io.FileNotFoundException: /mnt/sdcard/droidText/sample.pdf (Permission denied)

Heres 私のマニフェスト ファイル:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ex.pruebapdf"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="10" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.ex.pruebapdf.MainActivity"
        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>

助けてくれてありがとう。

これは、インターネットで見つけたフォーマット済みのコードです。:

package com.ex.pruebapdf;

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

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.HeaderFooter;
import com.lowagie.text.Image;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.PdfWriter;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

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

    b= (Button)findViewById(R.id.botoncin);
    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            createPDF();

        }
    });
}

public void createPDF()
{
    Document doc = new Document();


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

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

            Log.d("PDFCreator", "PDF Path: " + path);


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

            PdfWriter.getInstance(doc, fOut);

            //open the document
            doc.open();


            Paragraph p1 = new Paragraph("Hi! I am generating my first PDF using DroidText");
            Font paraFont= new Font(Font.COURIER);
            p1.setAlignment(Paragraph.ALIGN_CENTER);
            p1.setFont(paraFont);

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

             Paragraph p2 = new Paragraph("This is an example of a simple paragraph");
             Font paraFont2= new Font(Font.COURIER,14.0f,Color.GREEN);
             p2.setAlignment(Paragraph.ALIGN_CENTER);
             p2.setFont(paraFont2);

             doc.add(p2);

             ByteArrayOutputStream stream = new ByteArrayOutputStream();
             Image myImg = Image.getInstance(stream.toByteArray());
             myImg.setAlignment(Image.MIDDLE);

             //add image to document
             doc.add(myImg);

             //set footer
             Phrase footerText = new Phrase("This is an example of a footer");
             HeaderFooter pdfFooter = new HeaderFooter(footerText, false);
             doc.setFooter(pdfFooter);



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

}      

}

4

2 に答える 2

0

問題は、テキストに入れる前にファイルを作成する必要があることだと思います。ただし、いくつかのコードを投稿する必要があります。

編集1:

ここでエラー?

String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/droidText";

そうでない場合は、エラーのある行を投稿してください。

上記の場合、外部ストレージ(SDカードなど)を持っていないと思います。あなたは?その場合、これを試してください:

を使用して内部ストレージパスを取得できます

context.getCacheDir();

次のようにしてファイルを作成できます。

File temp = new File(context.getCacheDir(),"you_file_name");
于 2013-07-30T01:24:10.003 に答える
0

奇妙に聞こえるかもしれませんが、携帯電話に SD カードがあることを確認しましたか。以前間違えたのでお知らせです。さらに、ファイルを作成するときに、PDF が他のアクティビティによって作成された場合に備えて、正しいモードを使用しているかどうかを確認してください。

于 2013-07-30T03:26:04.773 に答える