0

我使用下面的代码动态创建了 pdf,还使用了 iText 库:

try {

                String str_path = Environment.getExternalStorageDirectory()
                        .toString();

                File file;
                file = new File(str_path, getString(R.string.app_name)
                        + ".pdf");
                FileOutputStream fos = new FileOutputStream(file);

                Document document = new Document();
                PdfWriter.getInstance(document, fos);

                document.open();
                document.add(new Paragraph("Hello World"));
                document.add(new Paragraph(new Date().toString()));

                document.close();
                fos.close();

            } catch (Exception e) {

                e.printStackTrace();
            }

比我检索 976 字节的 pdf 文件。当我使用以下代码添加用于将图像添加到此 pdf 文件的代码时:

    try {

                String str_path = Environment.getExternalStorageDirectory()
                        .toString();

                File file;
                file = new File(str_path, getString(R.string.app_name)
                        + ".pdf");
                FileOutputStream fos = new FileOutputStream(file);

                Document document = new Document();
                PdfWriter.getInstance(document, fos);

                document.open();
                document.add(new Paragraph("Hello World, iText"));
                document.add(new Paragraph(new Date().toString()));


                Image image = Image.getInstance("ic_launcher.png");
                document.add(image);

                document.close();
                fos.close();

            } catch (Exception e) {

                e.printStackTrace();
            }

比我检索 0 字节的 pdf 文件。

我不知道是什么问题,如果您对此有任何想法,请与我分享。谢谢。

4

3 回答 3

2

它会解决你的问题

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        byte[] bitMapData = stream.toByteArray();
        Image image = Image.getInstance(bitMapData);
于 2013-06-20T12:13:19.297 回答
2

最后,我使用以下代码将图像添加到 pdf:

尝试 {

                String str_path = Environment.getExternalStorageDirectory()
                        .toString();

                File file;
                file = new File(str_path, getString(R.string.app_name)
                        + ".pdf");
                FileOutputStream fos = new FileOutputStream(file);

                Document document = new Document();

                PdfWriter.getInstance(document, fos);

                InputStream ims = getAssets().open("ic_launcher.png");
                Bitmap bmp = BitmapFactory.decodeStream(ims);
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
                Image image = Image.getInstance(stream.toByteArray());

                document.open();
                document.add(new Paragraph("Hello World"));
                document.add(new Paragraph(new Date().toString()));
                document.add(image);

                document.close();
                fos.close();

            } catch (Exception e) {

                e.printStackTrace();
            }

使用此代码,希望对您有所帮助。

于 2013-06-20T12:13:44.977 回答
0

在这里你遇到了一个异常,因此你检索到了 0 字节的 pdf 文件

于 2013-06-20T12:07:04.607 回答