コード例 #1
0
ファイル: MemoryEater.java プロジェクト: chikoski/sqs
  private void eatMemory(int callIndex, File foFile, int replicatorRepeats) throws Exception {
    Source src = new StreamSource(foFile);

    Transformer transformer = replicatorTemplates.newTransformer();
    transformer.setParameter("repeats", new Integer(replicatorRepeats));

    OutputStream out = new NullOutputStream(); // write to /dev/nul
    try {
      FOUserAgent userAgent = fopFactory.newFOUserAgent();
      userAgent.setBaseURL(foFile.getParentFile().toURL().toExternalForm());
      Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, userAgent, out);
      Result res = new SAXResult(fop.getDefaultHandler());

      transformer.transform(src, res);

      stats.notifyPagesProduced(fop.getResults().getPageCount());
      if (callIndex == 0) {
        System.out.println(
            foFile.getName() + " generates " + fop.getResults().getPageCount() + " pages.");
      }
      stats.checkStats();
    } finally {
      IOUtils.closeQuietly(out);
    }
  }
コード例 #2
0
  /**
   * For first pass of two pass process, invoke org.apache.fop.apps.FormattingResults which can tell
   * us the number of pages in each page sequence, and in the document as a whole.
   *
   * @param fopFactory
   * @param outputFormat
   * @param foDocumentSrc
   * @param placeholderLookup
   * @return
   * @throws Docx4JException
   */
  protected FormattingResults calcResults(
      FopFactory fopFactory,
      String outputFormat,
      Source foDocumentSrc,
      PlaceholderReplacementHandler.PlaceholderLookup placeholderLookup)
      throws Docx4JException {
    Fop fop = null;
    Result result = null;
    try {
      fop = fopFactory.newFop(outputFormat, new NullOutputStream());
      result =
          new SAXResult(
              new PlaceholderReplacementHandler(fop.getDefaultHandler(), placeholderLookup));
    } catch (FOPException e) {
      throw new Docx4JException(
          "Exception setting up result for fo transformation: " + e.getMessage(), e);
    }

    XmlSerializerUtil.serialize(foDocumentSrc, result, false, false);

    return fop.getResults();
  }
コード例 #3
0
  public void generateGeneric() {
    String tMIME = null;
    if (genMode.equals("PDF")) {
      tMIME = MimeConstants.MIME_PDF;
    } else {
      tMIME = MimeConstants.MIME_RTF;
    }

    try {
      System.out.println("FOP Transformation\n");
      System.out.println("Preparing...");

      String fileName = new File(xsltfile).getName();
      // File xsltfile = new File("lib/xsl2/xslt/base/fo/" + fileName);
      File xsltfile = new File("lib/xsl/fo/" + fileName);

      // configure fopFactory.4. as desired
      // FopFactoryConfig ffc = new FopFactoryConfig();

      // FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI()) ; // .newInstance();
      FopFactory fopFactory = FopFactory.newInstance();
      FOUserAgent foUserAgent = fopFactory.newFOUserAgent();

      foUserAgent.setTitle("TEST");

      // configure foUserAgent as desired

      // Setup output
      OutputStream out = new java.io.FileOutputStream(outputfile);
      out = new java.io.BufferedOutputStream(out);

      try {
        TransformerFactory factory = TransformerFactory.newInstance();
        Transformer transformer = factory.newTransformer(new StreamSource(xsltfile));

        // test run to get total pagecount
        Fop fop = fopFactory.newFop(tMIME, foUserAgent, out);
        Source src = new StreamSource(xmlfile);
        Result res = new SAXResult(fop.getDefaultHandler());
        transformer.transform(src, res);

        // Get total page count
        String pageCount = "UNAVAILABLE";
        if (fop.getResults() != null) {
          pageCount = Integer.toString(fop.getResults().getPageCount());
        } else {

        }
        System.out.println("totalcc " + pageCount);

        // real run
        // Construct fop with desired output format
        fop = fopFactory.newFop(tMIME, foUserAgent, out);

        // set draft parameter
        String draftImageFn =
            new File("lib/xsl/images/draft.png").toURI().toString(); // .getAbsolutePath();
        transformer.setParameter("draft.watermark.image", draftImageFn);
        System.out.println(transformer.getParameter("draft.watermark.image"));

        if (isDraftMode) {
          transformer.setParameter("draft.mode", "yes");
        } else {
          transformer.setParameter("draft.mode", "no");
        }

        transformer.setParameter("draft.mode", pageCount);

        // set pagecount parameter
        transformer.setParameter("ebnf.statement.terminator", pageCount);

        // Resulting SAX events (the generated FO) must be piped
        // through
        // to FOP
        res = new SAXResult(fop.getDefaultHandler());

        // Start XSLT transformation and FOP processing
        transformer.transform(src, res);

      } finally {
        out.close();
        status = 0;
      }

      System.out.println("Success!");
      System.out.println("DocBook " + genMode + " generation COMPLETED");

    } catch (Exception e) {
      e.printStackTrace(System.err);
      StringWriter sw = new StringWriter();
      PrintWriter pw = new PrintWriter(sw);
      e.printStackTrace(pw);
      status = 2;
      return;
    }
  }