使用字符串值创建pdf文件

问题描述 投票:0回答:2

我在我的Android应用程序中生成以下字符串,我想知道是否有一种简单的方法从它创建一个pdf或doc(x)文件?我已经尝试过PDFDocument类,但它对我来说没有用。对不起,如果有一个已知的解决方案,我是android和java的新手。

String s = "build:              some build name\r\n" + 
                "Version:            25\r\n" + 
                "Specification:      wtx 26.1\r\n" + 
                "\r\n" + 
                "Files to edit:\r\n" + 
                "doc1.doc\r\n" + 
                "doc2.doc\r\n" + 
                "\r\n" + 
                "Notes:\r\n" + 
                "some notes ...";
java android file pdf
2个回答
0
投票

有一个非常简单的代码块here做类似的事情。检查library page以查看完整功能和示例使用。

您只需要用您正在编写的内容替换Hello World部分。请注意,您需要在应用程序中授予STORAGE权限才能将文件实际保存到手机存储中,如下所示:

<manifest ...>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    ...
</manifest>

然后你可以使用下面的代码:

import com.cete.dynamicpdf.*;
import com.cete.dynamicpdf.pageelements.Label;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.widget.Toast;

public class DynamicPDFHelloWorld extends Activity {
    private static String FILE = Environment.getExternalStorageDirectory()
            + "/HelloWorld.pdf";

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

        // Create a document and set it's properties
        Document objDocument = new Document();
        objDocument.setCreator("DynamicPDFHelloWorld.java");
        objDocument.setAuthor("Your Name");
        objDocument.setTitle("Hello World");

        // Create a page to add to the document
        Page objPage = new Page(PageSize.LETTER, PageOrientation.PORTRAIT,
                54.0f);

        // Create a Label to add to the page
        String strText = "Hello World...\nFrom DynamicPDF Generator "
                + "for Java\nDynamicPDF.com";
        Label objLabel = new Label(strText, 0, 0, 504, 100,
                Font.getHelvetica(), 18, TextAlign.CENTER);

        // Add label to page
        objPage.getElements().add(objLabel);

        // Add page to document
        objDocument.getPages().add(objPage);

        try {
            // Outputs the document to file
            objDocument.draw(FILE);
            Toast.makeText(this, "File has been written to :" + FILE,
                    Toast.LENGTH_LONG).show();
        } catch (Exception e) {
            Toast.makeText(this,
                    "Error, unable to write to file\n" + e.getMessage(),
                    Toast.LENGTH_LONG).show();
        }
    }
}

0
投票

在这里,您可以轻松创建PDF文件

private void createALlPdf(String str){
    PdfDocument document = new PdfDocument();
    // crate a page description
    PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(600, 1000, 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);
    Date currentTime = Calendar.getInstance().getTime();

    paint.setColor(Color.BLACK);
    // canvas.drawText(wise, 60, 50, paint);
    int y=50;


    canvas.drawText(str, 80, 50, paint);

    canvas = page.getCanvas();
    paint = new Paint();
    // paint.setColor(Color.BLUE);
    // canvas.drawCircle(100, 100, 100, paint);
    document.finishPage(page);
    // write the document content
    String directory_path = Environment.getExternalStorageDirectory().getPath() + "/P-ALLPDF/";
    File file = new File(directory_path);
    if (!file.exists()) {
        file.mkdirs();
    }
    String targetPdf = directory_path+"All record"+currentTime+".pdf";
    File filePath = new File(targetPdf);
    try {
        document.writeTo(new FileOutputStream(filePath));
        Toast.makeText(this, "Pdf file generated in your internal storage under P-ALLPDF directory.Please check!!", Toast.LENGTH_LONG).show();
    } catch (IOException e) {
        Log.e("main", "error "+e.toString());
        Toast.makeText(this, "Something wrong: " + e.toString(),  Toast.LENGTH_LONG).show();
    }
    // close the document
    document.close();
}

通过传递你的字符串来调用函数

createALlPdf(s);
© www.soinside.com 2019 - 2024. All rights reserved.