将图像保存为PDF但始终获得相同的图像

时间:2014-11-11 12:15:42

标签: java android pdf

我的第一篇文章在这里,我不是一个非常优秀的程序员。 无论如何。我有这个项目,我需要为应用程序提供一个新功能。 该应用程序通过QR-扫描仪生成参与者列表。我的任务是提供一个Paint,为每个参与者提供签名。 到目前为止,使用此签名一切正常,它还将图像保存到我想要的文件夹中。 在我的“PDF-Creator”课程中,我获得了方法creatPDF,其中首先应该是参与者的唯一编号,然后是他/她给出的签名。 实际上它的所有工作到目前为止,但像我的标题说我总是为每个参与者得到相同的图片。这是一些代码:

这是用我的文件夹中的所有图像填充数组:

        String[] signatures = getSignatureFiles();
        Image[] efnSignatures = new Image[signatures.length];
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        for(int i = 0; i<efnSignatures.length; i++){                
            fileName = signatures[i];
            File myPath = new File(directory,fileName);
            String url = myPath.getAbsolutePath();
            Bitmap bitmap = BitmapFactory.decodeFile(url);
            bitmap.compress(Bitmap.CompressFormat.PNG, 10, stream);
            efnSignatures[i] = Image.getInstance(stream.toByteArray());
            efnSignatures[i].setAlignment(Image.MIDDLE);
        }

以下是方法“getSignatureFiles:

private String[] getSignatureFiles(){
    ContextWrapper tcw = new ContextWrapper(getActivity().getApplicationContext());
    File directory = tcw.getDir("Signatures", Context.MODE_PRIVATE);
    String[] files = new String [directory.listFiles().length];
    int countFiles = 0;
    for (File f : directory.listFiles()) {
        if (f.isFile()){
            files[countFiles] = f.getName();
            String name = f.getName();
            Log.i("file names", name);
            countFiles = countFiles+1;
        }
    }
    return files;
}

最后这里应该是我将图像添加到PDF中的部分:

for (int i = 0; i < signatures.length; i++) {
            insertCell(table, dummyList.get(i), Element.ALIGN_LEFT);
            PdfPCell cell = new PdfPCell();
            cell.addElement(efnSignatures[i]);
            table.addCell(cell);
        }

问题是,我在一个小组工作,并没有对这个PDF-Creator负责,但我现在需要让它工作。我希望这段代码至少可以让我理解我的问题是什么,有人可以帮助我。

提前致谢

1 个答案:

答案 0 :(得分:1)

所以改变就像你说的那样,它现在在循环中创建一个新的ByteArrayOutputStream,实际上它正在工作!

现在看起来像这样:

for(int i = 0; i<efnSignatures.length; i++){    
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            fileName = signatures[i];
            Log.i("name:", fileName);
            File myPath = new File(directory,fileName);
            String url = myPath.getAbsolutePath();
            Log.i("PDF_Creator_url:", url);
            Bitmap bitmap = BitmapFactory.decodeFile(url);
            bitmap.compress(Bitmap.CompressFormat.PNG, 10, stream);
            efnSignatures[i] = Image.getInstance(stream.toByteArray());
            efnSignatures[i].setAlignment(Image.MIDDLE);
        }

没想到能快速找到解决方案! 非常感谢你! 我能找到最好的帮助!