2014-10-07 157 views
-1

我正在使用pdfviewer库来显示pdf。现在我想在用户点击的位置上以PDF格式添加签名图像。签名图像可以调整大小并沿着pdf页面移动。 我可以使用iText jar吗? 或者有任何其他的方式来做到这一点。如何使用itext在特定位置添加签名图像在android

如果您有任何问题,请给我解答。

我使用这种方式来显示PDF

Example of code to implement a PDF reader

+0

您可能想要阅读关于iText的PDF格式的数字签名的Bruno白皮书。 – mkl 2014-10-07 08:08:01

+1

不 - 我不认为他需要阅读它,因为他(可能)正在讨论将图像放在现有的pdf文档上。这个图像包含(意外)一些看起来像签名的涂鸦... – Lonzak 2014-10-08 09:10:11

+0

@Lonzak最有可能你是对的。 – mkl 2014-10-09 12:07:33

回答

-1
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 

       Bitmap bmp = Bitmap.createScaledBitmap(pdfBtm, (int)(pdfBtm.getWidth()), (int)(pdfBtm.getHeight()), true); 

       bmp.compress(CompressFormat.PNG, 0, stream); 

       byte[] byteArray = stream.toByteArray(); 

       Image img = Image.getInstance(byteArray); 



       String pdffile = sharedPref.getString(com.appealsoft.i_file_me.Config.PdffileName, ""); 
       int pageNumber = sharedPref.getInt(com.appealsoft.i_file_me.Config.PdfpageNumber, 0); 



       PdfReader reader = new PdfReader(pdffile); 

       String filename = pdffile.substring(pdffile.lastIndexOf("/")+1, pdffile.length()); 
       System.out.println("file name is :" + filename); 

       OutputStream newfile = new FileOutputStream(new File("/sdcard/"+filename)); 
       Document newDocs = new Document(); 
       PdfWriter writer = PdfWriter.getInstance(newDocs, newfile); 
       newDocs.open(); 


       for(int i = 1 ;i<=reader.getNumberOfPages();i++) 

       { 
         if(i == pageNumber) 
         { 


          Image img2 = Image.getInstance(byteArray); 
          newDocs.add(img2); 

          System.out.println(" i was inside..."); 


         }else{ 




     Image img2 = Image.getInstance(writer.getImportedPage(reader, i)); 
          newDocs.add(img2); 
         } 

       } 


       newDocs.close(); 

这个解决方案由我做到了。我现在只是面临一个问题。我创建的pdf没有获取图像或位图的所有内容(如果其宽)。其他图像正在向右侧移动。

任何人都知道为什么会发生这种情况。

感谢您的时间。

+0

要问一个新问题,请使用页面顶部的“Ask Question”按钮。如果有助于提供上下文,则可以链接到此问题。 – 2016-06-12 01:17:07

1

有文字添加的页面数量右下角。这里是源代码

package com.samplecode; 

import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.Image; 
import com.itextpdf.text.pdf.BaseFont; 
import com.itextpdf.text.pdf.PdfContentByte; 
import com.itextpdf.text.pdf.PdfReader; 
import com.itextpdf.text.pdf.PdfStamper; 

import java.io.FileOutputStream; 
import java.io.IOException; 

public class PdfStamperExample { 

public static void main(String[] args) { 
    try { 
     PdfReader pdfReader = new PdfReader("data/FormW4.pdf"); 

     PdfStamper pdfStamper = new PdfStamper(pdfReader, 
       new FileOutputStream("data/FormW4-Stamped.pdf")); 

     Image image = Image.getInstance("data/Approved.png"); 

     for(int i=1; i<= pdfReader.getNumberOfPages(); i++){ 

      //put content under 
      PdfContentByte content = pdfStamper.getUnderContent(i); 
      image.setAbsolutePosition(100f, 150f); 
      content.addImage(image); 

      //put content over 
      content = pdfStamper.getOverContent(i); 
      image.setAbsolutePosition(300f, 150f); 
      content.addImage(image); 

      //Text over the existing page 
      BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, 
        BaseFont.WINANSI, BaseFont.EMBEDDED); 
      content.beginText(); 
      content.setFontAndSize(bf, 18); 
      content.showTextAligned(PdfContentByte.ALIGN_LEFT,"Page No: " + i,430,15,0); 
      content.endText(); 

     } 

     pdfStamper.close(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (DocumentException e) { 
     e.printStackTrace(); 
    } 
} 
} 
+0

这不会允许我移动签名图像,或动态调整它的大小。我用这个代码,但这并没有在所有的PDF区域添加图像。有些部分是不可编辑的。 – nadafafif 2014-10-07 09:05:34

+2

好的nadafafif - 代码看起来不错 - 当然它还没有完成。你需要使它动态并设置你将从android获得的坐标(触摸手势等)...不要期望我们做你的作业 – Lonzak 2014-10-08 09:13:40

+0

@Lonzak先生..我完成了我的任务。我只是提到我的问题。如果有的话,我不想让别人去做我的工作。感谢您的时间和回复 – nadafafif 2014-10-09 09:52:04

相关问题