sunyj il y a 8 ans
Parent
commit
67651f2478

+ 10 - 0
src/main/java/com/uas/report/crystal2jasper/CrystalToJasper.java

@@ -202,6 +202,16 @@ public class CrystalToJasper {
 		// 先解压缩rpt压缩包
 		ZipUtils.unzip(rptZipFile.getAbsolutePath(), uncompressedDir.getAbsolutePath());
 
+		// 图片资源
+		File picturesDir = new File(uncompressedDir, "Pictures");
+		if (picturesDir.exists()) {
+			File[] pictureFiles = picturesDir.listFiles();
+			for (File pictureFile : pictureFiles) {
+				File outPictureFile = new File(reportDir, pictureFile.getName());
+				FileUtils.move(pictureFile, outPictureFile);
+			}
+		}
+
 		// 获取解压后的所有子报表文件夹
 		File[] subDirs = uncompressedDir.listFiles(new FileFilter() {
 			@Override

+ 26 - 1
src/main/resources/crystal2jasper.xsl

@@ -5,7 +5,7 @@
 
 	<xsl:output method="xml" version="1.0" encoding="UTF-8"
 		indent="yes"
-		cdata-section-elements="parameterDescription defaultValueExpression queryString variableExpression text textFieldExpression subreportParameterExpression connectionExpression subreportExpression" />
+		cdata-section-elements="parameterDescription defaultValueExpression queryString variableExpression text textFieldExpression imageExpression subreportParameterExpression connectionExpression subreportExpression" />
 	<!-- position rate from crystal to jasper -->
 
 	<xsl:variable name="positionRate">
@@ -454,6 +454,31 @@
 					</xsl:if>
 				</textField>
 			</xsl:when>
+			<!-- picture -->
+			<xsl:when test="$type='Picture'">
+				<image>
+					<reportElement mode="Opaque">
+						<!-- position -->
+						<xsl:attribute name="x">
+							<xsl:value-of select="round(@x_position div $positionRate)" />
+						</xsl:attribute>
+						<xsl:attribute name="y">
+							<xsl:value-of select="round(@y_position div $positionRate)" />
+						</xsl:attribute>
+						<xsl:attribute name="width">
+							<xsl:value-of select="round(@width div $positionRate)" />
+						</xsl:attribute>
+						<xsl:attribute name="height">
+							<xsl:value-of select="round(@height div $positionRate)" />
+						</xsl:attribute>
+					</reportElement>
+					<imageExpression>
+						<xsl:variable name="quot">&apos;</xsl:variable>
+						<xsl:value-of
+							select="concat('$P{REPORT_DIR}',' + ',$quot,'/Picture/',PictureProperties/Reference/@value,$quot)" />
+					</imageExpression>
+				</image>
+			</xsl:when>
 			<!-- subreport -->
 			<xsl:when test="$type='Subreport'">
 				<subreport>