- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 ItextPdf 生成 PDF 文件,但我在这一行 canvas.addImage(background, width, 0,0, height, 20, 430);
上遇到异常,即类型 java.awt.geom.AffineTransform
无法解析。它是从所需的 .class
文件中间接引用的。在这条线上,我试图设置背景图像。请帮我摆脱这个异常(exception)。
public void createPDF() throws NumberFormatException, ParseException
{
list1.add("I-Tax Number : ");
list1.add("Category : ");
list1.add("Service : ");
list1.add("Number : ");
list1.add("Amount : ");
list1.add("Status : ");
list2.add(iTaxNumber);
list2.add("Bill Payment");
list2.add("Idea Postapid");
list2.add("9644212111");
list2.add("100");
list2.add("SUCCESS");
Font trfont = new Font(FontFamily.TIMES_ROMAN, 12, Font.BOLDITALIC,
new BaseColor(130, 130, 140));
Font otherfont = new Font(FontFamily.TIMES_ROMAN, 12, Font.NORMAL,
new BaseColor(160, 160, 160));
Font datefont = new Font(FontFamily.TIMES_ROMAN, 12, Font.BOLD,
new BaseColor(130, 130, 140));
Font thanksFont = new Font(FontFamily.TIMES_ROMAN, 14, Font.BOLDITALIC,
new BaseColor(130, 130, 140));
Document doc = new Document(new Rectangle(792, 612));
try {
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/PDF";
File dir = new File(path);
if(!dir.exists())
dir.mkdirs();
Log.d("PDFCreator", "PDF Path: " + path);
File file = new File(dir, "demo98989.pdf");
FileOutputStream fOut = new FileOutputStream(file);
PdfWriter docPdfWriter = PdfWriter.getInstance(doc, fOut);
Paragraph fromTotoDate = new Paragraph("Date : 25-oct-2015", datefont);
fromTotoDate.setAlignment(Element.ALIGN_RIGHT);
fromTotoDate.setIndentationRight(5);
doc.addAuthor("betterThanZero");
doc.addCreationDate();
doc.addProducer();
doc.addCreator("www.xyz.com");
doc.setPageSize(PageSize.A4);
doc.open();
PdfPTable table = setTable(list1, list2);
Paragraph trId = new Paragraph("Transaction Id : 889879899", trfont);
trId.setAlignment(Element.ALIGN_RIGHT);
trId.setIndentationRight(65);
Paragraph p = new Paragraph("\n\n\n\n");
Paragraph nextline = new Paragraph("\n");// for blank line
doc.add(fromTotoDate);
doc.add(p);
doc.add(trId);
int list1size = list1.size();
String size = String.valueOf(list1size);
Image trDetails_Icon;
Bitmap bmp = BitmapFactory.decodeResource(getBaseContext().getResources(),R.drawable.trreceipt);
ByteArrayOutputStream streamTrReceipt = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, streamTrReceipt);
trDetails_Icon = Image.getInstance(streamTrReceipt.toByteArray());
trDetails_Icon.scaleAbsolute(445f, 238f);
trDetails_Icon.setAbsolutePosition(76, 516);
doc.add(trDetails_Icon);
doc.add(nextline);
doc.add(table);
Paragraph thanktouMessage = new Paragraph("Thanks for Being with Us ! ", thanksFont);
thanktouMessage.setAlignment(Element.ALIGN_CENTER);
doc.add(nextline);
doc.add(thanktouMessage);
Font contFont = new Font(FontFamily.TIMES_ROMAN, 10, Font.NORMAL,
new BaseColor(130, 130, 140));
doc.add(nextline);
Paragraph cont = new Paragraph("For more info contact us", contFont);
cont.setAlignment(Element.ALIGN_RIGHT);
cont.setIndentationRight(20);
doc.add(cont);
System.out.println("list2.get(1) = "+list2.get(1));
float width;
float height;
Image background;
Bitmap bmp1 = BitmapFactory.decodeResource(getBaseContext().getResources(),R.drawable.trans);
ByteArrayOutputStream streamTrReceipt1 = new ByteArrayOutputStream();
bmp1.compress(Bitmap.CompressFormat.PNG, 100, streamTrReceipt1);
System.out.println("list2.get(1) = "+list2.get(1)+"ELSE");
width = PageSize.A4.getWidth()-40;
height = (PageSize.A4.getHeight()/2)-25;
background = Image.getInstance(streamTrReceipt1.toByteArray());
PdfContentByte canvas = docPdfWriter.getDirectContentUnder();
canvas.addImage(background, width, 0,0, height, 20, 430);
Toast.makeText(getApplicationContext(), "Created...", Toast.LENGTH_LONG).show();
} catch (DocumentException de) {
Log.e("PDFCreator", "DocumentException:" + de);
} catch (IOException e) {
Log.e("PDFCreator", "ioException:" + e);
}
finally
{
doc.close();
}
}
最佳答案
您使用的 iText 版本有误。你应该使用 iTextG而不是“纯 Java”iText 版本。作为 Android 开发人员,您知道在 Android 上禁止使用 java.awt
(和 javax.nio
...)类。
“纯 Java”iText 使用未列入 Android 白名单的类(例如,在 PdfGraphics2D
类中)。这就是我们创建 iTextG 的原因。 iTextG 本质上与 iText 相同,只是我们删除了对“禁止类”的所有依赖项(java.awt.geom.AffineTransform
是这些类之一)。
iTextG 中的功能略少(我们不得不放弃 PdfGraphics2D
),但乍一看,我没有在您的代码中看到 iTextG 不支持的任何内容。
长话短说:将 iText 替换为其 Android 端口 iTextG,您的问题将得到解决。
关于java - 无法解析类型 java.awt.geom.AffineTransform。它是从所需的 .class 文件中间接引用的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32985480/
在下面的查询中,为什么我们使用As foo (geom) 而不是As geom? foo() 做什么? SQL 查询 SELECT ST_SRID(geom) AS srid, ST_SRID(ST_
我有一组点,我想在 Java 中将其变成闭合的多边形。我目前正在尝试使用 java.awt.geom.Point2D 和 java.awt.geom.Area,但不知道如何将一组点变成一个区域。 我想
我正在编写一个偏移函数来测试移动物体是否接触空间中的其他可移动和固定物体。 为了测试这一点,我需要查看它们的边界矩形是否相交。 我想测试两个可移动物体是否像这样接触: table 车 - id:整数(
我尝试使用 ggplotly 函数将 ggplot geom-tile 图表转换为 plotly。然而,我意识到结果是不同的。请引用以下链接查看差异。除此之外,ggplotly 图表还缺少颜色条。请帮
在 ggplot2 – issue with overlay of lines and errorbars ,我提出了一个使用 lapply(.) 的答案以特定顺序生成几何图形组,以便每个级别的点/线
我试图在图中绘制两个“geom_vline()”。 下面的代码适用于一条垂直线: x=1:7 y=1:7 df1 = data.frame(x=x,y=y) vertical.lines <- c(2
我一直在阅读 vignette on extending ggplot2 ,但我对如何制作可以向绘图添加多个几何图形的单个几何图形有些困惑。 ggplot2 geoms 中已经存在多个几何图形,例如,
我在普林斯顿各个地点的交通流量数据框。 # dput(count) structure(list(intersection = structure(c(11L, 9L, 10L, 12L, 6L, 3
我在 postgres 数据库中有 geom。当我使用这个查询时 SELECT ST_AsGeoJSON(st_simplify(geom,0.01))::json As geometry FR
本文整理了Java中org.geolatte.geom.codec.WktDecoder类的一些代码示例,展示了WktDecoder类的具体用法。这些代码示例主要来源于Github/Stackover
本文整理了Java中org.geolatte.geom.codec.WkbEncoder类的一些代码示例,展示了WkbEncoder类的具体用法。这些代码示例主要来源于Github/Stackover
sf包似乎是一种比 sp 更易于用户使用的处理空间数据的方法。 .例如,如果我有一组纬度/经度坐标,我可以使用 ggplot2 的开发版本轻松绘图。 : library(sf) devtools::i
我想在使用stat_boxplot(geom = "errorbar")时更改晶须的线宽: set.seed(42) df <- data.frame(cond = factor( rep(c("A"
我有如下地理数据(但数据量大得多): library(tidyverse) library(gganimate) n % sort data % arrange(longitude) %>% muta
Hi I want to initialize an array of Point2D (Point2D.Double []) Somehow I fail, I get the following
根据 D3 文档,可以为 hull 方法分配自定义访问器来获取 x 和 y 坐标。 Hull documentation 我想使用这些自定义访问器,但我无法弄清楚语法。这就是我所做的,这基本上是一个不
我想使用 Java 的 Area 类 (java.awt.geom.Area) 对各种多边形进行减法和求交操作。 在许多这些情况下,减法操作可能会将源区域分成两部分。在这些情况下,我需要返回两个 Ar
我正在尝试在 R 中制作一个多面绘图线图,无论有多少组可用于分面,它都会生成一个图。当运行下面的代码时,我得到了一个理想的绘图,如下图所示 # R 3.6.0 # most of these pack
与其他 ggplot geom 相比,geom_vline 似乎在色彩美学方面“表现不佳”。我想弄清楚我是否对 geom_vline 有误解,或者这是否是对 geom_vline 设计的疏忽。 # F
我首先给你我的示例代码: x <- runif(1000,0, 5) y <- c(runif(500, 0, 2), runif(500, 3,5)) A <- data.frame("X"=x,"
我是一名优秀的程序员,十分优秀!