【问题标题】:i want to add images to pdf from camera folder image show can i add a images in pdf我想从相机文件夹中将图像添加到 pdf 图像显示我可以在 pdf 中添加图像吗
【发布时间】:2014-03-20 09:20:15
【问题描述】:

我正在使用 Document 类创建 pdf,在我从 sdcard 相机文件夹下载图像后,我想将所有图像保存在 pdf 文件中,我正在使用 A4 尺寸的文档页面,我想用A4 尺寸意味着我想用 a4 尺寸的图像保留图像。

private void addImages(Document document) {
        // TODO Auto-generated method stub

        File targetDirector = new File(targetPath);

        File[] files = targetDirector.listFiles();
        for (File file : files) {


            ByteArrayOutputStream stream = new ByteArrayOutputStream();

            thumbnails = decodeFile(file.getAbsolutePath());

            ExifInterface exif;
            try {
                exif = new ExifInterface(file.getAbsolutePath());

                String orientString = exif
                        .getAttribute(ExifInterface.TAG_ORIENTATION);

                int orientation = orientString != null ? Integer
                        .parseInt(orientString)
                        : ExifInterface.ORIENTATION_NORMAL;
                int rotationAngle = 0;

                if (orientation == ExifInterface.ORIENTATION_ROTATE_90) {
                    System.out.println("photopotart");
                    thumbnails = getResizedBitmap(thumbnails, 150, 150);
                    thumbnails
                            .compress(Bitmap.CompressFormat.JPEG, 100, stream);
                    Image myImg = null;
                    try {
                        myImg = Image.getInstance(stream.toByteArray());

                    } catch (BadElementException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (MalformedURLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();

                    }
                    // add image to document
                    try {
                        document.newPage();
                        document.add(myImg);
                    } catch (DocumentException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                }

                else if (orientation == ExifInterface.ORIENTATION_ROTATE_180) {
                    System.out.println("180 angle");
                    rotationAngle = 180;

                    System.out.println("photo180");
                    thumbnails = getResizedBitmap180(thumbnails, 200, 200);
                    thumbnails
                            .compress(Bitmap.CompressFormat.JPEG, 100, stream);
                    Image myImg = null;
                    try {
                        myImg = Image.getInstance(stream.toByteArray());

                    } catch (BadElementException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (MalformedURLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();

                    }
                    myImg.setAlignment(Image.LEFT);

                    // add image to document
                    try {
                        document.newPage();
                        document.add(myImg);
                    } catch (DocumentException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                } else if (orientation == ExifInterface.ORIENTATION_ROTATE_270) {
                    System.out.println("other 270");

                    System.out.println("photo270");
                    thumbnails = getResizedBitmap270(thumbnails, 200, 200);
                    thumbnails
                            .compress(Bitmap.CompressFormat.JPEG, 100, stream);
                    Image myImg = null;
                    try {
                        myImg = Image.getInstance(stream.toByteArray());

                    } catch (BadElementException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (MalformedURLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();

                    }

                    // add image to document
                    try {
                        document.newPage();
                        document.add(myImg);
                    } catch (DocumentException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                } else {
                    System.out.println("photolandscape");

                    System.out.println("photo0");
                    // thumbnails =thumbnails.createScaledBitmap(thumbnails,
                    // 350, 250, false);
                    System.out.println("thumbnailsw" + thumbnails.getWidth());
                    System.out.println("thumbnailsh" + thumbnails.getHeight());


                    String imageUrl = file.getAbsolutePath();
                    Image image2 = Image.getInstance(file.getAbsolutePath());
                    image2.scaleAbsolute(150f, 150f);
                      document.newPage();
                      document.add(image2);
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (BadElementException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

    }

【问题讨论】:

  • 您在 PDF 中使用什么 API?
  • 我正在使用itextpdf-5.3.5.jar,开发创建一个pdf

标签: android image pdf android-image


【解决方案1】:

试试这样的

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

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

如果页面上没有填充,则用于缩放图像

 Bitmap.createScaledBitmap(unscaledBitmap, wantedWidth, wantedHeight, true);

也可以通过this 它对缩放位图有很好的解释

【讨论】:

  • 位图位图 = BitmapFactory.decodeResource(getBaseContext().getResources(), R.drawable.ic_launcher);我没有直接从 sd 卡中获取可绘制图像。那么我该如何添加
  • 你是获取位图还是获取文件对象?
  • 是的 thumbnails = decodeFile(file.getAbsolutePath());
  • thumbnails 是什么位图?我要问的是如果答案是肯定的,那么只需执行此 ByteArrayOutputStream stream = new ByteArrayOutputStream();缩略图 .compress(Bitmap.CompressFormat.JPEG, 100 , 流); Image myImg = Image.getInstance(stream.toByteArray()); myImg.setAlignment(Image.MIDDLE);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
相关资源
最近更新 更多