【问题标题】:IF statements giving Cannot resolve symbol in PDFDocumentIF 语句给出无法解析 PDFDocument 中的符号
【发布时间】:2020-01-12 23:27:20
【问题描述】:

所以在我的应用中,我将图像上传到我的公司服务器

然后使用内置的 PDFdocument 方法将这些图像转换为 PDF,

现在我的问题是我试图通过添加 IF 语句使 PDF 生成动态化。 所以我的图像被加载到一个数组列表中,如果在 ArrayList 中的某个位置有一个项目,我会调用一个 PDF 页面创建

 if(list.contains(list.get(0))){
code here

}

但我得到无法解析下一页代码上的符号。

如果列表在位置 X 包含一个项目,那么我想要发生的事情然后它会创建一个页面,所以最后的结果是,对于用户选择的每个图像,都会创建一个新页面

PDF 创建代码

PdfDocument document=new PdfDocument();

    if(list.contains(list.get(0))) {
        PdfDocument.PageInfo pageInfo=new PdfDocument.PageInfo.Builder(300, 6000, 1).create();
        PdfDocument.Page page=document.startPage(pageInfo);
        Canvas canvas=page.getCanvas();

        Bitmap image=BitmapFactory.decodeFile(list.get(0));
        canvas.setDensity(DENSITY_XHIGH);
        image.setDensity(DENSITY_XHIGH);
        canvas.drawBitmap(image, 1, 1, null);
        document.finishPage(page);
    }

** 在这里我正在获取无法解析页面、pageInfo、画布上的符号**

if(list.contains(list.get(1))) {
         pageInfo = new PdfDocument.PageInfo.Builder(, 6000, 2).create();
        page = document.startPage(pageInfo);
        canvas = page.getCanvas();

            Bitmap image2=BitmapFactory.decodeFile(list.get(1));
            canvas.setDensity(DENSITY_XHIGH);
            image2.setDensity(DENSITY_XHIGH);
            canvas.drawBitmap(image2, 1, 1, null);
            document.finishPage(page);
}


        String directory_path=Environment.getExternalStorageDirectory().getPath() + "/mypdf/";
        File file=new File(directory_path);
        if (!file.exists()) {
            file.mkdirs();
        }
        String timeStamp = (new SimpleDateFormat("yyyyMMdd_HHmmss")).format(new Date());
        String targetPdf=directory_path + timeStamp +".pdf";
        File filePath=new File(targetPdf);
        try {
            document.writeTo(new FileOutputStream(filePath));
            Toast.makeText(this, "Done", Toast.LENGTH_LONG).show();
        } catch (IOException e) {
            Log.e("main", "error " + e.toString());
            Toast.makeText(this, "Something wrong: " + e.toString(), Toast.LENGTH_LONG).show();
        }
        // close the document
        document.close();

我认为我的问题是我在 m IF 语句的某处有语法错误,但我不确定任何帮助将不胜感激

【问题讨论】:

    标签: java android android-studio pdf pdf-generation


    【解决方案1】:

    它与您的 if 语句无关,仅与您的代码块的范围有关。

    if ( condition ) {
      String t = "yes";
    }
    System.out.println("myString " + t);
    

    这个简单的代码将导致与您当前的代码完全相同的问题。 t 是 if 块中的局部变量。一旦该块完成,该变量将不再存在。

    解决这个问题:

    String t = "";
    if ( condition ) {
      t = "yes";
    }
    System.out.println("myString " + t);
    

    这样,t 变量可以在 if 块完成后访问,因为它不是在 if 块中声明的,因此它不受其范围的限制。

    【讨论】:

    • 好的,知道了。没有意识到您提供的是一些简单的代码而不是 OP 的代码。
    • @ScaryWombat 不打算全部复制粘贴,或者自己重新输入 :)
    【解决方案2】:

    重复一遍

    在这段代码中

    if(list.contains(list.get(0))) {
        PdfDocument.PageInfo pageInfo=new PdfDocument.PageInfo.Builder(300, 6000, 1).create();
        PdfDocument.Page page=document.startPage(pageInfo);
        Canvas canvas=page.getCanvas();
        ....
     }
    

    您正在声明变量 pageInfo pagecanvas - 它们的范围仅限于此块,因此它们不可见

    if(list.contains(list.get(1))) {
         pageInfo = new PdfDocument.PageInfo.Builder(, 6000, 2).create();
        page = document.startPage(pageInfo);
        canvas = page.getCanvas();
        ....
    }
    

    您可以在 first if 块之前将它们声明为

    PdfDocument.PageInfo pageInfo = null;
    PdfDocument.Page page = null;
    Canvas canvas = null;
    
    if(list.contains(list.get(0))) {
         pageInfo = .... // set value
    }
    

    if(list.contains(list.get(1))) {
         pageInfo = ....
    }
    

    【讨论】:

    • 是的,谢谢你解决了这个问题,但现在我得到了 Process: com.smartpractice.smartpracticesmartapp, PID: 21884 java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 on my second IF statements 但是我将为此发布另一个问题,唯一的问题是人们出于我不知道的原因对我的问题投反对票
    • @RubenMeiring 很可能是因为您遇到的问题非常非常基本,但是您在问题中发布的代码似乎并不那么基本。鉴于我没有否决您的问题,我只能想象这就是原因。
    • 我只用了一个月左右的 Java 编码,所以我的很多代码都是实验和反复试验,谢谢无论如何,伙计们
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多