Browse Source

open

master
pioneer 2 years ago
commit
5095731df1
  1. 6
      README.md
  2. BIN
      lib/finekit-10.0.jar
  3. 23
      plugin.xml
  4. 40
      src/main/java/com/fr/plugin/hd/LocaleFinder.java
  5. 87
      src/main/java/com/fr/plugin/hd/export/SheetPDFExporter.java
  6. 45
      src/main/java/com/fr/plugin/hd/provider/CustomPDFExporterCreator.java
  7. 2
      src/main/resources/com/fr/plugin/hd/locale/lang.properties
  8. 2
      src/main/resources/com/fr/plugin/hd/locale/lang_en.properties
  9. 2
      src/main/resources/com/fr/plugin/hd/locale/lang_zh_CN.properties

6
README.md

@ -0,0 +1,6 @@
# open-JSD-10084
JSD-10084 多sheet 导出指定sheet页\
免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\
仅作为开发者学习参考使用!禁止用于任何商业用途!\
为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系【pioneer】处理。

BIN
lib/finekit-10.0.jar

Binary file not shown.

23
plugin.xml

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<id>com.fr.plugin.hd.pdf</id>
<name><![CDATA[导出Pdf文件定制]]></name>
<active>yes</active>
<version>1.1</version>
<env-version>10.0</env-version>
<jartime>2018-07-31</jartime>
<vendor>fr.open</vendor>
<description><![CDATA[导出Pdf文件定制]]></description>
<change-notes><![CDATA[
<p>导出Pdf文件定制</p>
]]></change-notes>
<main-package>com.fr.plugin.hd</main-package>
<prefer-packages>
<prefer-package>com.fanruan.api</prefer-package>
</prefer-packages>
<extra-core>
<LocaleFinder class="com.fr.plugin.hd.LocaleFinder"/>
<PDFExporterCreator class="com.fr.plugin.hd.provider.CustomPDFExporterCreator"/>
</extra-core>
<function-recorder class="com.fr.plugin.hd.LocaleFinder"/>
</plugin>

40
src/main/java/com/fr/plugin/hd/LocaleFinder.java

@ -0,0 +1,40 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: LocaleFinder
* Author: xx
* Date: 2020/8/31 22:19
*/
package com.fr.plugin.hd;
import com.fr.intelli.record.Focus;
import com.fr.intelli.record.Original;
import com.fr.record.analyzer.EnableMetrics;
import com.fr.stable.fun.Authorize;
import com.fr.stable.fun.impl.AbstractLocaleFinder;
import static com.fr.plugin.hd.LocaleFinder.PLUGIN_ID;
/**
* <Function Description><br>
* <LocaleFinder>
*
* @author xx
* @since 1.0.0
*/
@EnableMetrics
@Authorize(callSignKey = PLUGIN_ID)
public class LocaleFinder extends AbstractLocaleFinder {
public static final String PLUGIN_ID = "com.fr.plugin.hd.pdf";
@Override
@Focus(id = PLUGIN_ID, text = "Plugin-hd", source = Original.PLUGIN)
public String find() {
return "com/fr/plugin/hd/locale/lang";
}
@Override
public int currentAPILevel() {
return CURRENT_LEVEL;
}
}

87
src/main/java/com/fr/plugin/hd/export/SheetPDFExporter.java

@ -0,0 +1,87 @@
/*
* Copyright (C), 2018-2022
* Project: starter
* FileName: SheetPDFExporter
* Author: xx
* Date: 2022/4/29 16:25
*/
package com.fr.plugin.hd.export;
import com.fanruan.api.i18n.I18nKit;
import com.fanruan.api.log.LogKit;
import com.fr.io.exporter.PDFExporter;
import com.fr.main.workbook.ResultWorkBook;
import com.fr.page.PageSetCreator;
import com.fr.plugin.context.PluginContexts;
import com.fr.stable.ArrayUtils;
import com.fr.web.core.ReportRepositoryDeal;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.Map;
/**
* <Function Description><br>
* <SheetPDFExporter>
*
* @author xx
* @since 1.0.0
*/
public class SheetPDFExporter extends PDFExporter {
public static final String USEFUL_SHEETS = "usefulSheets";
private int[] getUsefulSheets(Map<String, Object> reportParameterMap) {
if (!reportParameterMap.containsKey(USEFUL_SHEETS)) {
return null;
}
String usefulSheets = reportParameterMap.get(USEFUL_SHEETS).toString();
LogKit.info("hd-SheetPDFExporter-getUsefulSheets-usefulSheets:{}", usefulSheets);
return Arrays.stream(usefulSheets.split(",")).mapToInt(Integer::parseInt).toArray();
}
@Override
public void export(OutputStream outputStream, ResultWorkBook resultWorkBook, PageSetCreator pageSetCreator, ReportRepositoryDeal reportRepositoryDeal, int[] ints) throws Exception {
if (PluginContexts.currentContext() == null || !PluginContexts.currentContext().isAvailable()) {
LogKit.error(I18nKit.getLocText("Plugin-hd_Licence_Expired"));
super.export(outputStream, resultWorkBook);
return;
}
if (ints == null || ArrayUtils.getLength(ints) <= 0) {
ints = getUsefulSheets(reportRepositoryDeal.getReportParameterMap());
}
ResultWorkBook useResultWorkBook = this.removeUselessSheet(resultWorkBook, ints, resultWorkBook);
super.export(outputStream, useResultWorkBook);
}
@Override
public void export(OutputStream outputStream, ResultWorkBook resultWorkBook) throws Exception {
if (PluginContexts.currentContext() == null || !PluginContexts.currentContext().isAvailable()) {
LogKit.error(I18nKit.getLocText("Plugin-hd_Licence_Expired"));
super.export(outputStream, resultWorkBook);
return;
}
int[] ints = getUsefulSheets(resultWorkBook.getExecuteParameters());
ResultWorkBook useResultWorkBook = this.removeUselessSheet(resultWorkBook, ints, resultWorkBook);
super.export(outputStream, useResultWorkBook);
}
private ResultWorkBook removeUselessSheet(ResultWorkBook resultWorkBook, int[] sheetIndexArray, ResultWorkBook handledResultWorkBook) {
if (ArrayUtils.isEmpty(sheetIndexArray)) {
return handledResultWorkBook;
}
if (resultWorkBook.getReportCount() > sheetIndexArray.length) {
try {
handledResultWorkBook = (ResultWorkBook) resultWorkBook.clone();
for (int i = 0; i < resultWorkBook.getReportCount(); i++) {
if (!ArrayUtils.contains(sheetIndexArray, i)) {
handledResultWorkBook.removeReport(i);
}
}
} catch (Exception e) {
LogKit.error(e.getMessage(), e);
}
}
return handledResultWorkBook;
}
}

45
src/main/java/com/fr/plugin/hd/provider/CustomPDFExporterCreator.java

@ -0,0 +1,45 @@
/*
* Copyright (C), 2018-2022
* Project: starter
* FileName: CustomPDFExporterCreator
* Author: xx
* Date: 2022/4/29 16:02
*/
package com.fr.plugin.hd.provider;
import com.fanruan.api.log.LogKit;
import com.fr.io.exporter.*;
import com.fr.plugin.hd.export.SheetPDFExporter;
import com.fr.stable.fun.Authorize;
import static com.fr.plugin.hd.LocaleFinder.PLUGIN_ID;
/**
* <Function Description><br>
* <CustomPDFExporterCreator>
*
* @author xx
* @since 1.0.0
*/
@Authorize(callSignKey = PLUGIN_ID)
public class CustomPDFExporterCreator extends AbstractPDFExporterCreator {
@Override
public PDFExporterProcessor createPDFExporter(boolean isPrint) {
LogKit.info("hd-CustomPDFExporterCreator-createPDFExporter-isPrint:{}", isPrint);
return isPrint ? new PDFExporterForPrint() : new SheetPDFExporter();
}
@Override
public PDFExporterProcessor createPDFExporter(PDFExportType pdfExportType) {
LogKit.info("hd-CustomPDFExporterCreator-createPDFExporter-pdfExportType:{}", pdfExportType);
switch (pdfExportType) {
case EXPORT:
return new SheetPDFExporter();
case PRINT:
return new PDFExporterForPrint();
default:
return new PDFEmbExporter();
}
}
}

2
src/main/resources/com/fr/plugin/hd/locale/lang.properties

@ -0,0 +1,2 @@
Plugin-hd=Export PDF Plugin
Plugin-hd_Licence_Expired=Export PDF Plugin Licence Expired

2
src/main/resources/com/fr/plugin/hd/locale/lang_en.properties

@ -0,0 +1,2 @@
Plugin-hd=Export PDF Plugin
Plugin-hd_Licence_Expired=Export PDF Plugin Licence Expired

2
src/main/resources/com/fr/plugin/hd/locale/lang_zh_CN.properties

@ -0,0 +1,2 @@
Plugin-hd=\u5BFC\u51FAPdf\u6587\u4EF6\u5B9A\u5236\u63D2\u4EF6
Plugin-hd_Licence_Expired=\u5BFC\u51FAPdf\u6587\u4EF6\u5B9A\u5236\u63D2\u4EF6\u8BB8\u53EF\u8FC7\u671F
Loading…
Cancel
Save