IF 语句给出 Cannot resolve symbol in PDFDocument
IF statements giving Cannot resolve symbol in PDFDocument
所以在我的应用程序中我将图片上传到我公司的服务器
然后使用内置的 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,canvas**
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 语句的某处有语法错误,但我不确定任何帮助将不胜感激
它与你的 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 块中声明,所以它不受其作用域的限制。
重新迭代
在此代码中
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
page
和 canvas
- 它们的范围仅限于此块,因此对
不可见
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 = ....
}
所以在我的应用程序中我将图片上传到我公司的服务器
然后使用内置的 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,canvas**
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 语句的某处有语法错误,但我不确定任何帮助将不胜感激
它与你的 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 块中声明,所以它不受其作用域的限制。
重新迭代
在此代码中
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
page
和 canvas
- 它们的范围仅限于此块,因此对
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 = ....
}