PDF多页不在android中创建[关闭]
Posted
技术标签:
【中文标题】PDF多页不在android中创建[关闭]【英文标题】:PDF multipage not create in android [closed] 【发布时间】:2016-07-20 20:25:33 【问题描述】:在 android 中创建 PDF,但只创建一页,我的其他数据看不到。如何在 android.any 想法或建议中自动增加 PDF 页面运行时。我的问题是如何从该 Graphics 对象创建具有多个页面的 PDF
【问题讨论】:
您的问题不清楚。如果数据多于单页空间,则会自动创建新页面。你提到了一个Graphics
对象。我假设您指的是PdfGraphics2D
。但是,您也提到了Android。 Android上没有Graphics2D
,所以你的问题没有任何意义。
【参考方案1】:
在 android 中创建具有多个页面的 PDF 使用此库
将此 gradle 文件放入您的应用程序 build.gradle 文件中 -- 编译'com.itextpdf:itext-pdfa:5.5.8'
使用此代码生成具有多页的 pdf
-
tempArrayList - 文件路径数组。
pdfName - 你想要的 pdf 名称。
generatePDF(String pdf_name)
String pdfName= null;
Dialog dialog = new MaterialDialog.Builder(activity)
.backgroundColor(Color.WHITE).contentColor(Color.BLACK).title(getString(R.string.app_name)).titleColor(Color.BLACK)
.content("Generating pdf...").progress(true, 0)
.show();
dialog.setCancelable(false);
pdfName = new SimpleDateFormat("yyyyMMdd_HHmmss").format(System.currentTimeMillis()) + ".pdf";
File myPath = new File(AppConstant.Pdf_Directory, pdfName);
if (myPath.exists())
myPath.delete();
Document document = new Document(PageSize.A4); // create the document
try
PdfWriter.getInstance(document, new FileOutputStream(myPath));
catch (Exception e)
// open document
document.open();
for (int i = 0; i < tempArrayList.size(); i++)
Bitmap bmp = null;
try
bmp = BitmapFactory.decodeFile(tempArrayList.get(i));
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 90, stream);
Image image = Image.getInstance(stream.toByteArray());
if (image.getWidth() >= document.getPageSize().getWidth() || image.getHeight() >= document.getPageSize().getHeight())
image.scaleToFit(document.getPageSize());
image.setAbsolutePosition((document.getPageSize().getWidth() - image.getScaledWidth()) / BaseField.BORDER_WIDTH_MEDIUM, (document.getPageSize().getHeight() - image.getScaledHeight()) / BaseField.BORDER_WIDTH_MEDIUM);
document.add(image);
document.newPage();
catch (Exception ex)
ex.printStackTrace();
Toast.makeText(activity, "Fail to generate pdf.", Toast.LENGTH_SHORT).show();
if (bmp != null)
bmp.recycle();
// close the document
document.close();
Toast.makeText(activity, "Pdf generate successfully.", Toast.LENGTH_SHORT).show();
System.out.println(" pdf generate ");
dialog.dismiss();
【讨论】:
"感谢您的回复,我尝试了这段代码,但没有效果。" @Ravimakhija 请理解这是对一个坏问题的一个很好的回答。使用newPage()
会触发一个新页面。显然,您不应该复制/粘贴这个 sn-p 并期望它能够工作,因为它涉及一组图像。您的问题中没有提到图像,因此您可能必须调整此示例。这个例子中最重要的一行是document.newPage()
。以上是关于PDF多页不在android中创建[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
为啥不在 java servlet 中创建 pdf 文档? [复制]