Acrobat XI Deletes Header When Adding Footer

I just started having this problem. I add a header to an Acrobat XI file and it's OK. When I attempt to update the header/footer and add the page number in the footer the content in the header is deleted. I've uninstalled and reinstalled Acrobat and it hasn't resolved the problem.

Hi Panzi,
Are you changing the margins, and working with mix-sized pages in the PDF? What do you have selected as the Appearance Options in the Update Header and Footer dialog box?
I'm also curious whether this is happening only with a specific file? Or does it happen with all PDF files that you add a header/footer to?
Best,
Sara

Similar Messages

  • When Adding Footer - left portion of document get chopped - reg

    Hi:
    I am very new to the Adobe Windows - Writer software. I have encountered issue while adding header/footer to the existing document (PDF)
    that was generated by Business Objects.
    When I Document->Add Header/Footer onto the existing document, the portion of left side of the document is getting chopped
    and it adds the Footer (page number) at the left bottom of the page.
    When I preview, it doesn't crop/chop but once I click OK, it does get chopped.
    I have tried Enforce/Pitshop to add it using Global Changes in PDF document, was able to add it. (very costly solution).
    Please let me know whether I need to use Adobe Distiller 7.0 to modify any particular document standard settings in order to avoid this behavior.
    Thank You in advance.
    Ramesh Vasudevan

    I would very interested in finding a solution to this issue.  Now using BusinessObjects XI R3, when PDF documents are created, they look fine but then, in landscape version, the right side gets "masked" by a 1 inch block when either footers are added or a watermark is added.  In portrait, the mask happens at the top of the page.  This did not happen in R2, but now happens in R3 of BusinessObject.  I have noticed that the properties of the PDF document indicates that R3 creates PDF's in a newer version (Version 1.6 (Acrobat 7.x)).  I am using Adobe Professional 8 to create the bookmarks.  The data is present in the document but hidden (text can be seen in "Preview" by Hidden Text when closing document).  Any follow-up on how to resolve?  Any help is appreciated.  Attached is an example of how the numbers in the right column get "masked".

  • How to suppress page header when group footer prints

    I would like to suppress the page header on my report when a group footer prints.  My group footer is going to be a bunch of legal mumbo jumbo and I'm going to have it do a page break before so it prints on it's own page.  I do not want my page header info printing on this page.
    Is there a way to do this?  I am on Crystal XI.  Thank you in advance.

    I haven't tested this, but...
    Formula @InGroupHeader:
    WhilePrintingRecords;
    BooleanVar InGroupFooter;
    InGroupFooter = False;
    Formula @InGroupFooter:
    WhilePrintingRecords;
    BooleanVar InGroupFooter;
    InGroupFooter = True;
    PageHeader.Suppress:
    WhilePrintingRecords;
    BooleanVar InGroupFooter;
    InGroupFooter;
    Edit: I think I like Graham's solution better, actually.
    Edited by: Garrett Fitzgerald on Jun 15, 2009 12:12 PM

  • Iphoto deletes events when adding events from flagged photos

    Dear community,
    Whenever I use flagged photos, previous events get deleted. I don't know whether this is because the photos can only be in one event at a time, or that this is erroneous behaviour.
    In my logic, there should be possibility for as much events as you deem possible, yet it is mind boggling, that you don't have an automatic option, that makes you put photos in two events. Also it is mind numbing that you can't just copy & paste the pictures anywhere you like. You can paste in albums, but not into events.
    You have an option to "Create event from flagged photos", yet not an option to add photos to an existing event, you must flag them first.
    Then there is the sudden discomfort of brain pain, when you find out the previous events you've created stopped seizing to exist, and you have to sift through 500 photos, just to find 3 photos you've flagged in the creation of a previous event. Which defeats the purpose of creating them.
    The albums work good for this purpose, yet I want to be able to pin albums to the back board, where the events are. Or have events that will not disappear, may contain doubles with other events, or/and aren't restricted to copying into them. It would save a lot of time, to just CMD + C, CMD + V.

    You're confusing Events and Albums.
    In my logic, there should be possibility for as much events as you deem possible, yet it is mind boggling, that you don't have an automatic option, that makes you put photos in two events
    A photo in two Events is using twice the disk space. An album just references the photo in the Library and can be in as many albums as you like while wasting no disk space.
    You have an option to "Create event from flagged photos", yet not an option to add photos to an existing event, you must flag them first.
    Eh, you have to flag photos first before you can create an Event from them too...
    Then there is the sudden discomfort of brain pain, when you find out the previous events you've created stopped seizing to exist, and you have to sift through 500 photos, just to find 3 photos you've flagged in the creation of a previous event. Which defeats the purpose of creating them.
    Flagging photos does not delete Events. Emptying an Event deletes them.
    You can't have what you want.

  • Fixing acrobat pro XI crash when adding bates numbers

    Upgraded from Pro 8 to Pro 11 and regretting it.  Now the program just won't work.  Process of adding bates numbers is simple.  Once I finally find where the "tool" is hidden, I add a document and then select add bates number.  There is "OK" button, but when I click that, program crashes.  Every time, every document regardless of size.

    I just tried works for me.

  • Acrobat X Pro hangs when making PDF. Using on Windows 7 64. Just started hanging. Uninstalled and reinstalled. Installed update. Once it hangs, must go into crtl, alt, delete to force close.

    Acrobat X Pro hangs when making PDF. Using on Windows 7 64. Just started hanging. Uninstalled and reinstalled. Installed update. Once it hangs, must go into crtl, alt, delete to force close.

    As a debugging step, try printing to the Adobe PDF printer. If that fails, repeat with print-to-file selected. Assuming the print succeeds, open the file in Distiller to complete the creation of the PDF. If you get the PDF, then check to see if AcroTray is properly working as a background task.

  • Acrobat 9 hangs when adding a text box

    It seems that any installation of Acrobat 9 I have come across, Acrobat hangs when adding a text box from "Forms>Add or Edit Fields".
    I may need to apply an update or two but this problem seems very consistent and reproducable.
    I plan on trying Acrobat 9 Pro on Windows XP to see if it makes any difference, but does anyone have any ideas?  OTHER than upgrading to Acrobat X?

    Textbox takes few extra seconds to establish himself, but it never hangs for me. Did you tried to click-n-drag to create Textbox?

  • Acrobat freezes when adding a signature field

    We are currently using Acrobat 9.5.5 (updated on 12th June 2013) on a windows 7 (64-bit) machine, when adding a signature field to a PDF that has been created using the AdobePDF printer (from a file created in AutoCAD 2013) Acrobat freezes and starts to use excessive amounts of RAM (peaking at around 1.9GB), and eventually either crashes or after about 30 seconds adds the field.
    We've tried to use Acrobat XI (trial version), but this seems to make the problem worse (using over 3.5GB of RAM) and taking in excess of a minute to eventually add the field.
    The problem seems to be limited to certain files, 2 in particular are causing the problem, both of which are around 5MB in size, when we add a signature to other smaller files the problem isn't as crippling, the "freeze" only stays for a couple of seconds and the field is usually added.

    We don't control the forum emails, you do.
    For each separate message,
    1. Return to the forum ("View the full discussion")
    2. Sign in at top if your login isn't shown
    3. Click Stop email notifications

  • When adding a yahoo email account I keep getting "Server Unavailable" notification.  This started after I updated my software.  I deleted my accounts and tried to re-add them but continue to get this notification??

    When adding a yahoo email account I keep getting "Server Unavailable" notification.  This started after I updated my software.  I deleted my accounts and tried to re-add them but continue to get this notification??

    hello, this is a scam tactic that is trying to trick you into installing malware, so don't download or execute this kind of stuff! as you've rightly mentioned, you're already using the latest version of firefox installed and you can always initiate a check for ''updates in firefox > help > about firefox''.
    you might also want to run a full scan of your system with the security software already in place and different tools like the [http://www.malwarebytes.org/products/malwarebytes_free free version of malwarebytes], [http://www.bleepingcomputer.com/download/adwcleaner/ adwcleaner] & [http://www.kaspersky.com/security-scan kaspersky security scan] in order to make sure that there isn't already some sort of malware active on your system that triggers these false alerts.
    [[Troubleshoot Firefox issues caused by malware]]

  • I downloaded my sons iCloud to my phone I deleted his when back and added mine now I'm stuck with his songs how do I get my iTunes back

    I downloaded my sons iCloud to my phone I deleted his when back and added mine now I'm stuck with his songs how do I get my iTunes back

    Sync your iphone with itunes.
    http://support.apple.com/kb/HT1386
    Good luck

  • I need to delete header record automaticaly when deleting detail

    Hi all
    I have to master-detail tables
    The relation between the header and details is one-to-one.
    on my form i want to do the following:
    When user delete the detail record the header record must be automatically deleted.
    on the trigger key_delrecord on the form level i write this code
    BEGIN
    IF :SYSTEM.CURSOR_BLOCK = 'DETAILS' THEN
    Delete_record;
    FORMS_DDL('COMMIT');
    Go_block('Data');
    Delete_record;
    FORMS_DDL('COMMIT');
    ELSE
    Delete_record;
    END IF;
    END;
    but this does not work
    an error message appear on the runtime " can not delete header while dependent detail exists"
    Please how can I archive this
    Thanks in advance
    Edited by: [email protected] on Oct 4, 2009 11:01 AM

    Hi!
    May set the Delete Record Behavior Relation Property to Cascading.
    And change your trigger to:
    BEGIN
    IF :SYSTEM.CURSOR_BLOCK = 'DETAILS' THEN
    Go_block('Data');
    END IF;
    Delete_record;
    END; But, may do not use the forms_dll build-in for a commit.
    Use the commit_form build-in so forms recognize that you commit the form.
    Regards

  • Media directory deleted when adding folder in XP

    Hi everyone.
    I have used itunes for the radio, but have not used it for my music. Last night I decided to try it. I added my music folder to and it told me it had to convert .wma files to be used in iTunes. It converted maybe 40 files. The problem is, the music folder is now gone. I have lost hundreds of CDs that I have burned, interviews and workshops I have recorded and downloaded, etc. The whole media directory was wiped out. There is nothing in my recycle bin.

    Wow, what a mess! I've never heard of ituens just deleting files when they're imported (or not imported, as the case may be).
    My suspicion is that itunes moved them. Look in itunes menu > Edit Preferences > Advanced.
    Is the little checkbox to "Keep itunes Media folder" organized filled in?
    If so, itunes probably moved them. If they weren't tagged to itune's satisfaction, they probably got dumped into a folder named Unknown Artist/Unknown Album. Especially if they were WAV files, which don't have MP3 file tags.
    On XP, the default path would be
    C:\Documents and Settings\ username \My Documents\My Music\iTunes\iTunes Media
    Have a look there, unless you changed the path before importing yoru items.
    Message was edited by: Katrina S.

  • Coredump when adding new data to a document

    Hi,
    I have managed to get a coredump when adding data to a document,
    initially using the Python API but I can reproduce it with a dbxml script.
    I am using dbxml-2.2.13 on RedHat WS 4.0.
    My original application reads XML data from files, and adds them
    one at a time to a DbXML document using XmlModify.addAppendStep
    and XmlModify.execute. At a particular document (call it "GLU.xml") it
    segfaults during the XmlModify.execute call. It is not malformed data in
    the file, because if I remove some files that are loaded at an earlier stage,
    GLU.xml is loaded quite happily and the segfault happens later. Changing
    my application so that it exits just before reading GLU.xml, and loading GLU.xml's
    data into the container file using the dbxml shell's "append" command produces
    the same segfault. The stacktrace is below. Steps #0 to #7 inclusive are the
    same as the stacktrace I got when using the Python API.
    Can anyone give me any suggestions? I could send the dbxml container file and
    dbxml script to anyone who would be prepared to take a look at this problem.
    Regards,
    Peter.
    #0  ~NsEventGenerator (this=0x9ea32f8) at NsEventGenerator.cpp:110
    110                     _freeList = cur->freeNext;
    (gdb) where
    #0  ~NsEventGenerator (this=0x9ea32f8) at NsEventGenerator.cpp:110
    #1  0x009cacef in DbXml::NsPullToPushConverter8::~NsPullToPushConverter8$delete ()
        at /scratch_bernoulli/pkeller/dbxml-2.2.13/install/include/xercesc/framework/XMLRefInfo.hpp:144
    #2  0x00a5d03c in DbXml::NsDocumentDatabase::updateContentAndIndex (this=0x96b7a60,
        new_document=@0x96e3608, context=@0x96a3fc8, stash=@0x96a4098) at ../scoped_ptr.hpp:44
    #3  0x009a71b1 in DbXml::Container::updateDocument (this=0x96a71d0, txn=0x0, new_document=@0x96e3608,
        context=@0x96a3fc8) at shared_ptr.hpp:72
    #4  0x009b8465 in UpdateDocumentFunctor::method (this=0xb7d3a008, container=@0x96a71d0, txn=0x0, flags=0)
        at TransactedContainer.cpp:167
    #5  0x009b70c5 in DbXml::TransactedContainer::transactedMethod (this=0x96a71d0, txn=0x0, flags=0,
        f=@0xbff66500) at TransactedContainer.cpp:217
    #6  0x009b71e4 in DbXml::TransactedContainer::updateDocument (this=0x96a71d0, txn=0x0,
        document=@0x96e3608, context=@0x96a3fc8) at TransactedContainer.cpp:164
    #7  0x009d7616 in DbXml::Modify::updateDocument (this=0x96c1748, txn=0x0, document=@0xbff665b0,
        context=@0xbff669dc, uc=@0xbff669e4)
        at /scratch_bernoulli/pkeller/dbxml-2.2.13/dbxml/build_unix/../dist/../include/dbxml/XmlDocument.hpp:72
    #8  0x009d9c18 in DbXml::Modify::execute (this=0x96c1748, txn=0x0, toModify=@0x96a7280,
        context=@0xbff669dc, uc=@0xbff669e4) at Modify.cpp:743
    #9  0x009c1c35 in DbXml::XmlModify::execute (this=0xbff666c0, toModify=@0x96a7280, context=@0xbff669dc,
        uc=@0xbff669e4) at XmlModify.cpp:128
    #10 0x08066bda in CommandException::~CommandException ()
    #11 0x0805f64e in CommandException::~CommandException ()
    #12 0x08050c82 in ?? ()
    #13 0x00705de3 in __libc_start_main () from /lib/tls/libc.so.6
    #14 0x0804fccd in ?? ()
    Current language:  auto; currently c++

    Hi George,
    I can get the coredump with the following XML data (cut down from its original
    size of around 900Kb):
    <file name="GLU.xml">
    <_StorageUnit time="Wed Apr  5 11:06:49 2006" release="1.0.212"
    packageName="ccp.ChemComp" root="tempData" originator="CCPN Python XmlIO">
    <parent>
      <key1 tag="molType">protein</key1>
      <key2 tag="ccpCode">GLU</key2>
    </parent>
    <StdChemComp ID="1" code1Letter="E" stdChemCompCode="GLU" molType="protein" ccpCode="GLU" code3Letter="GLU" msdCode="GLU_LFOH" cifCode="GLU" merckCode="12,4477">
      <name>GLUTAMIC ACID</name>
      <commonNames>L-glutamic acid</commonNames>
    </_StorageUnit>
    <!--End of Memops Data-->
    </file>This happens when the data from 106 other files have been inserted beforehand
    (ranging in size from 1Kb to 140Kb). If I manipulate the order so that the above data
    is loaded earlier in the sequence, it inserts fine and I get the coredump when
    loading data from a different file.
    The actual XmlModify calls look something like:
      qry = mgr.prepare("/datapkg/dir[@name='dir1']/dir[@name='dir2']", qc)
      mdfy.addAppendStep(qry, XmlModify.Element, "",
                         '<file name='" + fileName + '">' +
                          data[pos:] + "</file>")
      mdfy.execute(XmlValue(doc), qc, uc)where data[pos:] points to the location in the mmap-ed file containing the
    above data just after the <?xml ...?> header.
    If you want to try to reproduce the crash at your end there are a couple of ways
    we could do it. I have just figured out that this forum software doesn't let me
    upload files or reveal my e-mail address in my profile, but you can contact me with
    username: pkeller; domain name: globalphasing.com and I can send the
    data to you.
    Regards,
    Peter.

  • TableSorter errors when adding new data

    so here is the deal:
    I am using the TableSorter.java helper class with DefaultTableModel
    from: http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
    It works great when the data is static and I get it for the first time. however, occationally, when adding new data I get a NullPointerException error.
    in use:
    DefaultTableModel.addRow()
    DefaultTableModel.removeRow() and
    DefaultTableModel.insertRow() methods.
    Error:
    java.lang.ArrayIndexOutOfBoundsException: 5
         at com.shared.model.TableSorter.modelIndex(TableSorter.java:294)
         at com.shared.model.TableSorter.getValueAt(TableSorter.java:340)
         at javax.swing.JTable.getValueAt(Unknown Source)
         at javax.swing.JTable.prepareRenderer(Unknown Source)...
    code problem I:
        public Object getValueAt(int row, int column)
            return tableModel.getValueAt(modelIndex(row), column);
        }code problem II:
        public int modelIndex(int viewIndex)
                 return getViewToModel()[viewIndex].modelIndex;     
        }TableSroter class:
    package com.shared.model;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import java.util.List;
    import javax.swing.*;
    import javax.swing.event.TableModelEvent;
    import javax.swing.event.TableModelListener;
    import javax.swing.table.*;
    * TableSorter is a decorator for TableModels; adding sorting
    * functionality to a supplied TableModel. TableSorter does
    * not store or copy the data in its TableModel; instead it maintains
    * a map from the row indexes of the view to the row indexes of the
    * model. As requests are made of the sorter (like getValueAt(row, col))
    * they are passed to the underlying model after the row numbers
    * have been translated via the internal mapping array. This way,
    * the TableSorter appears to hold another copy of the table
    * with the rows in a different order.
    * <p/>
    * TableSorter registers itself as a listener to the underlying model,
    * just as the JTable itself would. Events recieved from the model
    * are examined, sometimes manipulated (typically widened), and then
    * passed on to the TableSorter's listeners (typically the JTable).
    * If a change to the model has invalidated the order of TableSorter's
    * rows, a note of this is made and the sorter will resort the
    * rows the next time a value is requested.
    * <p/>
    * When the tableHeader property is set, either by using the
    * setTableHeader() method or the two argument constructor, the
    * table header may be used as a complete UI for TableSorter.
    * The default renderer of the tableHeader is decorated with a renderer
    * that indicates the sorting status of each column. In addition,
    * a mouse listener is installed with the following behavior:
    * <ul>
    * <li>
    * Mouse-click: Clears the sorting status of all other columns
    * and advances the sorting status of that column through three
    * values: {NOT_SORTED, ASCENDING, DESCENDING} (then back to
    * NOT_SORTED again).
    * <li>
    * SHIFT-mouse-click: Clears the sorting status of all other columns
    * and cycles the sorting status of the column through the same
    * three values, in the opposite order: {NOT_SORTED, DESCENDING, ASCENDING}.
    * <li>
    * CONTROL-mouse-click and CONTROL-SHIFT-mouse-click: as above except
    * that the changes to the column do not cancel the statuses of columns
    * that are already sorting - giving a way to initiate a compound
    * sort.
    * </ul>
    * <p/>
    * This is a long overdue rewrite of a class of the same name that
    * first appeared in the swing table demos in 1997.
    * @author Philip Milne
    * @author Brendon McLean
    * @author Dan van Enckevort
    * @author Parwinder Sekhon
    * @version 2.0 02/27/04
    public class TableSorter extends AbstractTableModel
        protected TableModel tableModel;
        public static final int DESCENDING = -1;
        public static final int NOT_SORTED = 0;
        public static final int ASCENDING = 1;
        private static Directive EMPTY_DIRECTIVE = new Directive(-1, NOT_SORTED);
        public static final Comparator COMPARABLE_COMAPRATOR = new Comparator()
            public int compare(Object o1, Object o2)
                return ((Comparable) o1).compareTo(o2);
        public static final Comparator LEXICAL_COMPARATOR = new Comparator()
            public int compare(Object o1, Object o2)
                return o1.toString().compareTo(o2.toString());
        private Row[] viewToModel;
        private int[] modelToView;
        private JTableHeader tableHeader;
        private MouseListener mouseListener;
        private TableModelListener tableModelListener;
        private Map columnComparators = new HashMap();
        private List sortingColumns = new ArrayList();
        public TableSorter()
            this.mouseListener = new MouseHandler();
            this.tableModelListener = new TableModelHandler();
        public TableSorter(TableModel tableModel)
            this();
            setTableModel(tableModel);
        public TableSorter(TableModel tableModel, JTableHeader tableHeader)
            this();
            setTableHeader(tableHeader);
            setTableModel(tableModel);
        private void clearSortingState()
            viewToModel = null;
            modelToView = null;
        public TableModel getTableModel()
            return tableModel;
        public void setTableModel(TableModel tableModel)
            if (this.tableModel != null)
                this.tableModel.removeTableModelListener(tableModelListener);
            this.tableModel = tableModel;
            if (this.tableModel != null)
                this.tableModel.addTableModelListener(tableModelListener);
            clearSortingState();
            fireTableStructureChanged();
        public JTableHeader getTableHeader()
            return tableHeader;
        public void setTableHeader(JTableHeader tableHeader)
            if (this.tableHeader != null)
                this.tableHeader.removeMouseListener(mouseListener);
                TableCellRenderer defaultRenderer = this.tableHeader.getDefaultRenderer();
                if (defaultRenderer instanceof SortableHeaderRenderer)
                    this.tableHeader.setDefaultRenderer(((SortableHeaderRenderer) defaultRenderer).tableCellRenderer);
            this.tableHeader = tableHeader;
            if (this.tableHeader != null)
                this.tableHeader.addMouseListener(mouseListener);
                this.tableHeader.setDefaultRenderer
                        new SortableHeaderRenderer(this.tableHeader.getDefaultRenderer())
        public boolean isSorting()
            return sortingColumns.size() != 0;
        private Directive getDirective(int column)
            for (int i = 0; i < sortingColumns.size(); i++)
                Directive directive = (Directive)sortingColumns.get(i);
                if (directive.column == column)
                    return directive;
            return EMPTY_DIRECTIVE;
        public int getSortingStatus(int column)
            return getDirective(column).direction;
        private void sortingStatusChanged()
            clearSortingState();
            fireTableDataChanged();
            if (tableHeader != null)
                tableHeader.repaint();
        public void setSortingStatus(int column, int status)
            Directive directive = getDirective(column);
            if (directive != EMPTY_DIRECTIVE)
                sortingColumns.remove(directive);
            if (status != NOT_SORTED)
                sortingColumns.add(new Directive(column, status));
            sortingStatusChanged();
        protected Icon getHeaderRendererIcon(int column, int size)
            Directive directive = getDirective(column);
            if (directive == EMPTY_DIRECTIVE)
                return null;
            return new Arrow(directive.direction == DESCENDING, size, sortingColumns.indexOf(directive));
        private void cancelSorting()
            sortingColumns.clear();
            sortingStatusChanged();
        public void setColumnComparator(Class type, Comparator comparator)
            if (comparator == null)
                columnComparators.remove(type);
            else
                columnComparators.put(type, comparator);
        protected Comparator getComparator(int column)
            Class columnType = tableModel.getColumnClass(column);
            Comparator comparator = (Comparator) columnComparators.get(columnType);
            if (comparator != null)
                return comparator;
            if (Comparable.class.isAssignableFrom(columnType))
                return COMPARABLE_COMAPRATOR;
            return LEXICAL_COMPARATOR;
        private Row[] getViewToModel()
            if (viewToModel == null)
                int tableModelRowCount = tableModel.getRowCount();
                viewToModel = new Row[tableModelRowCount];
                for (int row = 0; row < tableModelRowCount; row++)
                    viewToModel[row] = new Row(row);
                if (isSorting())
                    Arrays.sort(viewToModel);
            return viewToModel;
        public int modelIndex(int viewIndex)
                 return getViewToModel()[viewIndex].modelIndex;     
        private int[] getModelToView()
            if (modelToView == null)
                int n = getViewToModel().length;
                modelToView = new int[n];
                for (int i = 0; i < n; i++)
                    modelToView[modelIndex(i)] = i;
            return modelToView;
        // TableModel interface methods
        public int getRowCount()
            return (tableModel == null) ? 0 : tableModel.getRowCount();
        public int getColumnCount()
            return (tableModel == null) ? 0 : tableModel.getColumnCount();
        public String getColumnName(int column)
            return tableModel.getColumnName(column);
        public Class getColumnClass(int column)
            return tableModel.getColumnClass(column);
        public boolean isCellEditable(int row, int column)
            return tableModel.isCellEditable(modelIndex(row), column);
        public Object getValueAt(int row, int column)
            return tableModel.getValueAt(modelIndex(row), column);
        public void setValueAt(Object aValue, int row, int column)
            tableModel.setValueAt(aValue, modelIndex(row), column);
        // Helper classes
        private class Row implements Comparable
            private int modelIndex;
            public Row(int index)
                this.modelIndex = index;
            public int compareTo(Object o)
                int row1 = modelIndex;
                int row2 = ((Row) o).modelIndex;
                for (Iterator it = sortingColumns.iterator(); it.hasNext();)
                    Directive directive = (Directive) it.next();
                    int column = directive.column;
                    Object o1 = tableModel.getValueAt(row1, column);
                    Object o2 = tableModel.getValueAt(row2, column);
                    int comparison = 0;
                    // Define null less than everything, except null.
                    if (o1 == null && o2 == null)
                        comparison = 0;
                    } else if (o1 == null)
                        comparison = -1;
                    } else if (o2 == null)
                        comparison = 1;
                    } else {
                        comparison = getComparator(column).compare(o1, o2);
                    if (comparison != 0)
                        return directive.direction == DESCENDING ? -comparison : comparison;
                return 0;
        private class TableModelHandler implements TableModelListener
            public void tableChanged(TableModelEvent e)
                // If we're not sorting by anything, just pass the event along.            
                if (!isSorting())
                    clearSortingState();
                    fireTableChanged(e);
                    return;
                // If the table structure has changed, cancel the sorting; the            
                // sorting columns may have been either moved or deleted from            
                // the model.
                if (e.getFirstRow() == TableModelEvent.HEADER_ROW)
                    cancelSorting();
                    fireTableChanged(e);
                    return;
                // We can map a cell event through to the view without widening            
                // when the following conditions apply:
                // a) all the changes are on one row (e.getFirstRow() == e.getLastRow()) and,
                // b) all the changes are in one column (column != TableModelEvent.ALL_COLUMNS) and,
                // c) we are not sorting on that column (getSortingStatus(column) == NOT_SORTED) and,
                // d) a reverse lookup will not trigger a sort (modelToView != null)
                // Note: INSERT and DELETE events fail this test as they have column == ALL_COLUMNS.
                // The last check, for (modelToView != null) is to see if modelToView
                // is already allocated. If we don't do this check; sorting can become
                // a performance bottleneck for applications where cells 
                // change rapidly in different parts of the table. If cells
                // change alternately in the sorting column and then outside of            
                // it this class can end up re-sorting on alternate cell updates -
                // which can be a performance problem for large tables. The last
                // clause avoids this problem.
                int column = e.getColumn();
                if (e.getFirstRow() == e.getLastRow()
                        && column != TableModelEvent.ALL_COLUMNS
                        && getSortingStatus(column) == NOT_SORTED
                        && modelToView != null)
                    int viewIndex = getModelToView()[e.getFirstRow()];
                    fireTableChanged(new TableModelEvent(TableSorter.this,
                                                         viewIndex, viewIndex,
                                                         column, e.getType()));
                    return;
                // Something has happened to the data that may have invalidated the row order.
                clearSortingState();
                fireTableDataChanged();
                return;
        private class MouseHandler extends MouseAdapter
            public void mouseClicked(MouseEvent e)
                JTableHeader h = (JTableHeader) e.getSource();
                TableColumnModel columnModel = h.getColumnModel();
                int viewColumn = columnModel.getColumnIndexAtX(e.getX());
                int column = columnModel.getColumn(viewColumn).getModelIndex();
                if (column != -1)
                    int status = getSortingStatus(column);
                    if (!e.isControlDown())
                        cancelSorting();
                    // Cycle the sorting states through {NOT_SORTED, ASCENDING, DESCENDING} or
                    // {NOT_SORTED, DESCENDING, ASCENDING} depending on whether shift is pressed.
                    status = status + (e.isShiftDown() ? -1 : 1);
                    status = (status + 4) % 3 - 1; // signed mod, returning {-1, 0, 1}
                    setSortingStatus(column, status);
        private static class Arrow implements Icon
            private boolean descending;
            private int size;
            private int priority;
            public Arrow(boolean descending, int size, int priority)
                this.descending = descending;
                this.size = size;
                this.priority = priority;
            public void paintIcon(Component c, Graphics g, int x, int y)
                Color color = c == null ? Color.GRAY : c.getBackground();            
                // In a compound sort, make each succesive triangle 20%
                // smaller than the previous one.
                int dx = (int)(size/2*Math.pow(0.8, priority));
                int dy = descending ? dx : -dx;
                // Align icon (roughly) with font baseline.
                y = y + 5*size/6 + (descending ? -dy : 0);
                int shift = descending ? 1 : -1;
                g.translate(x, y);
                // Right diagonal.
                g.setColor(color.darker());
                g.drawLine(dx / 2, dy, 0, 0);
                g.drawLine(dx / 2, dy + shift, 0, shift);
                // Left diagonal.
                g.setColor(color.brighter());
                g.drawLine(dx / 2, dy, dx, 0);
                g.drawLine(dx / 2, dy + shift, dx, shift);
                // Horizontal line.
                if (descending) {
                    g.setColor(color.darker().darker());
                } else {
                    g.setColor(color.brighter().brighter());
                g.drawLine(dx, 0, 0, 0);
                g.setColor(color);
                g.translate(-x, -y);
            public int getIconWidth()
                return size;
            public int getIconHeight()
                return size;
        private class SortableHeaderRenderer implements TableCellRenderer
            private TableCellRenderer tableCellRenderer;
            public SortableHeaderRenderer(TableCellRenderer tableCellRenderer)
                this.tableCellRenderer = tableCellRenderer;
            public Component getTableCellRendererComponent(JTable table,
                                                           Object value,
                                                           boolean isSelected,
                                                           boolean hasFocus,
                                                           int row,
                                                           int column)
                Component c = tableCellRenderer.getTableCellRendererComponent(table,
                        value, isSelected, hasFocus, row, column);
                if (c instanceof JLabel) {
                    JLabel l = (JLabel) c;
                    l.setHorizontalTextPosition(JLabel.LEFT);
                    int modelColumn = table.convertColumnIndexToModel(column);
                    l.setIcon(getHeaderRendererIcon(modelColumn, l.getFont().getSize()));
                return c;
        private static class Directive
            private int column;
            private int direction;
            public Directive(int column, int direction)
                this.column = column;
                this.direction = direction;
    }any input will be appreciated.
    thanks
    Peter

    The code you posted doesn't help us at all. Its just a duplicate of the code from the tutorial. The custom code is what you have written. For example do you update the TableModel from the Event Thread? Do you update the SortModel or the DefaultTableModel? If you actually provide your test code and somebody has already downloaded the sort classes, then maybe they will test your code against the classes. But I doubt if people will download the sort classes and create a test program just to see if they can duplicate your results (at least I know I'm not about to).

  • Crystal Reports 9: Page Header plus Page Footer is too large for the page.

    Hi,
    I have a report that has the following sections.
    GH1
    GH2a
    GH2b - has a sub report
    GH2c - has another sub report
    GH3
    GH4
    GH5
    details - suppressed
    GF5 - suppressed
    GF4 - suppressed
    GF3 - suppressed
    GF2 - suppressed
    GF1 - suppressed
    The report works fine wehn I run it using Crystal Designer.I am using CR version 9.2.2.693.
    When I try to load the report in my application, I get the following error.
    Crystal Report Windows Forms Viewer
    Page Header plus Page Footer is too large for the page.Error in File rptName.rpt:
    Page header or footer longer than a page.
    OK  
    There are no 'suppress blank sections' option set in the sections where the sub-Reports are.
    I also tried setting the No Default Printer option.
    The report gets loaded from the application only when I set 'New Page after' in the sections where there are sub-Reports.
    I do not want to do this; Is there a workaround?
    Thank you.

    Can someone tell me if this problem is being worked on as it looks as thogh none of the problems regarding the message u2018Page Header plus Page Footer is too large for the pageu2019 have been addressed.
    We have several reports that were written in Crystal 7 (I think) and worked in Crystal 9 and X1R2 but now give the above error. We have tried jigging the report in line with the various suggestions but at best can get them to run through successfully with one lot of data and then fail on the second or subsequent pages when you vary the data or report format even slightly. We can report on every bit of data separately or in various combinations but not in others. Changing the bottom page margin by 0.01 cm can cause it to fail on page 7 instead of page 530 (for example). We certainly do not have large page headers (just over 2cm) or page footers (about 0.3cm). We do have some subreports in the details section but have used 'fit to section', added 'keep together', removed u2018keep togetheru2019 from just about everything we can (in desperation) but to no avail. We cannot see a pattern to what is happening. It would be encouraging to know that someone is actually working on this fault.

Maybe you are looking for

  • Continuous write no longer works after upgrade

    Hello, After upgrading a computer motherboard, OS (XP to Win7), and NIDAQmx (9.40 to 9.80) simultaneously the Labview 2011 32-bit vi we use to run our lab bus control system no longer works (the two most pertinent vi's are included here).  My next mo

  • Adding a plug-in to just one audio file?

    Hello, I'm really new to Logic Pro and I was curious if there is a way to add a plug-in to just one audio file in a track and not the whole track?  Thanks!

  • MsiInstaller - 1024

    This error message in event log: Source: MsiInstaller ID: 1024 Product: Adobe Reader XI - Russian - isn't possible to set "{AC76BA86-7AD7-0000-2550-7A8C40011008}" service pack. Error state number 1625. The Windows installer doesn't manage to create l

  • HT5312 I forgot my security question answers, how do I retrieve or change them?

    I forgot my security question answers, how can I retrieve or change them?

  • Excel Tools Goal Seek Equivalent?

    I looking for an action in Numbers that would act like excel's "goal seek", where you select a result cell, designate a seek value, and then select a "change" cell, push go and get a nice quick iteration. Example, you have a complex equation that pul