在Android中是否可以将文本转换为PDF?

在Android中是否可以将文本转换为PDF?,android,Android,我想通过我的应用程序创建一个PDF文件,并想通过电子邮件将PDF文件作为附件发送。在安卓系统中可能吗?如果是,请说明如何操作。这是代码 Document doc = new Document(); PdfWriter.getInstance(doc, new FileOutputStream("urgentz.pdf")); doc.open(); Image image = Image.getInstance ("urgentzImageahslkdhaosd.

我想通过我的应用程序创建一个PDF文件,并想通过电子邮件将PDF文件作为附件发送。在安卓系统中可能吗?如果是,请说明如何操作。

这是代码

    Document doc = new Document();
    PdfWriter.getInstance(doc, new FileOutputStream("urgentz.pdf"));
    doc.open();
    Image image = Image.getInstance ("urgentzImageahslkdhaosd.jpg");
    doc.add(new Paragraph("Your text blah bleh"));
    doc.add(image);               
    doc.close();
将该库与android项目一起使用

iText库使用。 请参考答案

iText示例很多。下面是网站。
创建pdf非常简单

如果您使用的是android studio,请首先下载droidText.0.2.jar并添加gradle文件和libs文件夹。然后为PDF编写此代码

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


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

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

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

            //This is for random name
            number = new ArrayList<Integer>();
            for (int i = 1; i <= 10; ++i) number.add(i);
            Collections.shuffle(number);

            File file = new File(dir, "Document" + number + ".pdf");
            FileOutputStream fOut = new FileOutputStream(file);
            PdfWriter.getInstance(doc, fOut);

            //open the document
            doc.open();

            Paragraph p1 = new Paragraph("TENANTS : " + tenants.getText().toString());
            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("OFFFER NUMBER : " + offer_number.getText().toString());
            Font paraFont2 = new Font(Font.COURIER, 14.0f, Color.GREEN);
            p2.setAlignment(Paragraph.ALIGN_CENTER);
            p2.setFont(paraFont2);

            doc.add(p2);

            Paragraph p3 = new Paragraph("OFFFER NUMBER : " + offer_number.getText().toString());
            Font paraFont3 = new Font(Font.COURIER, 14.0f, Color.GREEN);
            p3.setAlignment(Paragraph.ALIGN_CENTER);
            p3.setFont(paraFont2);

            doc.add(p3);

            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            Bitmap bitmap = BitmapFactory.decodeResource(getBaseContext().getResources(), R.drawable.logo);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
            Image myImg = Image.getInstance(stream.toByteArray());
            myImg.setAlignment(Image.MIDDLE);

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

            //set footer
            Phrase footerText = new Phrase("ADUREC DOCUMENT");
            HeaderFooter pdfFooter = new HeaderFooter(footerText, true);
            doc.setFooter(pdfFooter);

//            Toast.makeText(getApplicationContext(), "success pdf", Toast
//                    .LENGTH_LONG).show();

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

    }
public void createPDF(){
单据单据=新单据();
试一试{
path=Environment.getExternalStorageDirectory().getAbsolutePath()+“/ADUREC”;
文件目录=新文件(路径);
如果(!dir.exists())
dir.mkdirs();
Log.d(“PDFCreator”,“PDF路径:“+Path”);
//这是随机名称
number=新的ArrayList();
对于(int i=1;i
  • 在gradle.build文件
    实现'com.itextpdf:itextg:5.5.10'中编写以下依赖项
    
  • 在AndroidManifest中
    
    
  • 在MainActivity中编写以下代码

  • Kotlin示例代码: 您可以使用下面的代码创建pdf页面并在画布中绘制任何内容

    fun createPdf(textToPdf: String) {
    
        // create a new document
        val document = PdfDocument()
    
        // crate a page description
        var pageInfo: PdfDocument.PageInfo = PdfDocument.PageInfo.Builder(300, 600, 1).create()
    
        // start a page
        var page: PdfDocument.Page = document.startPage(pageInfo)
        var canvas = page.canvas
        var paint = Paint()
        paint.color = Color.RED
        canvas.drawCircle(50F, 50F, 30F, paint)
        paint.color = Color.BLACK
        canvas.drawText(textToPdf, 80F, 50F, paint)
        //canvas.drawt
        // finish the page
        document.finishPage(page)
        // draw text on the graphics object of the page
    
        // Create Page 2
        pageInfo = PdfDocument.PageInfo.Builder(300, 600, 2).create()
        page = document.startPage(pageInfo)
        canvas = page.canvas
        paint = Paint()
        paint.color = Color.BLUE
        canvas.drawCircle(100F, 100F, 100F, paint)
        document.finishPage(page)
    
        // write the document content
        val directory_path = Environment.getExternalStorageDirectory().path + "/mypdf/"
        val file = File(directory_path)
        if (!file.exists()) {
            file.mkdirs()
        }
        val targetPdf = directory_path + "test-2.pdf"
        val filePath = File(targetPdf)
        try {
            document.writeTo(FileOutputStream(filePath))
            Toast.makeText(mContext, "Done", Toast.LENGTH_LONG).show()
        } catch (e: IOException) {
            Log.e("main", "error " + e.toString())
            Toast.makeText(mContext, "Something wrong: " + e.toString(), Toast.LENGTH_LONG).show()
        }
    
        // close the document
        document.close()
        //isPrinting = false
    }
    
    注:
    别忘了添加

    ya我试过代码,但在我的应用程序中找不到pdf文件。嘿,在“Image Image=Image.getInstance(“urgentzImageahslkdhaosd.jpg”);“shows configure”行上显示错误path@simplepi如果/当你编辑一篇文章时,请花时间解决所有问题,而不仅仅是琐碎的问题。
    fun createPdf(textToPdf: String) {
    
        // create a new document
        val document = PdfDocument()
    
        // crate a page description
        var pageInfo: PdfDocument.PageInfo = PdfDocument.PageInfo.Builder(300, 600, 1).create()
    
        // start a page
        var page: PdfDocument.Page = document.startPage(pageInfo)
        var canvas = page.canvas
        var paint = Paint()
        paint.color = Color.RED
        canvas.drawCircle(50F, 50F, 30F, paint)
        paint.color = Color.BLACK
        canvas.drawText(textToPdf, 80F, 50F, paint)
        //canvas.drawt
        // finish the page
        document.finishPage(page)
        // draw text on the graphics object of the page
    
        // Create Page 2
        pageInfo = PdfDocument.PageInfo.Builder(300, 600, 2).create()
        page = document.startPage(pageInfo)
        canvas = page.canvas
        paint = Paint()
        paint.color = Color.BLUE
        canvas.drawCircle(100F, 100F, 100F, paint)
        document.finishPage(page)
    
        // write the document content
        val directory_path = Environment.getExternalStorageDirectory().path + "/mypdf/"
        val file = File(directory_path)
        if (!file.exists()) {
            file.mkdirs()
        }
        val targetPdf = directory_path + "test-2.pdf"
        val filePath = File(targetPdf)
        try {
            document.writeTo(FileOutputStream(filePath))
            Toast.makeText(mContext, "Done", Toast.LENGTH_LONG).show()
        } catch (e: IOException) {
            Log.e("main", "error " + e.toString())
            Toast.makeText(mContext, "Something wrong: " + e.toString(), Toast.LENGTH_LONG).show()
        }
    
        // close the document
        document.close()
        //isPrinting = false
    }