PDF多页不在android中创建[关闭]

Posted

技术标签:

【中文标题】PDF多页不在android中创建[关闭]【英文标题】:PDF multipage not create in android [closed] 【发布时间】:2016-07-20 20:25:33 【问题描述】:

android 中创建 PDF,但只创建一页,我的其他数据看不到。如何在 android.any 想法或建议中自动增加 P​​DF 页面运行时。我的问题是如何从该 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 文档? [复制]

用于在 Iphone 编程中创建 pdf 的库 [关闭]

Android不在图库中创建文件夹

使用 android.graphics.pdf 创建多页 PDF

iOS - 从 HTML 内容创建多页 PDF [关闭]

从其他 PDF 创建多页 PDF