我拼命想用droidtext将图像插入到现有的pdf中。
此项目的原始版本是使用iText制作的。 所以代码已经存在并被修改为适合Android。
我所做的是将现有的PDF作为背景。 在此pdf中的指定位置插入文本和十字。 就像填写表格一样。 到目前为止,这种方法运行良好,而且没有彻底改变代码。
现在我想将图像设置到页面底部以对表单进行签名。 我使用了原始代码并对其进行了一些调整。 这根本不起作用。 我试图将图像设置在特定位置。也许这就是错误。
所以我试图以“官方”的方式做到这一点。 Pengiuns.jpg图像位于SD卡上。
try {
Document document = new Document();
File f=new File(Environment.getExternalStorageDirectory(), "SimpleImages.pdf");
PdfWriter.getInstance(document,new FileOutputStream(f));
document.open();
document.add(new Paragraph("Simple Image"));
String path = Environment.getExternalStorageDirectory()+"/Penguins.jpg";
if (new File(path).exists()) {
System.out.println("filesize: " + path + " = " + new File(path).length());
}
Image image =Image.getInstance(path);
document.add(image);
document.close();
} catch (Exception ex) {
System.out.println("narf");
}
但仍然没有形象。 我得到的是一个带有“简单图像”字样的PDF,没有别的。 我可以访问图片。我通过if()得到了正确的文件大小。 没有例外被抛出。
所以我的问题是,如何将SD卡上的图像放入我的PDF格式? 这里有什么错误? 但最重要的是,如何将图像设置为pdf大小的特定位置? 在我的原始代码中,我使用setAbsolutePosition(x,y)。 当我在代码中使用它时,Eclipse并没有抱怨,但它真的有效吗?
答案 0 :(得分:1)
您获得“简单图像”的原因是因为您在Paragraph
中拥有它。要添加图像,请使用:
Image myImg1 = Image.getInstance(stream1.toByteArray());
如果您想在最后一页中将其作为页脚使用,则可以使用以下代码,但它适用于文本。您可以尝试将其用于图像:
Phrase footerText = new Phrase("THIS REPORT HAS BEEN GENERATED USING INSPECTIONREPORT APP");
HeaderFooter pdfFooter = new HeaderFooter(footerText, false);
doc.setFooter(pdfFooter);
以下是示例代码。在这里,我已将图像上传到Imageview,然后添加到pdf。希望这会有所帮助。
private String NameOfFolder = "/InspectionReport";
Document doc = new Document();
try { //Path to look for App folder
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + NameOfFolder;
String CurrentDateAndTime= getCurrentDateAndTime();
// If App folder is not there then create one
File dir = new File(path);
if(!dir.exists())
dir.mkdirs();
//Creating new file and naming it
int i = 1;
File file = new File(dir, "Inspection"+Integer.toString(i)+"-" + CurrentDateAndTime+".pdf");
while(file.exists()) {
file = new File(dir, "Inspection"+Integer.toString(i++)+"-" + CurrentDateAndTime+".pdf");}
String filep= file.toString();
FileOutputStream fOut = new FileOutputStream(file);
Log.d("PDFCreator", "PDF Path: " + path);
PdfWriter.getInstance(doc, fOut);
Toast.makeText(getApplicationContext(),filep , Toast.LENGTH_LONG).show();
//open the document
doc.open();
ImageView img1 = (ImageView)findViewById(R.id.img1);
ByteArrayOutputStream stream1 = new ByteArrayOutputStream();
Bitmap bitmap1 = ((BitmapDrawable)img1.getDrawable()).getBitmap();
bitmap1.compress(Bitmap.CompressFormat.JPEG, 100 , stream1);
Image myImg1 = Image.getInstance(stream1.toByteArray());
myImg1.setAlignment(Image.MIDDLE);
doc.add(myImg1);
答案 1 :(得分:0)
请尝试以下代码:
/* Inserting Image in PDF */
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Bitmap bitmap = BitmapFactory.decodeResource(getBaseContext().getResources(), R.drawable.android);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100 , stream);
Image myImg = Image.getInstance(stream.toByteArray());
myImg.setAlignment(Image.MIDDLE);
//add image to document
doc.add(myImg);