You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2017/01/25 16:34:30 UTC
svn commit: r1780228 - in
/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger:
PDFDebugger.java pagepane/PagePane.java ui/DocumentEntry.java
ui/PageEntry.java
Author: tilman
Date: Wed Jan 25 16:34:30 2017
New Revision: 1780228
URL: http://svn.apache.org/viewvc?rev=1780228&view=rev
Log:
PDFBOX-2941: show page label when available
Modified:
pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java
pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/DocumentEntry.java
pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PageEntry.java
Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java?rev=1780228&r1=1780227&r2=1780228&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java Wed Jan 25 16:34:30 2017
@@ -104,6 +104,7 @@ import org.apache.pdfbox.debugger.ui.Rot
import org.apache.pdfbox.debugger.ui.Tree;
import org.apache.pdfbox.debugger.ui.ZoomMenu;
import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.common.PDPageLabels;
import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
import org.apache.pdfbox.printing.PDFPageable;
@@ -1413,4 +1414,33 @@ public class PDFDebugger extends JFrame
recentFilesMenu.setEnabled(true);
}
}
+
+ /**
+ * Convenience method to get the page label if available.
+ *
+ * @param document
+ * @param pageIndex 0-based page number.
+ * @return a page label or null if not available.
+ */
+ static public String getPageLabel(PDDocument document, int pageIndex)
+ {
+ PDPageLabels pageLabels;
+ try
+ {
+ pageLabels = document.getDocumentCatalog().getPageLabels();
+ }
+ catch (IOException ex)
+ {
+ return ex.getMessage();
+ }
+ if (pageLabels != null)
+ {
+ String[] labels = pageLabels.getLabelsByPageIndices();
+ if (labels[pageIndex] != null)
+ {
+ return labels[pageIndex];
+ }
+ }
+ return null;
+ }
}
Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java?rev=1780228&r1=1780227&r2=1780228&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java Wed Jan 25 16:34:30 2017
@@ -78,7 +78,14 @@ public class PagePane implements ActionL
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
String pageLabelText = pageIndex < 0 ? "Page number not found" : "Page " + (pageIndex + 1);
-
+
+ // append PDF page label, if available
+ String lbl = PDFDebugger.getPageLabel(document, pageIndex);
+ if (lbl != null)
+ {
+ pageLabelText += " - " + lbl;
+ }
+
JLabel pageLabel = new JLabel(pageLabelText);
pageLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
pageLabel.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 20));
Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/DocumentEntry.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/DocumentEntry.java?rev=1780228&r1=1780227&r2=1780228&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/DocumentEntry.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/DocumentEntry.java Wed Jan 25 16:34:30 2017
@@ -19,6 +19,7 @@ package org.apache.pdfbox.debugger.ui;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.pdfbox.debugger.PDFDebugger;
/**
* Represents an abstract view of a document in the tree view.
@@ -44,7 +45,8 @@ public class DocumentEntry
public PageEntry getPage(int index)
{
PDPage page = doc.getPages().get(index);
- return new PageEntry(page.getCOSObject(), index + 1);
+ String pageLabel = PDFDebugger.getPageLabel(doc, index);
+ return new PageEntry(page.getCOSObject(), index + 1, pageLabel);
}
public int indexOf(PageEntry page)
Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PageEntry.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PageEntry.java?rev=1780228&r1=1780227&r2=1780228&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PageEntry.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PageEntry.java Wed Jan 25 16:34:30 2017
@@ -30,11 +30,13 @@ public class PageEntry
{
private final COSDictionary dict;
private final int pageNum;
-
- public PageEntry(COSDictionary page, int pageNum)
+ private final String pageLabel;
+
+ public PageEntry(COSDictionary page, int pageNum, String pageLabel)
{
dict = page;
this.pageNum = pageNum;
+ this.pageLabel = pageLabel;
}
public COSDictionary getDict()
@@ -50,7 +52,7 @@ public class PageEntry
@Override
public String toString()
{
- return "Page: " + pageNum;
+ return "Page: " + pageNum + (pageLabel == null ? "" : " - " + pageLabel);
}
public String getPath()