Создание файла PDF с использованием строкового значения - PullRequest
0 голосов
/ 07 ноября 2018

Я генерирую приведенную ниже строку в своем приложении для 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 ...";

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Здесь вы можете легко создать 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);
0 голосов
/ 07 ноября 2018

Здесь очень простой кодовый блок здесь , который делает что-то подобное. Проверьте страницу библиотеки , чтобы увидеть все возможности и пример использования.

Вам просто нужно заменить 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();
        }
    }
}
...