【发布时间】:2014-10-09 10:20:12
【问题描述】:
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 时,PDF 的内容会移到右侧。对于更宽的 PDF 页面,页面的某些部分会被剪切。
有人知道为什么会这样吗?
【问题讨论】:
-
感谢您纠正我的语法错误.. @Alexis
-
任何人都知道为什么会这样 - 因为这就是你的代码告诉 iText 做的事情:你从某个源文档(包括它的页边距)中取出一个完整的页面并添加它iText 在有自己的页边距的新页面的正文中排列的东西。您的目标似乎是替换某些文档中的单个页面。为此使用 PdfStamper 或 PdfCopy。
-
您说得对,先生.. 我想从 pdf 文件中替换特定页面。你能告诉我 pdfCopy 是如何工作的吗,我试过 stamper 但没有解决我的问题。