我正在使用pdfviewer库来显示pdf。现在我想在用户点击的位置上以PDF格式添加签名图像。签名图像可以调整大小并沿着pdf页面移动。 我可以使用iText jar吗? 或者有任何其他的方式来做到这一点。如何使用itext在特定位置添加签名图像在android
如果您有任何问题,请给我解答。
我使用这种方式来显示PDF
Example of code to implement a PDF reader
我正在使用pdfviewer库来显示pdf。现在我想在用户点击的位置上以PDF格式添加签名图像。签名图像可以调整大小并沿着pdf页面移动。 我可以使用iText jar吗? 或者有任何其他的方式来做到这一点。如何使用itext在特定位置添加签名图像在android
如果您有任何问题,请给我解答。
我使用这种方式来显示PDF
Example of code to implement a PDF reader
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没有获取图像或位图的所有内容(如果其宽)。其他图像正在向右侧移动。
任何人都知道为什么会发生这种情况。
感谢您的时间。
要问一个新问题,请使用页面顶部的“Ask Question”按钮。如果有助于提供上下文,则可以链接到此问题。 – 2016-06-12 01:17:07
有文字添加的页面数量右下角。这里是源代码
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();
}
}
}
这不会允许我移动签名图像,或动态调整它的大小。我用这个代码,但这并没有在所有的PDF区域添加图像。有些部分是不可编辑的。 – nadafafif 2014-10-07 09:05:34
好的nadafafif - 代码看起来不错 - 当然它还没有完成。你需要使它动态并设置你将从android获得的坐标(触摸手势等)...不要期望我们做你的作业 – Lonzak 2014-10-08 09:13:40
@Lonzak先生..我完成了我的任务。我只是提到我的问题。如果有的话,我不想让别人去做我的工作。感谢您的时间和回复 – nadafafif 2014-10-09 09:52:04
您可能想要阅读关于iText的PDF格式的数字签名的Bruno白皮书。 – mkl 2014-10-07 08:08:01
不 - 我不认为他需要阅读它,因为他(可能)正在讨论将图像放在现有的pdf文档上。这个图像包含(意外)一些看起来像签名的涂鸦... – Lonzak 2014-10-08 09:10:11
@Lonzak最有可能你是对的。 – mkl 2014-10-09 12:07:33