PageRange AccessMode

hi
i have a ADF BC View object that i want use PageRange Access Mode Feature in it.
but after set access mode to pageRange in run time ADF Show error message ORA-01446: cannot select ROWID from view with DISTINCT, GROUP BY, etc.

Even if the table doesn't have a primary key defined in the database, you can still mark any attributes in the vo that would uniquely identify a record as the primary key. Range paging mode won't work if you use rowid as the primary key

Similar Messages

  • Number of copies with setCollated does not work if PageRange is not set

    I have a report which results are printed on 2 pages. If i set PrintReportOptions like below:
    PrintReportOptions printOptions = new PrintReportOptions();
    printOptions.setPrinterName( targetPrinter );
    printOptions.setNumberOfCopies( 2 );
    printOptions.setCollated( true );
    printCntrl.printReport( printOptions );
    I get ONLY one copy, other pages are not printed.  So instead of getting 2 x 2 pages with order 1,2 1,2 i am getting only 1,2 so it seems that number of copies is not interpreted.
    When i  add a setup of a page range - everything works as excepted.
    PrintReportOptions printOptions = new PrintReportOptions();
    printOptions.setPrinterName( targetPrinter );
    printOptions.setNumberOfCopies( 2 );
    printOptions.setCollated( true );
    PrintReportOptions.PageRange printPageRange = new PrintReportOptions.PageRange( 1,  2 );
    printOptions.addPrinterPageRange( printPageRange );
    printCntrl.printReport( printOptions );
    But how can i find on how many pages report will be printed? - it's impossible. I thought that maybe i can set 100 as the upper limit of range but this doesn't work. The page range must be less or equal to the number of pages on which report will be printed.
    When I am not using method setCollated or use it with false  report is printed on desired number of pages and with expected amount of copies.  ( in order 1,1 2,2 ) . Here is the code:
    PrintReportOptions printOptions = new PrintReportOptions();
    printOptions.setPrinterName( targetPrinter );
    printOptions.setNumberOfCopies( 2 );
    printOptions.setCollated( false );
    printCntrl.printReport( printOptions );
    I suspect that this is a bug of CR Java runtime. If so, when we may expect that it will be fixed?

    Hello.
    I tested with the latest version of the Crystal Report runtime libraries (version 12.2.211) and it works for me as expected.
    What I would suggest is that you test your application using the latest version 12.2.211 and see if this resolves the problem.  Since it works for me on this latest version, I would expect that it would work for you as well.  The latest version can be found at the following link under the section "Runtime Libraries":
    http://www.businessobjects.com/campaigns/forms/downloads/crystal/eclipse/datasave.asp
    A direct link to the zip file that contains the runtime components can be obtained from the following link:
    http://downloads.businessobjects.com/akdlm/crystalreportsforeclipse/2_0/crjava-runtime_12.2.211.zip
    If you are still experiencing problems after using the 12.2.211 runtime components, then maybe it is the case that your printer driver is causing an issue.  The printer that I printed on is "HP Universal Printing PCL 5 (v5.1)".
    I hope that updating the Crystal Reports runtime version to the latest resolves your problem.
    Best of luck.
    Regards.
    - Robert

  • Strange behavior with pageRange property (specifying ranges)

    Hello everyone,
    I'm trying to export two PDFs from one INDD in script. I want the first to include the first two pages and the second to include pages 3 through the last. When specifying a page range like this:
    app.pdfExportPreferences.pageRange = '3-' + _doc.pages.length;
    IDS always exports the full document as a PDF (doesn't skip pages 1 and 2).
    I tried this too (with spaces):
    app.pdfExportPreferences.pageRange = '3 - ' + _doc.pages.length;
    But it had the same result. I've run this script in the debugger and check the value of pageRange. It's correct (_doc.pages.length returns a valid last page number).
    If I do this:
    app.pdfExportPreferences.pageRange = '1';
    That works just fine.
    Is there a trick to exporting a range of pages that I'm not seeing? I've verified it on two machines (my local and the server).
    Thanks,
    Eric

    do your document starts from page number different than "1" ?? ;)
    use page.name rather page.documentoffset
    app.pdfExportPreferences.pageRange = _doc.pages[3].name + '-' + _doc.pages[-1].name
    (I'm not JS man so check brackets type, etc.)
    robin
    www.adobescripts.com

  • PDFExportPreference.pageRange CS4

    I have a scripted export to a PDF, and I need to make sure it exports all pages. Currently, if the last export was a page range, it uses that range.
    I have a PDFExportPreference variable (pdfPref), and when I try to set the pdfPref.pageRange, I get an error "Object does not support the property or method 'pageRange'." I have also tried app.PDFExportPreference.pageRange and get the same error.

    Hi,
    app.pdfExportPreferences.pageRange = PageRange.ALL_PAGES
    'pdf' is not uppercase ;-)
    Hans

  • Export each page in a pagerange

    Dear all,
    How do I export each page in a pagerange using js - eg. I enter a pagerange "2-4,5" and InDesign exports 4 files with one page pr. file?
    From the examples included with InDesign I know how to export all the pages in a document as 1 page pr. export, or export a pagerange to one file (4 pages in one PDF file). But I can't seem to figure out how to couple a defined pagerange with looping through the document pages..
    Kind regards,
    Rasmus Olsen

    var myDocument = app.activeDocument;
    var myDocumentName = myDocument.name;
    var myFolder = Folder.selectDialog ("Choose a Folder");
    var unranged_array = unrange ("1-3,4")
    function unrange (s)
       return s.replace (/(\d+)-(\d+)/g, expand)
    function expand ()
       var expanded = [];
       var start = Number (arguments[1]);
       var stop = Number (arguments[2]);
       for (var i = start; i <= stop; i++)
          expanded.push (i);
       return expanded
    //alert(unranged_array);
    mySplit = unranged_array.split(',');
    for(var myCounter = 0; myCounter < mySplit.length; myCounter++) {
    myPageName = myDocument.pages.item(myCounter).name;
    //alert(myPageName)
    with(app.pdfExportPreferences) {
      pageRange = myPageName;
      viewPDF = false;
    myFilePath = myFolder + "/" + myDocumentName + "_" + myPageName + ".pdf";
    myFile = new File(myFilePath);
    myDocument.exportFile(ExportFormat.pdfType, myFile, false);
    And I even learned how to use the pre tag. Wow, this makes me wet :-)
    Thank you gentlemen, you are the best.
    Rasmus

  • [JS] CS3 pageRange conversions & validation

    Hi there
    Is there an easy way to convert page range string to absolute page numbers (especially when it contains characters or Roman numerals).
    We use a custom rubber stamp on the back of our draft pages during the proofing process. I'd like to create a temporary page at the end of document, then capture the page range entered by user and interleave it with the "stamp page" When combined with double sided printing this might save us considerable amount of time.
    Now, I can only do this with digits as page numbers. (and possibly ASCII characters). But I'm totally clueless when it come to Roman numerals.
    My second question is about validating page range before I feed it to the printPreference. I didn't want to reinvent the wheel so I'm using the try...catch workaround so far. I just don't feel it's fair to the user to tell him "wrong page range you numpty" even when it's not case of him being a numpty.
    Please can anyone give me some hint to point me to the right direction?
    Thanks
    weller

    I am not sure to get the idea but regarding to Roman numerals, you may write a analysis function that will consist in attributing value to letters.
    so "V" = 5;
    X = 10;
    I = 1;
    then check for values and apply values
    var mypgnb = 0;
    if string.charAt[0] == "V" mypgnb += 5;
    if string.charAt[0] == "X" mypgnb += 10;
    if string.charAt[0] == "I" mypgnb += 1;
    etc. A loop seems imperative through the length of the roman letters length.
    The main point is to check for letters placement so IV has a diiferent sum than VI
    But you can place conditions like
    if string.charAt[x] == "I" && string.charAt[x+1] == "V" mypgnb -= 1;
    Tricky and painfull but may finally get a integer value.
    Hope it helps.
    Loic

  • Help using tagged text in document in exported filename

    Hello, I am using the following script to export my Indesign documents as single page PDFs, and naming in a specific way:
    var pdfPreset = "<PDF_preset>";
    var exportPath = "<filepath>";
    var jobNumber = "XXXXXX_"
    for (aPage=0; aPage < app.activeDocument.pages.length; aPage++)
    app.pdfExportPreferences.pageRange = app.activeDocument.pages[aPage].name;
    app.activeDocument.exportFile (ExportFormat.PDF_TYPE, File(exportPath+"/"+jobNumber+pad(app.activeDocument.pages[aPage].name)+".pdf"), false, pdfPreset);
    function pad (n) {
        return ("00000"+n).slice(-3);
    This will output the filenames as XXXXXX_002-003, etc, where XXXXXX is the customers ID number.
    Instead of typing in each customers ID number in the script, I want to tag a text box within the document that contains only the customer's job number, then use the contents of that text box as the jobNumber variable.
    How can I do that?

    There are many ways of "tagging" information in an InDesign document. For what you're doing, I'd suggest a unique paragraph style used only for this purpose, then you can search for text in it and use the contents.
    Dave

  • How do I access a value of a variable in SSIS and control the flow accordingly based on its value?

    So I have a Foreach Loop Container that Enumerates a read Excel spreadsheet and this Foreach Loop get its User::SheetName. Can I change my flow accordingly based on the value of the User Variable User:SheetName that is dynamically valued by the Foreach Loop
    Container? So if the User::SheetName is "Enrolled", I want to load that worksheet to a certain SQL Server Table using an Excel Source and OLE DB Destination and if the User::SheetName is "Engaged", I want to load its worksheet contents
    to a different SQL Server Staging Table. What Task can I use to determine the value of User::SheetName or am I going to have to write a C# script to do this?
    Any help and/or suggestions are GREATLY appreciated.
    Thanks!

    Hi ITBobbyP,
    According to your description, you want to read data from excel by using the Foreach Loop container with the appropriate enumerator. If that is the case, please refer to the following steps:
    Inside the ADO NET enumerator, add a data flow task.
    Inside the data flow task, add an Excel source.
    Open the Excel source, and point to the Excel data source set up in the file enumerator.
    Select one of the sheets that shows in the drop down.
    Close the Excel source.
    Select the Excel source.
    In the properties window, copy the name of the sheet you selected. It's in the 'OpenRowset' property.
    Set this as the initial string in your sheet name variable created to gather the sheet name from the ADO NET enumerator.
    Select the Excel source.
    In the properties window, change the 'AccessMode' to OpenRowset from Variable. This will change the property 'OpenRowset' to 'OpenRowsetVariable'.
    Change the 'OpenRowsetVariable' to the variable created to hold the sheet name via the dropdown.
    Open the Excel source. You should see your variable as the sheet name.
    Click the 'Columns' tab to verify you can connect and mess with columns.
    For detail information, please refer to the following document:
    https://technet.microsoft.com/en-us/library/ms345182.aspx
    If you have any more questions, please feel free to ask.
    Thanks,
    Wendy Fu
    Wendy Fu
    TechNet Community Support

  • Problem with range page with SQL Server

    Please help
    JDev version JDEVADF_11.1.1.7.0_GENERIC_130226.1400.6493
    I am using range paging for one of the VOs. The VO is based on single table. The VO is bounded to af:table. We need to support both Oracle and SQL server.
    When database is Oracle , the range paging works fine.
    But when database is SQLServer only first page is fetched properly, all the other pages are just copy of first page. The pagesize is default (25).
    Did I miss anything ?
    With accessMode=Scrollable the table show correct data for both Oracle and SQLServer.
    This is my VO XML
    <?xml version="1.0" encoding="windows-1252" ?>
    <!DOCTYPE ViewObject SYSTEM "jbo_03_01.dtd">
    <!---->
    <ViewObject
      xmlns="http://xmlns.oracle.com/bc4j"
      Name="MessagesROVO"
      Version="11.1.1.64.93"
      InheritPersonalization="true"
      OrderBy='"TIMESTAMP" desc'
      BindingStyle="JDBC"
      CustomQuery="true"
      RowClass="model.bc4j.queries.admin.MessagesROVORowImpl"
      ComponentClass="model.bc4j.queries.admin.MessagesROVOImpl"
      FetchMode="FETCH_AS_NEEDED"
      PageIterMode="Full"
      UseGlueCode="false"
      Passivate="All"
      AccessMode="RANGE_PAGING">
      <DesignTime>
        <Attr Name="_codeGenFlag2" Value="Access|Coll|VarAccess"/>
        <Attr Name="_isExpertMode" Value="true"/>
        <Attr Name="_isCodegen" Value="true"/>
      </DesignTime>
      <Properties>
        <SchemaBasedProperties>
          <LABEL
            ResId="model.bc4j.queries.admin.MessagesROVO_LABEL"/>
        </SchemaBasedProperties>
      </Properties>
      <Variable
        Name="BINDApplicationName"
        Kind="viewcriteria"
        Type="java.lang.String">
        <AttrArray Name="ExtendedDataInts">
          <Item Value="0"/>
        </AttrArray>
      </Variable>
      <Variable
        Name="BINDServerName"
        Kind="viewcriteria"
        Type="java.lang.String">
        <AttrArray Name="ExtendedDataInts">
          <Item Value="1"/>
        </AttrArray>
      </Variable>
      <Variable
        Name="BINDStartTimestamp"
        Kind="viewcriteria"
        Type="java.lang.Float">
        <AttrArray Name="ExtendedDataInts">
          <Item Value="3"/>
        </AttrArray>
      </Variable>
      <Variable
        Name="BINDEndTimestamp"
        Kind="viewcriteria"
        Type="java.lang.Float">
        <AttrArray Name="ExtendedDataInts">
          <Item Value="4"/>
        </AttrArray>
      </Variable>
      <SQLQuery>
        <![CDATA[SELECT
        ERRORLOG.SGUID GUID,
        ERRORLOG.LLOGTYPE LOGTYPE,
        ERRORLOG.DTIMESTAMP TIMESTAMP,
        ERRORLOG.SSERVERNAME SERVERNAME,
        ERRORLOG.SAPPNAME APPNAME,
        ERRORLOG.SXMLERROR XMLERROR
    FROM
        ERRORLOG ERRORLOG]]>
      </SQLQuery>
      <ViewAttribute
        Name="Guid"
        IsUpdateable="false"
        IsPersistent="false"
        IsNotNull="true"
        PrecisionRule="true"
        Precision="40"
        Scale="0"
        Type="java.lang.String"
        ColumnType="NVARCHAR2"
        AliasName="GUID"
        Expression="GUID"
        SQLType="VARCHAR">
        <DesignTime>
          <Attr Name="_DisplaySize" Value="40"/>
        </DesignTime>
      </ViewAttribute>
      <ViewAttribute
        Name="LogType"
        IsUpdateable="false"
        IsPersistent="false"
        PrecisionRule="true"
        Precision="6"
        Scale="0"
        Type="java.lang.Integer"
        ColumnType="NUMBER"
        AliasName="LOGTYPE"
        Expression="LOGTYPE"
        SQLType="INTEGER">
        <DesignTime>
          <Attr Name="_DisplaySize" Value="7"/>
        </DesignTime>
      </ViewAttribute>
      <ViewAttribute
        Name="Timestamp"
        IsUpdateable="false"
        IsPersistent="false"
        PrecisionRule="true"
        Precision="54"
        Scale="0"
        Type="java.lang.Float"
        ColumnType="FLOAT"
        AliasName="TIMESTAMP"
        Expression="TIMESTAMP"
        SQLType="FLOAT">
        <DesignTime>
          <Attr Name="_DisplaySize" Value="18"/>
        </DesignTime>
        <Dependencies>
          <Item
            Value="OccuredAt"/>
        </Dependencies>
      </ViewAttribute>
      <ViewAttribute
        Name="ServerName"
        IsUpdateable="false"
        IsPersistent="false"
        PrecisionRule="true"
        Precision="64"
        Scale="0"
        Type="java.lang.String"
        ColumnType="NVARCHAR2"
        AliasName="SERVERNAME"
        Expression="SERVERNAME"
        SQLType="VARCHAR">
        <DesignTime>
          <Attr Name="_DisplaySize" Value="64"/>
        </DesignTime>
      </ViewAttribute>
      <ViewAttribute
        Name="AppName"
        IsUpdateable="false"
        IsPersistent="false"
        PrecisionRule="true"
        Precision="10"
        Scale="0"
        Type="java.lang.String"
        ColumnType="NVARCHAR2"
        AliasName="APPNAME"
        Expression="APPNAME"
        SQLType="VARCHAR">
        <DesignTime>
          <Attr Name="_DisplaySize" Value="10"/>
        </DesignTime>
      </ViewAttribute>
      <ViewAttribute
        Name="XmlError"
        IsUpdateable="false"
        IsQueriable="false"
        IsPersistent="false"
        PrecisionRule="true"
        Type="java.lang.String"
        ColumnType="LONGVARCHAR"
        AliasName="XMLERROR"
        Expression="XMLERROR"
        SQLType="VARCHAR"/>
      <ViewAttribute
        Name="OccuredAt"
        IsUpdateable="false"
        IsSelected="false"
        IsPersistent="false"
        PrecisionRule="true"
        Type="java.sql.Date"
        ColumnType="DATE"
        AliasName="VIEW_ATTR"
        SQLType="DATE"/>
      <ViewAttribute
        Name="Summary"
        IsUpdateable="false"
        IsSelected="false"
        IsPersistent="false"
        PrecisionRule="true"
        Type="java.lang.String"
        ColumnType="VARCHAR2"
        AliasName="VIEW_ATTR"
        SQLType="VARCHAR"/>
      <ViewAttribute
        Name="TechnicalError"
        IsUpdateable="false"
        IsSelected="false"
        IsPersistent="false"
        PrecisionRule="true"
        Type="java.lang.String"
        ColumnType="VARCHAR2"
        AliasName="VIEW_ATTR"
        SQLType="VARCHAR"/>
      <ViewCriteria
        Name="MessagesROVOCriteria"
        ViewObjectName="model.bc4j.queries.admin.MessagesROVO"
        Conjunction="AND">
        <Properties>
          <CustomProperties>
            <Property
              Name="displayOperators"
              Value="InAdvancedMode"/>
            <Property
              Name="autoExecute"
              Value="false"/>
            <Property
              Name="allowConjunctionOverride"
              Value="true"/>
            <Property
              Name="showInList"
              Value="false"/>
            <Property
              Name="mode"
              Value="Basic"/>
          </CustomProperties>
        </Properties>
        <ViewCriteriaRow
          Name="vcrow6"
          UpperColumns="1">
          <ViewCriteriaItem
            Name="Timestamp"
            ViewAttribute="Timestamp"
            Operator="BETWEEN"
            Conjunction="AND"
            Required="Optional">
            <ViewCriteriaItemValue
              Name="MessagesROVOCriteria_vcrow6_Timestamp_vcval0"
              Value=":BINDStartTimestamp"
              IsBindVarValue="true"/>
            <ViewCriteriaItemValue
              Name="MessagesROVOCriteria_vcrow6_Timestamp_vcval1"
              Value=":BINDEndTimestamp"
              IsBindVarValue="true"/>
          </ViewCriteriaItem>
          <ViewCriteriaItem
            Name="ServerName"
            ViewAttribute="ServerName"
            Operator="="
            Conjunction="AND"
            Value=":BINDServerName"
            IsBindVarValue="true"
            Required="Optional"/>
          <ViewCriteriaItem
            Name="MessagesROVOCriteria_vcrow6_AppName"
            ViewAttribute="AppName"
            Operator="="
            Conjunction="AND"
            Value=":BINDApplicationName"
            IsBindVarValue="true"
            Required="Optional"/>
        </ViewCriteriaRow>
      </ViewCriteria>
      <AttrArray Name="KeyAttributes">
        <Item Value="Guid"/>
      </AttrArray>
      <ResourceBundle>
        <XliffBundle
          id="model.resource.ViewObjectsBundle_en"/>
      </ResourceBundle>
    </ViewObject>

    ADF does not support VO Range Paging with MS SQL Server. ADF supports VO Range Paging only with Oracle DB:
    Oracle ADF Business Components with Multiple Databases
    As far as the document above is not quite clear, I took a look inside the source code of the methods buildRangePagingQuery(...) of classes oracle.jbo.server.ViewObjectImpl, oracle.jbo.server.BaseSQLBuildeImpl, oracle.jbo.server.SQLServerSQLBuilderImpl and oracle.jbo.server.OracleSQLBuilderImpl (ADF 11.1.1.7) in order to confirm my statement.
    In my opinion, it is possible to add Range Paging support for a SQLServer-backed VO by implementing a custom VO class and overriding the method ViewObjectImpl.buildRangePagingQuery(...). Your method implementation should take into account the specifics of MS SQL Server and its SQL syntax.
    Dimitar
    Message was edited by: DimitarDimitrov
    P.S. The oracle.jbo.server.SQLServerSQLBuilderImpl class does not implement its own buildRangePagingQuery() method and uses the method implementation from its base class oracle.jbo.server.BaseSQLBuilderImpl, The base implementation just returns the original VO query intact. This is the reason you get the same rows as from the 1st page when you try to navigate through the pages.

  • Print a report to a printer (server-side printing) Error

    <p>Hi ran into some hiccups following a sample from crxi_r2_jrc_desktop_samples</p><p>JRCPrintReport</p><p>I am attempting to send a report for printing on a Thick Client Application.</p><p>This is the error.</p><p align="left">- All configurations cleared.</p><p align="left">- CRConfig.xml not found</p><u><font color="#000080">com.crystaldecisions.sdk.occa.report.lib.ReportSDKPrinterException</font></u><font color="#ff0000">: Printer name could not be set: Brother MFC-8840D Printer on Megatron---- Error code:-2147215357 Error code name:internal</font><font color="#ff0000"> <p align="left">at com.crystaldecisions.sdk.occa.report.lib.ReportSDKPrinterException.throwReportSDKPrinterException(Unknown Source)</p><p align="left">at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.printReport(Unknown Source)</p><p align="left">at com.crystaldecisions.reports.sdk.PrintOutputController.printReport(Unknown Source)</p><p>at JRCPrintReport.main(<u><font color="#000080">JRCPrintReport.java:78</font></u><font color="#ff0000">)</font></p><p>... </p><p>...</p></font><p><font color="#ff0000"> The printer name is verified to be correct.</font></p><p><font color="#ff0000">I tried to place ReportPrinter.jar at the first order but to no avail.</font></p><p><font color="#ff0000">Orbid</font></p>

    Sean:
    This is similar to mine which i followed from the sample.
    Code:
    <font color="#7f0055"><p align="left">public <strong><font color="#7f0055">class</font> JRCPrintReport
    <font color="#7f0055">static</font> final String <font color="#0000c0">REPORT_NAME</font> = "JRCPrintReport.rpt";
    <font color="#7f0055">public</font> static <font color="#7f0055">void</font> main(String[] args)
    <font color="#7f0055">try</font>
    //Open report.
    ReportClientDocument reportClientDoc = <font color="#7f0055">new</font> ReportClientDocument();
    reportClientDoc.open(<font color="#0000c0">REPORT_NAME</font>, 0);
    //Create and set print options.
    PrintReportOptions printOptions = <font color="#7f0055">new</font> PrintReportOptions();
    printOptions.setPrinterName("
    Megatron
    1160-TID");
    printOptions.setJobTitle("Sample Print Job from JRC.");
    printOptions.setPrinterDuplex(PrinterDuplex.<font color="#0000c0">horizontal</font>);
    printOptions.setPaperSource(PaperSource.<font color="#0000c0">auto</font>);
    printOptions.setPaperSize(PaperSize.<font color="#0000c0">paperA4</font>);
    printOptions.setNumberOfCopies(1);
    printOptions.setCollated(<font color="#7f0055">false</font>);
    PrintReportOptions.PageRange printPageRange =
    <font color="#7f0055">new</font> PrintReportOptions.PageRange(1, 1);
    printOptions.addPrinterPageRange(printPageRange);
    //Print report.
    reportClientDoc.getPrintOutputController()
    .printReport(printOptions);
    //Release report.
    reportClientDoc.close();
    System.<font color="#0000c0">out</font>.println("Successfully send report to the printer.");
    <font color="#7f0055">catch</font> (ReportSDKException ex)
    ex.printStackTrace();
    Any views on this error?
    Printer name could not be set:
    Megatron1160-TID---- Error code:-2147215357 Error code name:internal
    Anybody else having problems with sending a report to a printer?
    Orbid

  • Unable to open Document from Asset Business Package

    Hi,
    We have installed Asset Business Package in portal. Almost everything is working fine. But when we try to open a document (PDF ) attached to an asset by clicking the document link in the page, a new browser window opens with a text inside. The PDF  does not appear.
    The text is actually a URL. If we copy this and paste in any browser window, it opens the actual document.
    e.g. when we click the document link, the browser opens with the following text written inside it -
    http://<DMS Server>:<Port>/contentserver/contentserver.dll?get;pVersion=0046&contRep=ZKPRO&docId=DD259BBB070E4BF182370017085D4BF5&compId=2008_SAP_Multi-resource-planning.pdf;accessMode=r&authId=CN%3DDCWW,OU%3DDCWW,O%3DmySAP.comWorkplace,C%3DDE&expiration=20080519170225&secKey=MIIBLwYJKoZIhvcNAQcCoIIBIDCCARwCAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHATGB%2FDCB%2BQIBATBOMEkxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNteVNBUC5jb20gV29ya3BsYWNlMQ0wCwYDVQQLEwREQ1dXMQ0wCwYDVQQDEwREQ1dXAgEAMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wODA1MTkxNTAyMjVaMCMGCSqGSIb3DQEJBDEWBBT3kV9haN8uzlLYKfDyN1KaVmD3MzAJBgcqhkjOOAQDBC8wLQIVAM0lkZG0ywkl%2FlTwWF0ubVul%2FXp3AhQBqnvX1EMBFZiK5U9TA%2FD5mWJdXQ%3D%3D
    But if we copy this text and open it in another browser, the actual document opens up.
    Can you please help me in this issue? How the document will open up automatically without showing the document URL.
    Thanks and Regards,
    Sudip

    Hi,
    We have installed Asset Business Package in portal. Almost everything is working fine. But when we try to open a document (PDF ) attached to an asset by clicking the document link in the page, a new browser window opens with a text inside. The PDF  does not appear.
    The text is actually a URL. If we copy this and paste in any browser window, it opens the actual document.
    e.g. when we click the document link, the browser opens with the following text written inside it -
    http://<DMS Server>:<Port>/contentserver/contentserver.dll?get;pVersion=0046&contRep=ZKPRO&docId=DD259BBB070E4BF182370017085D4BF5&compId=2008_SAP_Multi-resource-planning.pdf;accessMode=r&authId=CN%3DDCWW,OU%3DDCWW,O%3DmySAP.comWorkplace,C%3DDE&expiration=20080519170225&secKey=MIIBLwYJKoZIhvcNAQcCoIIBIDCCARwCAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHATGB%2FDCB%2BQIBATBOMEkxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNteVNBUC5jb20gV29ya3BsYWNlMQ0wCwYDVQQLEwREQ1dXMQ0wCwYDVQQDEwREQ1dXAgEAMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wODA1MTkxNTAyMjVaMCMGCSqGSIb3DQEJBDEWBBT3kV9haN8uzlLYKfDyN1KaVmD3MzAJBgcqhkjOOAQDBC8wLQIVAM0lkZG0ywkl%2FlTwWF0ubVul%2FXp3AhQBqnvX1EMBFZiK5U9TA%2FD5mWJdXQ%3D%3D
    But if we copy this text and open it in another browser, the actual document opens up.
    Can you please help me in this issue? How the document will open up automatically without showing the document URL.
    Thanks and Regards,
    Sudip

  • Page Exporter Utility (PEU) 5 Script

    I love this script, It really has potential to shave valuable time off of our production (exporting Hundreds of pages manually to single files is tedious and time consuming). The problem I'm having is I'm hesitant to us it because it dosn't show warnings when there is a missing link or font. There's also no warning when it overwrites a file. My question is dose anyone know how to unsuppress the warnings? I've looked over the script and don't see anything that is actively suppressing them.
    Thanks
    Dan
    // PageExporterUtility5.0.js
    // An InDesign CS JavaScript
    // 08 NOV 2007
    // Copyright (C) 2007  Scott Zanelli. Lonelytree Software. (www.lonelytreesw.com)
    // Coming to you from Quincy, MA, USA
    // This program is free software; you can redistribute it and/or
    // modify it under the terms of the GNU General Public License
    // as published by the Free Software Foundation; either version 2
    // of the License, or (at your option) any later version.
    // This program is distributed in the hope that it will be useful,
    // but WITHOUT ANY WARRANTY; without even the implied warranty of
    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    // GNU General Public License for more details.
    // You should have received a copy of the GNU General Public License
    // along with this program; if not, write to the Free Software
    // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
    var peuINFO = new Array();
    peuINFO["csVersion"] = parseInt(app.version);
    // Save the old interaction level
    if(peuINFO.csVersion == 3) { //CS1
        peuINFO["oldInteractionPref"] = app.userInteractionLevel;
        app.userInteractionLevel = UserInteractionLevels.interactWithAll;
    else { //CS2+
        peuINFO["oldInteractionPref"] = app.scriptPreferences.userInteractionLevel;
        app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
    // See if a document is open. If not, exit
    if((peuINFO["numDocsToExport"] = app.documents.length) == 0){
        byeBye("Please open a document and try again.",true);
    // Global Variable Initializations
    var VERSION_NAME = "Page Exporter Utility 5.0"
    var pseudoSingleton = 0;
    var progCurrentPage = 0;// Used for progress bar
    var progTotalPages = 0; // Used for progress bar
    var commonBatchINFO = getNewTempENTRY(); // Used if "Set For All Batch Jobs" is selected
    commonBatchINFO["infoLoaded"] = false;
    peuInit(); // Initialize commonly needed info
    // Store information needed for batch processing (valid for single also)
    var printINFO = new Array();
    // Get all needed info by looping for each document being exported
    for(currentDoc = 0; currentDoc < peuINFO.numDocsToExport; currentDoc++) {
        // Get name of document and set it as the base name
        // minus the extention if it exists
        var tempENTRY = getNewTempENTRY(); // "Struct" for current document info
        tempENTRY.theDoc = app.documents[currentDoc]
        tempENTRY.singlePage = (tempENTRY.theDoc.documentPreferences.pagesPerDocument==1)?true:false;
        tempENTRY.getOut = true;
        var baseName = (tempENTRY.theDoc.name.split(".ind"))[0];
        // Display the dialog box and loop for correct info
        if((!commonBatchINFO.infoLoaded && peuINFO.batchSameForAll) || (!peuINFO.batchSameForAll) ){// get all info
            do{
                tempENTRY.getOut = true; // For handling input errors
                var mainDialog = createMainDialog(tempENTRY.theDoc.name, currentDoc+1, peuINFO.numDocsToExport);
                // Exit if cancel button chosen
                if(!mainDialog.show() ){
                    mainDialog.destroy();
                    byeBye("Exporting has canceled by user.",peuINFO.sayCancel);
                if(formatTypeRB.selectedButton == 4 - peuINFO.adjustForNoPS){
                    changePrefs();
                    tempENTRY.getOut = false;
                    continue;
                // Read info from dialog items and keep as defaults and place in tempENTRY
                peuINFO.defaultDir = outputDirs.selectedIndex;
                // The index of the selected directory is the same as the
                // index in the array of directories.
                tempENTRY.outDir = peuINFO.dirListArray[peuINFO.defaultDir];
                // Type of renaming to do
                tempENTRY.nameConvType = namingConvention.selectedButton
                // The base name to add page info to
                tempENTRY.baseName = removeColons(removeSpaces(newBaseName.editContents) );
                // The start [and end] page numbers
                var startEndPgs = startEndPgs.editContents;
                // Wether to do spreads or not
                peuINFO.doSpreadsON = (doSpreads.checkedState)?1:0;
                tempENTRY.doSpreadsON = peuINFO.doSpreadsON;
                // Wether to send entire file as one document
                peuINFO.doOneFile = (oneFile.checkedState)?1:0;
                tempENTRY.doOneFile = peuINFO.doOneFile;
                // Export format type
                tempENTRY.formatType = formatTypeRB.selectedButton + peuINFO.adjustForNoPS;
                // Set persistence during warnings
                peuINFO.editStartEndPgs = startEndPgs;
                baseName = tempENTRY.baseName;
                peuINFO.exportDefaultType = tempENTRY.formatType;
                // Determine if page replacement token exists when the page token option is used
                if(peuINFO.pageNamePlacement == 2){
                    var temp = tempENTRY.baseName.indexOf("<#>");
                    if(temp == -1){//Token isn't there
                        alert("There is no page item token (<#>) in the base name. Please add one or change the page naming placement preference.");
                        tempENlert.getOut = false;
                        pseudoSingleton--; // Allow prefs to be accessed again, but just once
                        continue;
                    else
                        pseudoSingleton++;
                else // Try to remove any <#>s as a precaution
                    tempENTRY.baseName = tempENTRY.baseName.replace(/<#>/g,"");   
                // Layer Versioning & Batch options
                if(currentDoc < 1){
                    peuINFO.layersON = (doLayers.checkedState)?1:0;
                    if(peuINFO.numDocsToExport > 1){
                        peuINFO.batchSameForAll = (commonBatch.checkedState)?1:0;
                        peuINFO.batchON = (doBatch.checkedState)?1:0;
                        if(!peuINFO.batchON)
                            peuINFO.numDocsToExport = 1;
                //Check if spreads chosen with 'Add ".L"' option as this isn't supported.
                if(peuINFO.doSpreadsON && tempENTRY.nameConvType == 1){
                    alert ("Spreads cannot be used with the 'Add \".L\"' option.\nThis combination is not supported. (1.1)");
                    tempENTRY.nameConvType = 0;
                    tempENTRY.getOut = false;
                    continue;
                else if(peuINFO.doSpreadsON && tempENTRY.nameConvType == 4){
                    alert ("Spreads cannot be used with the 'Numeric Override' option.\nThis combination is not supported. (1.2)");
                    tempENTRY.nameConvType = 0;
                    tempENTRY.getOut = false;
                    continue;
                // Check if "Send Entire File At Once" is selected with JPG or EPS
                if(peuINFO.doOneFile && tempENTRY.formatType > 1 ){
                    alert ("The 'Send Entire File At Once' option can only be used with PostScript or PDF formats. (1.3)");
                    tempENTRY.getOut = false;
                    continue;
                // Check if: batch printing and using the "Same for all jobs options" and a page range other than "All" was used
                if(peuINFO.doBatch && peuINFO.batchSameForAll && startEndPgs != "All"){
                    alert ("The 'Set For All Batch Jobs' option can only be used with a Page Range of 'All'. Page Range has been reset to 'All'. (1.4)");
                    startEndPgs = "All";
                // Create page info, skip if doing entire file as one
                var tempPageCount = 0;
                if(tempENTRY.doOneFile)
                    tempPageCount = 1;
                else{
                    // Get names of all the pages. Needed when pages are named using sectioning
                    tempENTRY = recordPgNames(tempENTRY);
                    // Check Page Validity and get Page counts of entered section(s)
                    var temp = checkPages(tempENTRY, startEndPgs);
                    tempENTRY = temp[0];
                    tempPageCount = temp[1];
                    temp = null; // Free it up
            } while(!tempENTRY.getOut);
            // Remove dialog from memory
            mainDialog.destroy();
            // Determine if tag will fit correctly
            tempENTRY.useTag = usePgInfoTag(tempENTRY.theDoc.viewPreferences.horizontalMeasurementUnits,tempENTRY.theDoc.documentPreferences.pageWidth);
                // Get the format info for this document
            switch(tempENTRY.formatType){
                case 0://PS
                tempENTRY.psINFO = getPSoptions(tempENTRY.theDoc.name.split(".ind")[0]);
                break;
                case 1://PDF
                tempENTRY.pdfPRESET = getPDFoptions(tempENTRY);
                break;
                case 2: // EPS Formatting
                tempENTRY.epsINFO = getEPSoptions(tempENTRY.theDoc.name.split(".ind")[0]);
                peuINFO.origSpread = app.epsExportPreferences.epsSpreads;// Used to reset to original state when done
                app.epsExportPreferences.epsSpreads = peuINFO.doSpreadsON;
                break;
                case 3: // JPEG Formatting
                tempENTRY.jpegINFO = getJPEGoptions(tempENTRY.theDoc.name.split(".ind")[0]);
                break;
            // If Specific Directory was chosen for the output directory, get it now
            if(peuINFO.defaultDir == 0){
                tempENTRY.outDir = getDirectory("Please select the output directory:",peuINFO.startingDirectory);
                if(tempENTRY.outDir != null)
                    tempENTRY.outDir += "/";
                else
                    byeBye("Exporting has been canceled by user.", peuINFO.sayCancel);
            // Set the common elements for all batch jobs if it was selected
            if(!commonBatchINFO.infoLoaded && peuINFO.batchSameForAll){
                commonBatchINFO.infoLoaded = true;
                commonBatchINFO.pageNamePlacement = tempENTRY.pageNamePlacement;
                commonBatchINFO.outDir = tempENTRY.outDir;
                commonBatchINFO.nameConvType = tempENTRY.nameConvType
                commonBatchINFO.doSpreadsON = tempENTRY.doSpreadsON;
                commonBatchINFO.doOneFile = tempENTRY.doOneFile;
                commonBatchINFO.formatType = tempENTRY.formatType;
                commonBatchINFO.psINFO = tempENTRY.psINFO;
                commonBatchINFO.pdfPRESET = tempENTRY.pdfPRESET
                commonBatchINFO.epsINFO = tempENTRY.epsINFO
                commonBatchINFO.jpegINFO = tempENTRY.jpegINFO;
        } // End each/first of batch
        else{ // Get the base name for other batch jobs
            do{
                tempENTRY.getOut = true;
                var nameDialog = app.dialogs.add({name:(VERSION_NAME + ": Base Name for \"" + tempENTRY.theDoc.name + "\"" + ((peuINFO.numDocsToExport==1)?"":" (" + (currentDoc+1) + " of " + peuINFO.numDocsToExport + " documents)") ), canCancel:true} );
                with (nameDialog){
                    with (dialogColumns.add() ){
                        with(dialogRows.add() ){
                        staticTexts.add({staticLabel:"Enter the Base Name for \"" + tempENTRY.theDoc.name + "\""} );
                        var newBaseName = textEditboxes.add({editContents:baseName, minWidth:135} );
                        with(dialogRows.add() )
                            staticTexts.add({staticLabel:"", minWidth:400} );
                if(!nameDialog.show() ){
                    nameDialog.destroy();
                    byeBye("User canceled export.",peuINFO.sayCancel);
                else{
                    tempENTRY.baseName = removeColons(removeSpaces(newBaseName.editContents) );
                    nameDialog.destroy();
                    // Determine if page replacement token exists when the page token option is used
                    if(peuINFO.pageNamePlacement == 2){
                        var temp = tempENTRY.baseName.indexOf("<#>");
                        if(temp == -1){//Token isn't there
                            alert("There is no page item token (<#>) in the base name. Please add one or click cancel in the next dialog box.");
                            tempENTRY.getOut = false;
                    else // Try to remove any <#>s as a precaution
                        tempENTRY.baseName = tempENTRY.baseName.replace(/<#>/g,"");   
            }while(!tempENTRY.getOut);
            // Get names of all the pages. Needed when pages are named using sectioning
            tempENTRY = recordPgNames(tempENTRY);
            // Set pgStart and pgEnd, forcing "All" pages to output
            tempENTRY = (checkPages(tempENTRY, "All"))[0];
            // The page count is all pages due to common batching
            tempPageCount = tempENTRY.theDoc.pages.length;
            // This info is common, get it from commonBatchINFO:
            tempENTRY.pageNamePlacement = commonBatchINFO.pageNamePlacement;
            tempENTRY.outDir = commonBatchINFO.outDir;
            tempENTRY.nameConvType = commonBatchINFO.nameConvType
            tempENTRY.doSpreadsON = commonBatchINFO.doSpreadsON;
            tempENTRY.doOneFile = commonBatchINFO.doOneFile;
            tempENTRY.formatType = commonBatchINFO.formatType;
            tempENTRY.psINFO = commonBatchINFO.psINFO;
            tempENTRY.pdfPRESET = commonBatchINFO.pdfPRESET
            tempENTRY.epsINFO = commonBatchINFO.epsINFO
            tempENTRY.jpegINFO = commonBatchINFO.jpegINFO;
        // Get any layering info
        if(peuINFO.layersON){
            tempENTRY.layerINFO = layerManager(tempENTRY.theDoc);
            if (tempENTRY.layerINFO == null) // Only one layer, turn it off for this doc
                tempENTRY.layersON = false;
            else
                tempENTRY.layersON = true;
        // Sum up pages for the grand total for use in progress bar
        var temp = 1;
        if(peuINFO.doProgressBar && tempENTRY.layersON){
            // Figure tally for progress bar to include versions
            for(i=0;i < tempENTRY.layerINFO.verControls.length; i++)
                if (tempENTRY.layerINFO.verControls[i] == 1)
                    temp++;
            if(!peuINFO.baseLaersAsVersion)
                temp--;
        progTotalPages += (tempPageCount*temp);
        // All info for this doc is finally gathered, add it to the main printINFO array
        printINFO.push(tempENTRY);
        // Only one chance to change prefs: trigger singleton
        pseudoSingleton++;
    }// end of main for loop
    savePrefs(); // Record any changes
    // Initiallize progress bar if available
    if(peuINFO.doProgressBar)
        app.createProgressBar("Exporting Pages...", 0, progTotalPages, true);
    // Export by looping through all open documents if using batch option, otherwise just the front document is exported
    for(currentDoc = 0; currentDoc < printINFO.length; currentDoc++){
        var currentINFO = printINFO[currentDoc];
        // Set message in progress bar if available
        if(peuINFO.doProgressBar){
                var progCancel = app.setProgress(currentINFO.theDoc.name);
                if(progCancel)
                    byeBye("User canceled export.",peuINFO.sayCancel);
        // Set format options here so it's done just once per document
        setExportOption(currentINFO);
        // "Do one file" or PS/PDF with one page:
        if (currentINFO.doOneFile || currentINFO.singlePage){
            // Remove page token if it was entered and this name positioning option is set
            currentINFO.baseName = currentINFO.baseName.replace(/<#>/g,"");
            if(currentINFO.layersON){
                var theLayers = currentINFO.theDoc.layers;
                var baseControls = currentINFO.layerINFO.baseControls;
                var versionControls = currentINFO.layerINFO.verControls;
                var lastVersion = -1;
                // Loop for versioning
                 for(v = 0; v < versionControls.length; v++){
                    if(!versionControls[v])
                        continue;
                    if(lastVersion != -1)// Turn the last layer back off
                        theLayers[lastVersion].visible = false;
                    lastVersion = v;
                    theLayers[v].visible = true;
                    currentINFO.outfileName = addPartToName(currentINFO.baseName, theLayers[v].name, peuINFO.layerBeforeON)
                    // Export this version
                    exportPage(currentINFO, PageRange.allPages);
                    // Advance progress bar if available
                    if(peuINFO.doProgressBar)
                        advanceBar();
                // If Base layer/s is/are to be output as a version, do it now
                if(peuINFO.baseLaersAsVersion){
                    lastVersion = -1;
                    // Turn off all versioning layers
                    for(v = 0; v < currentINFO.layerINFO.baseControls.length; v++){
                        if(currentINFO.layerINFO.baseControls[v])// its a base layer, keep track of last base version layer number
                            lastVersion = v;
                        else
                            theLayers[v].visible = false;
                    if (!lastVersion == -1){// Only export if there was a base version
                        currentINFO.outfileName = addPartToName(currentINFO.baseName, theLayers[lastVersion].name, peuINFO.layerBeforeON);
                        // Export the base layer(s)
                        exportPage(currentINFO, PageRange.allPages);
                        // Advance progress bar if available
                        if(peuINFO.doProgressBar)
                            advanceBar();
            else{ // No layer versioning, just export
                currentINFO.outfileName = currentINFO.baseName;
                // Export the base layer(s)
                exportPage(currentINFO, PageRange.allPages);
                // Advance progress bar if available
                if(peuINFO.doProgressBar)
                    advanceBar();
            if(!peuINFO.batchON)
                byeBye("Done exporting as a single file.",true);
        else{ // Do single pages/spreads
            if (!currentINFO.hasNonContig)
                // Pages are contiguous, can just export
                outputPages(currentINFO.pgStart, currentINFO.pgEnd, currentINFO);
            else{ // Export non-contiguous
                // Loop through array of page sections
                for (ii = 0; ii < currentINFO.nonContigPgs.length; ii++){
                    temp = currentINFO.nonContigPgs[ii];
                    // Here we handle the start/end pages for any non-contig that has "-"
                    if (temp.indexOf("-") != -1){
                        temp2 = temp.split("-");
                        outputPages(temp2[0],temp2[1], currentINFO);
                    else // The non-contiguous page is a single page
                        outputPages(temp, temp, currentINFO);
        // Set the spread settings back to what it was originally
        try{
            switch (currentINFO.formatType){
                case 0: // PostScript Formatting
                    theDoc.printPreferences.printSpreads = peuINFO.origSpread;
                    break;
                case 1: // PDF Formatting
                    currentINFO.pdfPRESET.exportReaderSpreads = peuINFO.origSpread;
                    break;
                case 2: // EPS Formatting
                    app.epsExportPreferences.epsSpreads = peuINFO.origSpread;
                    break;
                case 3: // JPEG Formatting
                    app.jpegExportPreferences.exportingSpread = peuINFO.origSpread;
                    break;
        catch(e){/*Just ignore it*/}
    byeBye("The requested pages are done being exported.",true); // Last line of script execution
    /*         Operational Functions           */
    * Handle exporting
    function outputPages(pgStart, pgEnd, currentINFO){
        var pgRange;
        var layerName = "";
        var numVersions;
        var currentPage;
        var lastVersion = -1;
        var numericallyLastPage;
        if (currentINFO.layersON){
            var theLayers = currentINFO.theDoc.layers;
            var baseControls = currentINFO.layerINFO.baseControls;
            var versionControls = currentINFO.layerINFO.verControls;
            numVersions = versionControls.length;
            // Compensate for base layers as a version
            if(peuINFO.baseLaersAsVersion)
                numVersions++;
        else
            numVersions = 1;
        for (v = 0; v < numVersions; v++){
            if(currentINFO.layersON){
                if(v == (numVersions - 1) && peuINFO.baseLaersAsVersion){
                    var currentLayer = -1;
                    // Base layer(s) are to be output as a version
                    // Turn off all versioning layers
                    for(slbm = 0; slbm < baseControls.length; slbm++){
                        if(baseControls[slbm])// its a base layer, use its name for page name
                            currentLayer = slbm;
                        else
                            theLayers[slbm].visible = false;
                    // Check if there was no base layer at all
                    if (currentLayer == -1)
                        layerName = "**NO_BASE**"
                    else
                        layerName = theLayers[currentLayer].name;
                else{
                    if(!versionControls[v])
                        continue;
                    if(lastVersion != -1)// Turn the last layer back off
                        theLayers[lastVersion].visible = false;
                    lastVersion = v;
                    theLayers[v].visible = true;
                    layerName = theLayers[v].name;
            if (currentINFO.nameConvType == 4){
                currentPage = pgStart;
                numericallyLastPage = pgEnd;
            else if (currentINFO.doSpreadsON){
                currentPage = pgStart - 1;
                numericallyLastPage = pgEnd;
            else {
                currentPage = getPageOffset(pgStart, currentINFO.pageNameArray , currentINFO.pageRangeArray);
                numericallyLastPage = getPageOffset(pgEnd, currentINFO.pageNameArray, currentINFO.pageRangeArray);
            if(layerName != "**NO_BASE**"){
                do{
                    currentINFO.outfileName = getPageName(currentPage, layerName, currentINFO);
                    if (currentINFO.doSpreadsON){
                        pgRange = currentINFO.pageRangeArray[getPageOffset(currentINFO.theDoc.spreads[currentPage].pages[0].name, currentINFO.pageNameArray, currentINFO.pageRangeArray)];
                    else if (currentINFO.nameConvType == 4)
                        pgRange = currentINFO.pageRangeArray[currentPage-1];
                    else
                        pgRange = currentINFO.pageRangeArray[currentPage];
                    // Do the actual export:
                    exportPage(currentINFO, pgRange);
                    // Update progress bar if available
                    if(peuINFO.doProgressBar)
                        advanceBar();
                    currentPage++;
                } while(currentPage <= numericallyLastPage);
    * Export the page
    function exportPage(currentINFO, pgRange){
        var outFile = currentINFO.outDir + currentINFO.outfileName;
        switch (currentINFO.formatType){
            case 0: // PostScript Formatting
                with(currentINFO.theDoc.printPreferences){
                    printFile = new File(outFile + ((currentINFO.psINFO.ext)?".ps":""));
                    pageRange = pgRange;
                // Needed to get around blank pages using separations
                try{
                    currentINFO.theDoc.print(false);
                catch(e){/*Just skip it*/}
                break;
            case 1: // PDF Formatting
                app.pdfExportPreferences.pageRange = pgRange;
                currentINFO.theDoc.exportFile(ExportFormat.pdfType, (new File(outFile + ".pdf")), false, currentINFO.pdfPRESET);
                break;
            case 2: // EPS Formatting
                app.epsExportPreferences.pageRange = pgRange;
                currentINFO.theDoc.exportFile(ExportFormat.epsType, (new File(outFile + ".eps")), false);
                break;
            case 3: // JPEG Formatting
                if(pgRange == PageRange.allPages){
                    app.jpegExportPreferences.jpegExportRange = ExportRangeOrAllPages.exportAll;
                else{
                    app.jpegExportPreferences.jpegExportRange = ExportRangeOrAllPages.exportRange;
                    app.jpegExportPreferences.pageString = pgRange;
                currentINFO.theDoc.exportFile(ExportFormat.jpg, (new File(outFile + ".jpg")), false);
                break;
    * Create a name for the page being exported
    function getPageName(currentPage, layerName, currentINFO){
        var pgRename = "";
        if (currentINFO.doSpreadsON)
            currentINFO["currentSpread"] = currentINFO.theDoc.spreads[currentPage].pages;
        switch (currentINFO.nameConvType){
            case 3: // Odd/Even pages/spreads = .LA.F/LA.B, LB.F/LB.B ...
                pgRename = makeLotName(currentPage+1, peuINFO.subType);
                break;
            case 2: // Odd/Even pages/spreads = .F/.B
                pgRename = ((currentPage+1)%2 == 0) ? "B" : "F";
                break;
            case 1: // Add ".L" to the page name
                pgRename = "L" + currentINFO.pageNameArray[currentPage];
                break;
            case 0: case 4:// As is or Numeric Override
                            // Optionally add "P" and any zeros if options chosen and is numerically named
                            // otherwise, just the "seperatorChar" is added to page name
                if (currentINFO.doSpreadsON){
                    // Loops through number of pages per spread
                    // and adds each page name to the final name (P08.P01)
                    for (j = 0; j < currentINFO.currentSpread.length; j++){
                        if(currentINFO.currentSpread[j].appliedSection.includeSectionPrefix)
                            var tempPage = currentINFO.pageRangeArray[getPageOffset(currentINFO.currentSpread[j].name, currentINFO.pageNameArray, currentINFO.pageRangeArray)];
                        else
                            var tempPage = currentINFO.pageNameArray[getPageOffset(currentINFO.currentSpread[j].name, currentINFO.pageNameArray, currentINFO.pageRangeArray)];
                        var tempPageNum = parseInt(tempPage,10);
                        /* If section name starts with a number, need to compare length of orig vs parsed
                         * to see if the page name is solely a number or a combo num + letter, etc.
                        if (! isNaN(tempPageNum) && ((""+tempPage).length == (""+tempPageNum).length )){
                            if (peuINFO.addZeroON)
                                tempPage = addLeadingZero(tempPageNum, currentINFO.theDoc.pages.length);
                            if (peuINFO.addPon)
                                tempPage = "P" + tempPage;
                        pgRename = (j==0) ? tempPage : pgRename + peuINFO.charList[peuINFO.seperatorChar] + tempPage;
                else {
                    // Create a new name for an individual page
                    if (currentINFO.nameConvType == 4)
                        pgRename = currentPage;
                    else
                        pgRename = currentINFO.pageNameArray[currentPage];
                    if (! isNaN(parseInt(pgRename,10)) && (""+pgRename).length == (""+parseInt(pgRename,10)).length) {
                        if (peuINFO.addZeroON)
                            pgRename = addLeadingZero(pgRename, currentINFO.theDoc.pages.length);
                        if (peuINFO.addPon)
                            pgRename = "P" + pgRename;
                break;
        if(currentINFO.layersON)
            pgRename = addPartToName(pgRename, layerName, peuINFO.layerBeforeON);
        // Add page name to base name based on option selected
        if(peuINFO.pageNamePlacement == 2)
            pgRename = removeColons(currentINFO.baseName.replace(/<#>/g,pgRename) );
        else
            pgRename = addPartToName(currentINFO.baseName, pgRename,peuINFO.pageNamePlacement);
        return pgRename;
    * Add a name part before or after a given base string
    function addPartToName(theBase, addThis, addBefore){
        //Remove any colons
        theBase = removeColons(theBase);
        addThis = removeColons(addThis);
        return (addBefore) ? (addThis + peuINFO.charList[peuINFO.seperatorChar] + theBase ):(theBase + peuINFO.charList[peuINFO.seperatorChar] + addThis);
    * Find the offset page number for a page by its name
    function getPageOffset(pgToFind, pageNameArray, pageRangeArray){
        var offset;
        for(offset = 0; offset<pageRangeArray.length;offset++){
            if((""+ pgToFind).toLowerCase() == (("" + pageNameArray[offset]).toLowerCase() ) || (""+ pgToFind).toLowerCase() == (("" + pageRangeArray[offset]).toLowerCase() ) )
                return offset;
        return -1;
    * Replace any colons with specialReplaceChar
    function removeColons(tempName){
        return tempName.replace(/:/g,peuINFO.charList[peuINFO.specialReplaceChar]);
    * Remove spaces from front and end of name
    function removeSpaces(theName){
        // Trim any leading or trailing spaces in base name
        var i,j;
        for(i = theName.length-1;i>0 && theName.charAt(i) == " ";i--);// Ignore any spaces on end of name
        for(j = 0; j<theName.length && theName.charAt(j) == " ";j++);// Ignore any spaces at front of name
        theName = theName.substring(j,i+1);
        return theName
    * Add leading zero(s)
    function addLeadingZero(tempPageNum, pageCount){
        if(peuINFO.zeroPadding == 0){
            // Normal padding
            if((tempPageNum < 10 && pageCount < 100) || (tempPageNum > 9 && pageCount > 99 && tempPageNum < 100))
                return addSingleZero(tempPageNum);
            else if(tempPageNum < 10 && pageCount > 99)
                return addDoubleZero(tempPageNum);
            else
                return ("" + tempPageNum);
        }else if(peuINFO.zeroPadding == 1){
            // Pad to 2 digits
            if(tempPageNum < 10)
                return addSingleZero(tempPageNum);
            else
                return ("" + tempPageNum);
        }else{
            // Pad to 3 digits
            if(tempPageNum < 10)
                return addDoubleZero(tempPageNum);
            else if(tempPageNum < 100)
                return addSingleZero(tempPageNum);
            else
                return ("" + tempPageNum);
    * Add leading zero helper for single
    function addSingleZero(pgNum){
        return ("0" + pgNum);
    * Add leading zero helper for double
    function addDoubleZero(pgNum){
        return ("00" + pgNum);
    * Create lot name from page number
    function makeLotName(thePage, subType){
        var iii = thePage;
        var curr = 0;
        var alphaBet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        var lotName = "L";
        if(subType == 0){
            while(iii>52){
                curr = Math.floor((iii-1)/52)-1;
                lotName += alphaBet[curr];
                if(curr >= 0)
                    iii -= 52*(1+curr);
                else
                    iii -= 52;
            lotName += alphaBet[Math.floor((iii-1)/2)%26];
        else
            for(iii=thePage; iii>0; iii-=52)
                lotName += alphaBet[Math.floor((iii-1)/2)%26];
        return lotName += (thePage & 0x1)?".F":".B";
    * Advance progress bar one unit
    function advanceBar(){
        var progCancel = app.setProgress(++progCurrentPage);
        if(progCancel)
            byeBye("User canceled export.",peuINFO.sayCancel);
    * Create an Empty tempENTRY "struct"
    function getNewTempENTRY(){
        var newTempENTRY = new Array();
        newTempENTRY["theDoc"] = null;
        newTempENTRY["singlePage"] = null;
        newTempENTRY["getOut"] = null;
        newTempENTRY["outDir"] = null;
        newTempENTRY["outfileName"] = "";
        newTempENTRY["nameConvType"] = null;
        newTempENTRY["baseName"] = null;
        newTempENTRY["doSpreadsON"] = null;
        newTempENTRY["doOneFile"] = null;
        newTempENTRY["formatType"] = null;
        newTempENTRY["layersON"] = null;
        newTempENTRY["hasNonContig"] = false;
        newTempENTRY["nonContigPgs"] = null;
        newTempENTRY["pageNameArray"] = new Array();
        newTempENTRY["pageRangeArray"] = new Array();
        newTempENTRY["psINFO"] = null;
        newTempENTRY["pdfPRESET"] = null;
        newTempENTRY["epsINFO"] = null;
        newTempENTRY["jpegINFO"] = null;
        newTempENTRY["layerINFO"] = null;
        newTempENTRY["useTag"] = null;
        newTempENTRY["pgStart"] = null;
        newTempENTRY["pgEnd"] = null;
        return newTempENTRY;
    * Record all the page/spread names
    function recordPgNames(tempENTRY){
            // Get names of all the pages. Needed when pages are named using sectioning
        for (i = 0; i < tempENTRY.theDoc.documentPreferences.pagesPerDocument; i++){
            var aPage = tempENTRY.theDoc.pages.item(i);
            tempENTRY.pageNameArray[i] = aPage.name;
            tempENTRY.pageRangeArray[i] = (aPage.appliedSection.includeSectionPrefix)? aPage.name : (aPage.appliedSection.name + aPage.name);
        return tempENTRY;
    * Set the export options
    function setExportOption(currentINFO){
            // Set any options here instead of with each page
        switch (currentINFO.formatType){
            case 0: // PostScript Formatting
                setPSoptions(currentINFO);
                break;
            case 1: // PDF Formatting
                // Nothing to do
                break;
            case 2: // EPS Formatting
                setEPSoptions(currentINFO.epsINFO);
                break;
            case 3: // JPEG Formatting
                setJPEGoptions(currentINFO.jpegINFO);
                break;
    * Get PostScript format options
    function getPSoptions(docName){
        var psOptions = new Array();
        psOptions["ignore"] = true;
        var tempGetOut, PSdlog, pgHeight, pgWidth;
        var changeAddPSextention, tempBaseName;
        var printPreset;
        do{
            tempGetOut = true;
            PSdlog = app.dialogs.add({name:"PostScript Options for \"" + docName + "\"", canCancel:true} );
            with (PSdlog)
                with (dialogColumns.add() ){
                    with (dialogRows.add() )
                        staticTexts.add({staticLabel:"Print Presets:"} );
                    printPreset = dropdowns.add({stringList:peuINFO.psPrinterNames , minWidth:236, selectedIndex:peuINFO.defaultPrintPreset} );
                    with (dialogRows.add() )
                        staticTexts.add({staticLabel:"Override PS Page Size (" + peuINFO.measureLableArray[peuINFO.measurementUnits] + ")"} );
                    with (borderPanels.add() )
                        with (dialogColumns.add() )
                            with (dialogRows.add() ){
                                staticTexts.add({staticLabel:"Width:", minWidth:45} );
                                pgWidth = textEditboxes.add({editContents:"0", minWidth:53} );
                                staticTexts.add({staticLabel:"Height:", minWidth:45} );
                                pgHeight = textEditboxes.add({editContents:"0", minWidth:54} );
                    with (dialogRows.add() ){
                        staticTexts.add({staticLabel:"Add \".ps\" to end of file name"} );
                        changeAddPSextention = dropdowns.add({stringList:["No","Yes"], selectedIndex:peuINFO.addPSextention} )
            if((PSdlog.show()) ){
                // Get the page height + width
                pgHeight = parseFloat(pgHeight.editContents);
                pgWidth = parseFloat(pgWidth.editContents);
                // Check entered H & W for error
                if(isNaN(pgHeight) || isNaN(pgWidth) || pgHeight < 0 || pgWidth < 0 ){
                    alert ("Both page height and width must be numeric and greater than zero (3.1).");
                    pgHeight = "0";
                    pgWidth  = "0";
                    tempGetOut = false;
                    continue;
                if(pgHeight > 0 && pgWidth > 0) // User changed size, use the new size
                    psOptions.ignore = false;
                psOptions["height"] = pgHeight + peuINFO.measureUnitArray[peuINFO.measurementUnits];
                psOptions["width"] = pgWidth + peuINFO.measureUnitArray[peuINFO.measurementUnits];
                psOptions["ext"] = changeAddPSextention.selectedIndex;
                peuINFO.addPSextention = psOptions["ext"];
                psOptions["preset"] = printPreset.selectedIndex
                peuINFO.defaultPrintPreset = psOptions.preset;
                savePrefs();
                PSdlog.destroy();
            else{
                PSdlog.destroy();
                byeBye("Exporting has been canceled by user.",peuINFO.sayCancel);
        } while(!tempGetOut);
        return psOptions;
    * Set Postscript options
    function setPSoptions(theINFO){
        with(currentINFO.theDoc.printPreferences){
            activePrinterPreset = peuINFO.csPSprinters[theINFO.psINFO.preset];
            peuINFO.origSpread = printSpreads; // Used to reset to original state when done
            printSpreads = theINFO.doSpreadsON;
            if(colorOutput != ColorOutputModes.separations && colorOutput != ColorOutputModes.inripSeparations)
                printBlankPages = true;
            if (theINFO.useTag)
                pageInformationMarks = true;
            else
                pageInformationMarks = false;
            if(!theINFO.psINFO.ignore){
                try{
                    paperSize = PaperSizes.custom;
                    paperHeight = theINFO.psINFO.height;
                    paperWidth = theINFO.psINFO.width;
                catch(Exception){
                    alert ("The current PPD doesn't support custom page sizes. The page size from the Print Preset will be used (3.2).");
    * Get PDF options
    function getPDFoptions(theINFO){
        var PDFdlog = app.dialogs.add({name:"PDF Options for \"" + theINFO.theDoc.name.split(".ind")[0] + "\"", canCancel:true} );
        var temp = new Array();
        for(i=0;i<app.pdfExportPresets.length;i++)
            temp.push(app.pdfExportPresets[i].name);
        // Test if default PDFpreset is greater # than actual list.
        // This occurs if one was deleted and the last preset in the list was the default
        if(peuINFO.defaultPDFpreset > temp.length-1)
            peuINFO.defaultPDFpreset = 0;
        with (PDFdlog)
            with (dialogColumns.add() ){
                with (dialogRows.add() )
                    staticTexts.add({staticLabel:"PDF Export Preset:"} );
                pdfPresets = dropdowns.add({stringList: temp, minWidth:50, selectedIndex:peuINFO.defaultPDFpreset} );
        if(PDFdlog.show() ){
            temp = app.pdfExportPresets[pdfPresets.selectedIndex];
            peuINFO.defaultPDFpreset = pdfPresets.selectedIndex;
            peuINFO.origSpread = temp.exportReaderSpreads;
            try{
                temp.exportReaderSpreads = theINFO.doSpreadsON;
                temp.pageInformationMarks = (theINFO.useTag && temp.cropMarks)?true:false;
            }catch(e){/*ignore it*/}
            PDFdlog.destroy();
            return temp;
        else{
            PDFdlog.destroy();
            byeBye("PDF exporting has been canceled by user.", peuINFO.sayCancel);
    * Get JPEG options
    function getJPEGoptions(docName){
        var temp = new Array();
        var JPEGdlog = app.dialogs.add({name:"JPEG Options for \"" + docName + "\"", canCancel:true} );
        with (JPEGdlog)
            with (dialogColumns.add() ){
                with (dialogRows.add() )
                    staticTexts.add({staticLabel:"Quality:"} );
                JPEGquality = dropdowns.add({stringList:(new Array("Low","Medium","High","Maximum")) , minWidth:50, selectedIndex:peuINFO.defaultJPEGquality} );
                with (dialogRows.add() )
                    staticTexts.add({staticLabel:"Encoding Type:"} );
                    JPEGrender = dropdowns.add({stringList:["Baseline","Progressive"] , minWidth:50, selectedIndex:peuINFO.defaultJPEGrender } );
        if(JPEGdlog.show() ){
            peuINFO.defaultJPEGquality = JPEGquality.selectedIndex;
            temp["qualityType"] = peuINFO.defaultJPEGquality;
            peuINFO.defaultJPEGrender = JPEGrender.selectedIndex;
            temp["renderType"] = peuINFO.defaultJPEGrender;
        else{
            JPEGdlog.destroy();
            byeBye("JPEG exporting has been canceled by user.",peuINFO.sayCancel);
        JPEGdlog.destroy();
        return temp;
    * Set JPEG options
    function setJPEGoptions(theINFO){
        with(app.jpegExportPreferences){
            peuINFO.origSpread = exportingSpread; // Used to reset to original state when done
            exportingSpread = currentINFO.doSpreadsON;
            exportingSelection = false; // Export the entire page
            if(peuINFO.csVersion > 3)
                jpegExportRange = ExportRangeOrAllPages.exportRange;
            switch (theINFO.qualityType){
                case 0:
                    jpegQuality = JPEGOptionsQuality.low;
                    break;
                case 1:
                    jpegQuality = JPEGOptionsQuality.medium;
                    break;
                case 2:
                    jpegQuality = JPEGOptionsQuality.high;
                    break;
                case 3:
                    jpegQuality = JPEGOptionsQuality.maximum;
                    break;
            jpegRenderingStyle = (theINFO.renderType)? JPEGOptionsFormat.baselineEncoding : JPEGOptionsFormat.progressiveEncoding;
    * Get EPS options
    function getEPSoptions(docName){
        var epsOptions = new Array();
        var epsDialog = app.dialogs.add({name:"EPS Options for \"" + docName + "\"", canCancel:true} );
        var oldBleed = peuINFO.bleed;
        with (epsDialog){
            // Left Column
            with (dialogColumns.add() ){
                with (dialogRows.add() )
                with (borderPanels.add() )
                    with (dialogColumns.add() ){
                        with (dialogRows.add() )
                            staticTexts.add({staticLabel:"Flattener Presets:"} );
                        changeFlattenerPreset = dropdowns.add({stringList:peuINFO.flattenerNames , minWidth:180, selectedIndex:peuINFO.defaultFlattenerPreset} );
                        with (dialogRows.add() )
                            changeIgnoreOverride = checkboxControls.add({staticLabel:"Ignore Overrides", checkedState:peuINFO.ignoreON} );
                        with (dialogRows.add() )
                            staticTexts.add({staticLabel:"Preview Type:"} );
                        changePreviewPreset = dropdowns.add({stringList:peuINFO.previewTypes , minWidth:180, selectedIndex:peuINFO.defaultPreview} );
                        with (dialogRows.add() ){
                            staticTexts.add({staticLabel:"Bleed:"} );
                            changeBleedVal = realEditboxes.add({editValue:peuINFO.bleed, minWidth:60} );
                            staticTexts.add({staticLabel:peuINFO.measureLableArray[peuINFO.measurementUnits]} );
                        with (dialogRows.add() )
                            staticTexts.add({staticLabel:"OPI Options:"} );
                        with (dialogRows.add() ){
                            staticTexts.add({staticLabel:"Omit:"} );
                            changeOpiEPS = checkboxControls.add({staticLabel:"EPS", checkedState:peuINFO.epsON} );
                            changeOpiPDF = checkboxControls.add({staticLabel:"PDF", checkedState:peuINFO.pdfON} );
                            changeOpiBitmap = checkboxControls.add({staticLabel:"Bitmapped", checkedState:peuINFO.bitmapON} );
            // Right column
            with (dialogColumns.add() ){
                with(borderPanels.add() ){
                    with(dialogColumns.add() ){
                        with (dialogRows.add() ){
                            staticTexts.add({staticLabel:"PostScript level:"} );
                            var changePSlevel = dropdowns.add({stringList:["2","3"] , minWidth:75, selectedIndex:peuINFO.psLevel} );
                        with (dialogRows.add() ){
                            staticTexts.add({staticLabel:"Color mode:"} );
                            if(peuINFO.csVersion == 3)
                                var changeColorMode = dropdowns.add({stringList:["Unchanged","Grayscale", "RGB", "CMYK"] , minWidth:100, selectedIndex:peuINFO.colorType } );
                            else
                                var changeColorMode = dropdowns.add({stringList:["Unchanged","Grayscale", "RGB", "CMYK","PostScript Color Management"] , minWidth:100, selectedIndex:peuINFO.colorType } );
                        with (dialogRows.add() ){
                            staticTexts.add({staticLabel:"Font embedding:"} );
                            var changeFontEmbedding = dropdowns.add({stringList:["None","Complete", "Subset"] , minWidth:100, selectedIndex:peuINFO.fontEmbed } );
                        with (dialogRows.add() ){
                            staticTexts.add({staticLabel:"Type of data to send:"} );
                            var changeDataToSend = dropdowns.add({stringList:["All","Proxy"] , minWidth:50, selectedIndex:peuINFO.dataSent } );
                        with (dialogRows.add() ){
                            staticTexts.add({staticLabel:"Data type:"} );
                            var changeDataType = dropdowns.add({stringList:["Binary","ASCII"] , minWidth:50, selectedIndex:peuINFO.dataType } );
                        with (dialogRows.add() ){
                            staticTexts.add({staticLabel:"Perform OPI replacement:"} );
                            var changeOPIreplace = dropdowns.add({stringList:["No","Yes"] , minWidth:50, selectedIndex:peuINFO.opiReplacement} );
        do{
            var getOut = true;
            if((epsDialog.show()) ){
                // Use these to update the prefs file
                peuINFO.defaultFlattenerPreset = changeFlattenerPreset.selectedIndex;
                peuINFO.ignoreON = (changeIgnoreOverride.checkedState)?1:0;
                peuINFO.defaultPreview = changePreviewPreset.selectedIndex;
                peuINFO.bleed = changeBleedVal.editContents;
                peuINFO.epsON = (changeOpiEPS.checkedState)?1:0;
                peuINFO.pdfON = (changeOpiPDF.checkedState)?1:0;
                peuINFO.bitmapON = (changeOpiBitmap.checkedState)?1:0;
                peuINFO.psLevel = changePSlevel.selectedIndex;
                peuINFO.colorType = changeColorMode.selectedIndex;
                peuINFO.fontEmbed = changeFontEmbedding.selectedIndex;
                peuINFO.dataSent = changeDataToSend.selectedIndex;
                peuINFO.dataType = changeDataType.selectedIndex;
                peuINFO.opiReplacement = changeOPIreplace.selectedIndex;
                // Check if bleed value is OK
                peuINFO.bleed = parseFloat(peuINFO.bleed)
                if (isNaN(peuINFO.bleed)){
                    alert("Bleed value must be a number (1.1).");
                    getOut = false;
                    peuINFO.bleed = oldBleed;
                else if (peuINFO.bleed < 0){
                    alert("Bleed value must be greater or equal to zero (1.2).");
                    getOut = false;
                    peuINFO.bleed = oldBleed;
                else {
                    // Check if bleed is too big
                    try {
                        app.epsExportPreferences.bleedBottom = "" + peuINFO.bleed + peuINFO.measureUnitArray[peuINFO.measurementUnits];
                    catch (Exception){
                        alert("The bleed value must be less than one of the following: 6 in | 152.4 mm | 432 pt | 33c9.384");
                        getOut = false;
                        peuINFO.bleed = oldBleed;
            else{
                epsDialog.destroy();
                byeBye("EPS Export canceled by user.", peuINFO.sayCancel);
        }while(!getOut);
            // These are used for exporting
            epsOptions["defaultFlattenerPreset"] = changeFlattenerPreset.selectedIndex;
            epsOptions["ignoreON"] = peuINFO.ignoreON;
            epsOptions["defaultPreview"] = changePreviewPreset.selectedIndex;
            epsOptions["bleed"] = peuINFO.bleed;
            epsOptions["epsON"] = peuINFO.epsON;
            epsOptions["pdfON"] = peuINFO.pdfON;
            epsOptions["bitmapON"] = peuINFO.bitmapON;
            epsOptions["psLevel"] = changePSlevel.selectedIndex;
            epsOptions["colorType"] = changeColorMode.selectedIndex;
            epsOptions["fontEmbed"] = changeFontEmbedding.selectedIndex;
            epsOptions["dataSent"] = changeDataToSend.selectedIndex;
            epsOptions["dataType"] = changeDataType.selectedIndex;
            epsOptions["opiReplacement"] = changeOPIreplace.selectedIndex;
            epsDialog.destroy();
            return epsOptions;
    *     Apply chosen settings to the EPS export prefs
    function setEPSoptions(theINFO){
        with(app.epsExportPreferences){
            appliedFlattererPreset = peuINFO.flattenerNames[theINFO.defaultFlattenerPreset];
            bleedBottom = "" + theINFO.bleed + peuINFO.measureUnitArray[peuINFO.measurementUnits];
            bleedInside = bleedBottom;
            bleedOutside = bleedBottom;
            bleedTop = bleedBottom;
            epsSpreads = currentINFO.doSpreadsON;
            ignoreSpreadOverrides = theINFO.ignoreON;
            switch (theINFO.dataType){
                case 0:
                    dataFormat = DataFormat.binary;
                    break;
                case 1:
                    dataFormat = DataFormat.ascii;
                    break;
            switch (theINFO.colorType){
                case 0:
                    epsColor = EPSColorSpace.unchangedColorSpace;
                    break;
                case 1:
                    epsColor = EPSColorSpace.gray;
                    break;
                case 2:
                    epsColor = EPSColorSpace.rgb;
                    break;
                case 3:
                    epsColor = EPSColorSpace.cmyk;
                    break;
                case 4:
                    epsColor = EPSColorSpace.postscriptColorManagement;
                    break;
            switch (theINFO.fontEmbed){
                case 0:
                    fontEmbedding = FontEmbedding.none;
                    break;
                case 1:
                    fontEmbedding = FontEmbedding.complete;
                    break;
                case 2:
                    fontEmbedding = FontEmbedding.subset;
                    break;
            switch (theINFO.dataSent){
                case 0:
                    imageData = EPSImageData.allImageData;
                    break;
                case 1:
                    imageData = EPSImageData.proxyImageData;
                    break;
            switch (theINFO.defaultPreview){
                case 0:
                    preview = PreviewTypes.none;
                    break;
                case 1:
                    preview = PreviewTypes.tiffPreview;
                    break;
                case 2:
                    preview = PreviewTypes.pictPreview;
                    break;
            switch (theINFO.psLevel){
                case 0:
                    postScriptLevel = PostScriptLevels.level2;
                    break;
                case 1:
                    postScriptLevel = PostScriptLevels.level3;
                    break;
            // Setting these three to false prevents a conflict error when trying to set the opiImageReplacement value
            omitBitmaps = false;
            omitEPS = false;
            omitPDF = false;
            if (theINFO.opiReplacement){
                opiImageReplacement = true;
            else {
                opiImageReplacement = false;
                omitBitmaps = theINFO.bitmapON;
                omitEPS = theINFO.epsON;
                omitPDF = theINFO.pdfON;
    * Build the main dialog box
    function createMainDialog (docName, thisNum, endNum){
        var theDialog = app.dialogs.add({name:(VERSION_NAME + ": Enter the options for \"" + docName + "\"" + ((endNum==1)?"":" (" + thisNum + " of " + endNum + " documents)") )
    , canCancel:true} );
        with (theDialog){
            // Left Column
            with (dialogColumns.add() ){
                with (dialogRows.add() )
                    staticTexts.add({staticLabel:"Page Naming Options"} );
                with(borderPanels.add() ){
                    with(dialogColumns.add() ){
                        // Radio butons for renaming convention
                        namingConvention = radiobuttonGroups.add();
                        with(namingConvention){
                            radiobuttonControls.add({staticLabel:"As Is", checkedState:(peuINFO.nameConvType == 0)} );
                            radiobuttonControls.add({staticLabel:"Add \".L\"", checkedState:(peuINFO.nameConvType == 1)} );
                            radiobuttonControls.add({staticLabel:"Odd/Even = \".F/.B\"", checkedState:(peuINFO.nameConvType == 2)} );
                            radiobuttonControls.add({staticLabel:"Odd/Even = \"LA.F/LA.B\"" , checkedState:(peuINFO.nameConvType == 3)});
                            radiobuttonControls.add({staticLabel:"Numeric Override" , checkedState:(peuINFO.nameConvType == 4)});
                    with (dialogRows.add() )
                        staticTexts.add({staticLabel:""} );
                        with(dialogRows.add() ){
                        staticTexts.add({staticLabel:"Base Name"} );
                        newBaseName = textEditboxes.add({editContents:baseName, minWidth:100} );
            // Middle Column
            with (dialogColumns.add() ){
                with (dialogRows.add() )
       

    RichardM0701, are you the same person as scottbentley?
    I fear your response doesn't make a lot of sense. The easiest way is to put your files into a book, which will not harm them. The easiest script is often no script at all.
    I don't understand your comment about separate text boxes, files contain text boxes and definitionally multiple files means multiple separate text boxes.
    I do not know what you are referring to with respect to the toc update, perhaps you could reference a particular command or script, or provide a screenshot.
    It sounds like now you are interested in updating multiple tables of contents in a single fell swoop -- this would appear to have nothing to do with the original question. If that's the case, please start a new thread.

  • How to print directly to Printer from Crystal Report Viewer ?

    Hi All,
    We are integrating our Java Web Application with Crystal report XI, currently using JRC and export to PDF for user to preview and print to local printer.
    Now there is new requirement :
    Some clients is using thin client terminal (no harddisk, only has OS +Browser in ROM), so I cannot install Acrobat Reader for them to preview&print the report.
    So I am looking at  Crystal Report Viewer, the question is : Can I print from Crystal Report Viewer directly to local printer without first converting it to PDF (because I can't have acrobat reader installed) ??
    Thank you very much,
    Krist
    Indonesia

    Hi,
    It can't be achieved through XI.
    JRCXI R2 SDK offers the ability to print the report server side
    using the PrintOutputController using printReport(PrintReportOptions printReportOptions) method.
    Here is the code(for XIR2):
    import="com.crystaldecisions.reports.sdk.*"
    import="com.crystaldecisions.sdk.occa.report.lib.*"
    import="com.crystaldecisions.sdk.occa.report.document.*"
    try {
    final String REPORT_NAME = "Inventory.rpt";
    ReportClientDocument reportClientDoc = new ReportClientDocument();
    reportClientDoc.open(REPORT_NAME, 0);
    //Create and set print options.
    PrintReportOptions printOptions = new PrintReportOptions();
    //Note: Printer with the 'printer name' below must already be configured.
    printOptions.setPrinterName("
    10.10.45.220
    BOBJ 2C");
    printOptions.setJobTitle("Sample Print Job from JRC.");
    printOptions.setPrinterDuplex(PrinterDuplex.horizontal);
    printOptions.setPaperSource(PaperSource.auto);
    printOptions.setPaperSize(PaperSize.paperLetter);
    printOptions.setNumberOfCopies(1);
    printOptions.setCollated(false);
    PrintReportOptions.PageRange printPageRange = new PrintReportOptions.PageRange(1,1);
    printOptions.addPrinterPageRange(printPageRange);
    //NOTE: If parameters or database login credentials are required, they need to be set before.
    //calling the printReport() method of the PrintOutputController.
    reportClientDoc.getPrintOutputController().printReport(printOptions);
    reportClientDoc.close();
    out.println("Successfully sent report to the printer.");
    catch(ReportSDKException ex) {     
         out.println(ex);
    Please revert in case you have any query.
    Thanks,
    Neeraj

  • Printing Query

    Post Author: tsparg
    CA Forum: JAVA
    Hi allI downloaded this code from the business objects website, and then played around with it. Have got it to print, but could somebody tell me how i would export using similiar code?Am i on the right track, or do i need to do an about face?  import com.businessobjects.crystalreports.printer.bean.ReportPrinter;import com.crystaldecisions.reports.sdk.ReportClientDocument;import com.crystaldecisions.sdk.occa.report.document.PaperSize;import com.crystaldecisions.sdk.occa.report.document.PaperSource;import com.crystaldecisions.sdk.occa.report.document.PrintReportOptions;import com.crystaldecisions.sdk.occa.report.lib.ReportSDKExceptionBase;import com.microsoft.sqlserver.jdbc.SQLServerConnection;import com.microsoft.sqlserver.jdbc.SQLServerResultSet;import java.sql.DriverManager;import java.sql.SQLException;import java.util.logging.Level;import java.util.logging.Logger;import javax.print.PrintService;import javax.print.PrintServiceLookup;/** * Applies to: XI Release 2. * Date Created: October 2005. * Description: This sample demonstrates how to print a report directly to a printer (server-side printing). *                 NOTE: If the report is based on a secured database the database login credentials *                 will need to be set before calling the export method below.  Also, if the report *                 has parameters, then values will need to be set for the report before export method can *                 be called or an error will be thrown.  See the ViewReportParameters or ViewReportLogon samples *                 for samples on how to set parameters and login credentials through the JRC SDK. * Author: CW. *///Crystal Java Reporting Component (JRC) imports.public class JRCPrintReport {    static final String REPORT_NAME = "JRCPrintReport.rpt";    public static void main(String&#91;&#93; args) {        if (args.length == 0) {            PrintService&#91;&#93; printers = PrintServiceLookup.lookupPrintServices(null, null);            System.out.println("Available printers : ");            for (int i = 0; i < printers.length; i++) {                System.out.println(printers&#91;i&#93;.getName());            }            System.out.println("end Available printers ");            System.exit(0);        }        try {                       //Open report.            ReportClientDocument reportClientDoc = new ReportClientDocument();            reportClientDoc.open(REPORT_NAME, 0);            //Create and set print options.            PrintReportOptions printOptions = new PrintReportOptions();            printOptions.setPrinterName(args&#91;1&#93;);            printOptions.setJobTitle("Sample Print Job from JRC.");            printOptions.setPaperSource(PaperSource.auto);            printOptions.setPaperSize(PaperSize.paperLetter);            printOptions.setNumberOfCopies(1);            printOptions.setCollated(false);            PrintReportOptions.PageRange printPageRange = new PrintReportOptions.PageRange(1, 1);            printOptions.addPrinterPageRange(printPageRange);            ReportPrinter repPrint;            repPrint = new ReportPrinter();            repPrint.setReportSource(reportClientDoc.getReportSource());            repPrint.print(printOptions);                       reportClientDoc.close();            System.out.println("Successfully sent report to the printer.");        } catch (ReportSDKExceptionBase ex) {            Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex);        }    }}   regardsTim

    Post Author: tsparg
    CA Forum: JAVA
    should i be usingimport com.crystaldecisions.sdk.occa.report.application.ReportClientDocument instead of import com.crystaldecisions.reports.sdk.ReportClientDocument??

  • Script to open INDD files, run script, and close

    Hello, I'm looking for a script that will open a folder of Indesign files, open each one, run a selected script, then close each file.
    RIght now I'm using the Batch convert script, to convert INDD to INDD and run the script in between (then I delete the extra INDD file). But I'm trying to eliminate the conversion element, just need the script part of it.
    Anyone have any help? Thanks.

    Here's my whole code if it helps. I'm wondering if the script is moving too fast. I think that the first files are still PDFing while the others are opening and closing. Could that be it? I'm not sure why else the for loop for the PDFing is only working on the first file.
    var myFolder = Folder.selectDialog("Select Input Folder");
    var myIndsnFiles = myFolder.getFiles("*.indd");
    var exportPath=Folder("/").selectDlg("Select PDF output folder:");
    var pdfPreset = "Press Quality";
    for(k=0; k<myIndsnFiles.length; k++)
        app.open(myIndsnFiles[k]);
        var jobNumber = "12345";
            for (aPage=0; aPage < app.activeDocument.pages.length; aPage++)
                app.pdfExportPreferences.pageRange = app.activeDocument.pages[aPage].name;
                app.activeDocument.exportFile (ExportFormat.PDF_TYPE, File(exportPath+"/"+jobNumber+"_"+pad(app.activeDocument.pages[aPage].name)+".pdf"), false, pdfPreset);
                function pad (n) {
                return ("00000"+n).slice(-3);
    app.activeDocument.close();

Maybe you are looking for