0

在我的应用程序中,我将图像上传到我的公司服务器这些图像被转换为​​ pdf 文档并上传

我为此使用内置的 PDFdocument,现在我的问题是页面是动态的,具体取决于用户选择或使用相机拍摄的图像数量,图像被放入 ARRAYLIST(String) 我然后调用位置照片并使用画布将其绘制为 pdf

现在我的问题是使用适当的页码 IE 生成的 pdf 文档。如果用户选择 4 张图片,则返回 4 页但没有图片

我发现了问题我的第二个for循环无法正常工作,因为它没有给出我想要的数字广告

PDF 的代码

    PdfDocument document=new PdfDocument();
            // crate a page description
            PdfDocument.PageInfo pageInfo;
            PdfDocument.Page page;
            Canvas canvas;
            int i;

            Bitmap image;

**here I loop for page Creation**

            for (i=0; i < list.size(); i++)  {

                pageInfo=new PdfDocument.PageInfo.Builder(3000, 6000, 1).create();
                page=document.startPage(pageInfo);

在这里,我循环更改数组列表中图像的位置,这不是像应有的那样循环遍历数组列表位置

for(int t = 0; t< list.indexOf(0); t+=1){

                    canvas=page.getCanvas();
                    image=BitmapFactory.decodeFile(String.valueOf(list.get (t)));
                    image.setDensity(DENSITY_XHIGH);
                    canvas.drawBitmap(image, 1, 1, null);
                    canvas.setDensity(DENSITY_XHIGH);
                }



            document.finishPage(page);
        }


        String directory_path=Environment.getExternalStorageDirectory().getPath() + "/mypdf/";
            File file=new File(directory_path);
            if (!file.exists()) {
                file.mkdirs();
            }
            String timeStamp=(new SimpleDateFormat("yyyyMMdd_HHmmss")).format(new Date());
            String targetPdf=directory_path + timeStamp + ".pdf";
            File filePath=new File(targetPdf);
            try {
                document.writeTo(new FileOutputStream(filePath));
                Toasty.info(this, "PDF Created", Toast.LENGTH_LONG).show();
            } catch (IOException e) {
                Log.e("main", "error " + e.toString());
                Toasty.error(this, "Error making PDF" + e.toString(), Toast.LENGTH_LONG).show();
            }
            // close the document
            document.close();
4

1 回答 1

1

1.使用 PrintAttributes.build() 正确设置pdf的属性

  1. 并将 printattrs 传递给打印机pdfDocument(context,/*print attributes obj 在这里 */)

  2. 创建一个 Rect() 对象

  3. 使用 rect() 对象在 forloop 中创建浏览量并将这些浏览量添加到文档中

  4. 用户 FileOutputStream(// 你的 pdf 文件),将其传递给文档,然后

fileOutPutstream = new FileOutputStream(pdffilename);
doucument.writeTo(fileOutPutstream);
doucument.close();
fileOutPutstream.close(); // close your stream 

以上是粗略的实现,这应该给你一个继续的想法。

于 2019-09-11T13:15:56.010 回答