我的第一篇文章在这里,我不是一个非常优秀的程序员。 无论如何。我有这个项目,我需要为应用程序提供一个新功能。 该应用程序通过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负责,但我现在需要让它工作。我希望这段代码至少可以让我理解我的问题是什么,有人可以帮助我。
提前致谢
答案 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);
}
没想到能快速找到解决方案! 非常感谢你! 我能找到最好的帮助!