首页 > 解决方案 > JSP 中的 Crystal Report 自定义纸张大小

问题描述

我有一个编码程序,可以将一份晶体报告打印到如下标签打印机,其中纸张尺寸为 2.36" x 3.44"(我已在打印机首选项中设置了自定义此纸张尺寸),如何使打印输出与尺寸匹配以上?

这是报告的预览: 在此处输入图像描述

这是我的代码:

<%@page import="com.crystaldecisions.sdk.occa.report.document.IPrintOptions"%>
<%@page import="com.crystaldecisions.sdk.occa.report.application.PrintOutputController"%>
<%@page import="com.crystaldecisions.sdk.occa.report.application.ParameterFieldController"%>
<%@page import="com.crystaldecisions.sdk.occa.report.document.PaperSize"%>
<%@page import="com.crystaldecisions.sdk.occa.report.application.ReportClientDocument"%>
<%@page import="com.crystaldecisions.sdk.occa.report.document.PrinterDuplex"%>
<%@page import="com.crystaldecisions.sdk.occa.report.document.PaperSource"%>
<%@page import="com.crystaldecisions.sdk.occa.report.document.PrintReportOptions"%>
<%@page import="com.crystaldecisions.sdk.occa.report.lib.ReportSDKException"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%> 

<%
   String printerName = request.getParameter("j");
   String val1 = request.getParameter("a");
   try {
        final String REPORT_NAME = "reportdoc.rpt";
        ReportClientDocument reportClientDoc = new ReportClientDocument();
        reportClientDoc.open(REPORT_NAME, 0);
        ParameterFieldController paramFieldController = 
        reportClientDoc.getDataDefController().getParameterFieldController();
        paramFieldController.setCurrentValue("", "spk", val1);
        PrintReportOptions printOptions = new PrintReportOptions();
        printOptions.setPrinterName(printerName);
        printOptions.setJobTitle("Print Label");
        printOptions.setPrinterDuplex(PrinterDuplex.horizontal);
        printOptions.setPaperSource(PaperSource.auto);
        printOptions.setNumberOfCopies(1);
        PrintReportOptions.PageRange printPageRange = new PrintReportOptions.PageRange(1, 1);
        printOptions.addPrinterPageRange(printPageRange);
        reportClientDoc.getPrintOutputController().printReport(printOptions);
        reportClientDoc.close();

        out.print("Successfully sent report to the printer.");
  } catch (ReportSDKException ex) {
    out.println(ex);
  }
%>

我添加了代码:reportClientDoc.getPrintOutputController().modifyUserPaperSize(34400, 23600);

但它不工作

标签: javajspwebcrystal-reports-2008

解决方案


推荐阅读