1

import static net.sf.dynamicreports.report.builder.DynamicReports.cmp;
import static net.sf.dynamicreports.report.builder.DynamicReports.col;
import static net.sf.dynamicreports.report.builder.DynamicReports.exp;
import static net.sf.dynamicreports.report.builder.DynamicReports.grid;
import static net.sf.dynamicreports.report.builder.DynamicReports.report;
import static net.sf.dynamicreports.report.builder.DynamicReports.sbt;
import static net.sf.dynamicreports.report.builder.DynamicReports.stl;
import static net.sf.dynamicreports.report.builder.DynamicReports.type;

import java.math.BigDecimal;
import java.util.Date;

import net.sf.dynamicreports.adhoc.AdhocManager;
import net.sf.dynamicreports.adhoc.configuration.AdhocColumn;
import net.sf.dynamicreports.adhoc.configuration.AdhocConfiguration;
import net.sf.dynamicreports.adhoc.configuration.AdhocReport;
import net.sf.dynamicreports.examples.Templates;
import net.sf.dynamicreports.examples.complex.invoice.InvoiceData;
import net.sf.dynamicreports.jasper.builder.JasperReportBuilder;
import net.sf.dynamicreports.report.base.expression.AbstractSimpleExpression;
import net.sf.dynamicreports.report.builder.column.ColumnBuilder;
import net.sf.dynamicreports.report.builder.column.TextColumnBuilder;
import net.sf.dynamicreports.report.builder.grid.ColumnTitleGroupBuilder;
import net.sf.dynamicreports.report.builder.style.StyleBuilder;
import net.sf.dynamicreports.report.builder.subtotal.AggregationSubtotalBuilder;
import net.sf.dynamicreports.report.constant.HorizontalAlignment;
import net.sf.dynamicreports.report.datasource.DRDataSource;
import net.sf.dynamicreports.report.definition.ReportParameters;
import net.sf.dynamicreports.report.exception.DRException;
import net.sf.jasperreports.engine.JRDataSource;

    

    /**

     * @author Ricardo Mariaca (r.mariaca@dynamicreports.org)

     */

    public class InvoiceDesign {

       private InvoiceData data = new InvoiceData();

       private AggregationSubtotalBuilder<BigDecimal> totalSum;

       private JRDataSource createDataSource1() {
           
                     DRDataSource dataSource = new DRDataSource("item", "quantity", "unitprice");
           
                 //    dataSource.add("Notebook", 1, new BigDecimal(500));
           
                  dataSource.add("",null , null);
                     return dataSource;
           
                  }
       
       private JRDataSource createDataSource() {

              DRDataSource dataSource = new DRDataSource("item", "orderdate", "quantity");

              for (int i = 0; i < 20; i++) {

                 dataSource.add("Book", new Date(), (int) (Math.random() * 10) + 1);

              }

              return dataSource;

           }

       public JasperReportBuilder build() throws DRException {
           JasperReportBuilder report5 = report();
           try {
               StyleBuilder columnStyle = stl.style(Templates.columnStyle)

                 .setBorder(stl.pen1Point());

              StyleBuilder subtotalStyle = stl.style(columnStyle)

                 .bold();

              StyleBuilder shippingStyle = stl.style(Templates.boldStyle)

                 .setHorizontalAlignment(HorizontalAlignment.RIGHT);
              
               report5 =  report()//create new report design
               .setTemplate(Templates.reportTemplate)

          //   .setColumnStyle(columnStyle)

         //    .setSubtotalStyle(subtotalStyle)
                              .columns(//add columns
               
                               //            title,     field name     data type
               
                               col.column("Totle",       "item",      type.stringType()),
               
                               col.column("11",   "quantity",  type.integerType()),
               
                               col.column("11", "unitprice", type.bigDecimalType()),
               col.column("11", "unitprice2", type.bigDecimalType()))
                           //   .title(cmp.text("Getting started"))//shows report title
               
                          //    .pageFooter(cmp.pageXofY())//shows number of page at page footer
               
                              .setDataSource(createDataSource1());//set datasource
               
                         //     .show();//create and show report
               
                         } catch (Exception e) {
               
                            e.printStackTrace();
               
                         }
           
           
            String titlev = "test title";

          JasperReportBuilder report = report();

          JasperReportBuilder report1 = report();

          //init styles

          StyleBuilder columnStyle = stl.style(Templates.columnStyle)

             .setBorder(stl.pen1Point());

          StyleBuilder subtotalStyle = stl.style(columnStyle)

             .bold();

          StyleBuilder shippingStyle = stl.style(Templates.boldStyle)

             .setHorizontalAlignment(HorizontalAlignment.RIGHT);

    

          //init columns

          TextColumnBuilder<Integer> rowNumberColumn = col.reportRowNumberColumn()

             .setFixedColumns(2)

             .setHorizontalAlignment(HorizontalAlignment.CENTER);

//          TextColumnBuilder<String> descriptionColumn = col.column("Description", "description", type.stringType())
//
//             .setFixedWidth(250);
         
          TextColumnBuilder<Integer> quantityColumn = col.column("Quantity", "quantity", type.integerType())

             .setHorizontalAlignment(HorizontalAlignment.CENTER);

          TextColumnBuilder<BigDecimal> unitPriceColumn = col.column("Unit Price", "unitprice", Templates.currencyType);

          
          TextColumnBuilder<String> colaa = col.column("Unit Price", "unitprice2", type.stringType());

          TextColumnBuilder<String> priceColumn99 = colaa

             .setTitle("Price")

             .setDataType(type.stringType());
          
          
          TextColumnBuilder<BigDecimal> priceColumn = unitPriceColumn.multiply(quantityColumn)

               .setTitle("Price")

             .setDataType(Templates.currencyType);
          //vat = price * tax

          TextColumnBuilder<BigDecimal> vatColumn = priceColumn.multiply(data.getInvoice().getTax())

             .setTitle("VAT")

             .setDataType(Templates.currencyType);

          TextColumnBuilder<BigDecimal> priceColumn1 = unitPriceColumn.multiply(quantityColumn)

             .setTitle("Price")

             .setDataType(Templates.currencyType);

          //vat = price * tax

          TextColumnBuilder<BigDecimal> vatColumn1 = priceColumn.multiply(data.getInvoice().getTax())

             .setTitle("VAT")

             .setDataType(Templates.currencyType);
          
          TextColumnBuilder<BigDecimal> priceColumn2 = unitPriceColumn.multiply(quantityColumn)
             .setTitle("Price")
             .setDataType(Templates.currencyType);

          //vat = price * tax

          TextColumnBuilder<BigDecimal> vatColumn2 = priceColumn.multiply(data.getInvoice().getTax())
             .setTitle("VAT")
             .setDataType(Templates.currencyType);
          
          
          int arrlength = 5;
          TextColumnBuilder<BigDecimal>[] priceColumnarr = new TextColumnBuilder[arrlength];
          TextColumnBuilder<BigDecimal>[] vatColumnarr = new TextColumnBuilder[arrlength];
          for (int inum = 0; inum < arrlength; inum++) {
              priceColumnarr[inum] = unitPriceColumn.multiply(quantityColumn)
                 .setTitle("Price")
                 .setDataType(Templates.currencyType);
              
              vatColumnarr[inum] = priceColumn.multiply(data.getInvoice().getTax())
                 .setTitle("VAT")
                 .setDataType(Templates.currencyType);
          }
          
          //total = price + vat
          ColumnTitleGroupBuilder totalColumn = grid.titleGroup("Total Price 1", priceColumn99, vatColumn);
          ColumnTitleGroupBuilder totalColumn2 = grid.titleGroup("Total Price 2", priceColumn1, vatColumn1);
          ColumnTitleGroupBuilder totalColumn3 = grid.titleGroup("Total Price 3", priceColumn2, vatColumn2);

          ColumnTitleGroupBuilder[] totalColumnarr = new ColumnTitleGroupBuilder[arrlength];
          for (int inum = 0; inum < arrlength; inum++) {
              totalColumnarr[inum] = grid.titleGroup("Total Price " +inum, priceColumnarr[inum], vatColumnarr[inum]);
          }
          
          TextColumnBuilder<BigDecimal> priceColumn222 = unitPriceColumn.multiply(quantityColumn)

             .setTitle("Price")

             .setDataType(Templates.currencyType);
        //  TextColumnBuilder<BigDecimal> totalColumn = priceColumn.add(vatColumn)
          TextColumnBuilder<BigDecimal> col1 = col.column("price", "price", Templates.currencyType)
             .setHorizontalAlignment(HorizontalAlignment.CENTER);
         //       .setTitle("Total Price");
          TextColumnBuilder<String> col5 =  col.column("Column", "column", type.stringType());
          
          TextColumnBuilder<String>[] columns = new TextColumnBuilder[arrlength];
          
          
          
          report

             .setTemplate(Templates.reportTemplate)

             .setColumnStyle(columnStyle)

             .setSubtotalStyle(subtotalStyle)

             //columns

              .columnGrid(

                      quantityColumn, unitPriceColumn, totalColumn,totalColumn2,totalColumn3)

               .columns(

                       quantityColumn, unitPriceColumn,priceColumn99, vatColumn,priceColumn1, vatColumn1,priceColumn2, vatColumn2)
             
        
             .summary(cmp.subreport(report5))
             .title(
                     cmp.text(titlev).setStyle(Templates.bold12CenteredStyle),
                     cmp.horizontalList(
                             
                        cmp.text("Payment terms: 30 days").setStyle(Templates.bold12CenteredStyle),

                        cmp.text(new TotalPaymentExpression()).setStyle(Templates.bold12CenteredStyle))

                     )

             .pageFooter(

                Templates.footerComponent)

             .setDataSource(data.createDataSource());

    

          return report;

       }

       private class TotalPaymentExpression extends AbstractSimpleExpression<String> {

          private static final long serialVersionUID = 1L;

    

          @Override

          public String evaluate(ReportParameters reportParameters) {

//             BigDecimal total = reportParameters.getValue(totalSum);
//
//             BigDecimal shipping = total.add(data.getInvoice().getShipping());
//
//             return "Total payment: " + Templates.currencyType.valueToString(shipping, reportParameters.getLocale());
return null;
          }

       }

    

       public static void main(String[] args) {

          InvoiceDesign design = new InvoiceDesign();

          try {

             JasperReportBuilder report = design.build();

             report.show();

          } catch (DRException e) {

             e.printStackTrace();

          }

       }

    }
FFmpeg是一款功能强大的开源多媒体处理工具,广泛应用于视频和音频的编码、解码、转换以及流媒体处理。然而,由于历史原因和标准限制,原生的FFmpeg并不支持将H.265(高效视频编码)格式的视频流封装到FLV(Flash Video)容器中。FLV是一种常见的网络流媒体传输格式,但其最初设计时并未考虑现代高效的H.265编码标准。因此,当尝试将H.265编码的视频与FLV容器结合时,会出现“Video codec hevc not compatible with flv”的错误提示,表明FFmpeg无法识别这种组合。 为了解决这一问题,开发者通常需要对FFmpeg的源代码进行修改和扩展。一个名为“用于解决ffmpeg不支持flv+h265需要修改的文件.zip”的压缩包中包含了一些源代码文件,这些文件旨在扩展FFmpeg的功能,使其能够处理FLV容器中的H.265编码内容。压缩包中的三个关键文件分别是“flvdec.c”“flvenc.c”和“flv.h”,它们分别对应FLV的解码器、编码器和头文件。 flvdec.c:这是FFmpeg的FLV解码器源代码,经过修改后可能支持读取和解析包含H.265数据的FLV流。解码器的作用是从FLV容器中提取视频数据,并将其转换为可处理的原始像素格式。 flvenc.c:这个文件包含FLV编码器的源代码,经过调整后可能允许将H.265编码的视频流封装到FLV容器中。编码器负责将原始视频数据编码为H.265格式,并将其打包到FLV文件中。 flv.h:这是一个头文件,定义了FLV格式相关的常量、结构体和函数原型。修改该文件可能涉及添加或更新与H.265支持相关的定义和接口。 要应用这些修改,开发者需要重新编译FFmpeg源代码,并将修改后的版本替换原有的FFmpeg安装。这样,用户就可以使用定制版的FFmpeg来处理FLV+H.265的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值