You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ms...@apache.org on 2016/07/01 19:46:29 UTC
svn commit: r1750999 - in
/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane:
Stream.java StreamPane.java
Author: msahyoun
Date: Fri Jul 1 19:46:29 2016
New Revision: 1750999
URL: http://svn.apache.org/viewvc?rev=1750999&view=rev
Log:
PDFBOX-3397: use UTF-8 when reading XML Metadata instead of ISO-8859-1
Modified:
pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane/Stream.java
pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane/StreamPane.java
Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane/Stream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane/Stream.java?rev=1750999&r1=1750998&r2=1750999&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane/Stream.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane/Stream.java Fri Jul 1 19:46:29 2016
@@ -45,6 +45,8 @@ public class Stream
private final COSStream stream;
private final boolean isThumb;
private final boolean isImage;
+ private final boolean isXmlMetadata;
+
private final Map<String, List<String>> filters;
/**
@@ -58,6 +60,7 @@ public class Stream
this.stream = cosStream;
this.isThumb = isThumb;
this.isImage = isImageStream(cosStream, isThumb);
+ this.isXmlMetadata = isXmlMetadataStream(cosStream);
filters = createFilterList(cosStream);
}
@@ -71,6 +74,16 @@ public class Stream
{
return isImage;
}
+
+ /**
+ * Return if this is stream is an Metadata stream.
+ *
+ * @return true if this a metadata stream and false otherwise.
+ */
+ public boolean isXmlMetadata()
+ {
+ return isXmlMetadata;
+ }
/**
* Return the available filter list. Only "Unfiltered" is returned if there is no filter and in
@@ -229,4 +242,9 @@ public class Stream
}
return dic.containsKey(COSName.SUBTYPE) && dic.getCOSName(COSName.SUBTYPE).equals(COSName.IMAGE);
}
+
+ private boolean isXmlMetadataStream(COSDictionary dic)
+ {
+ return dic.containsKey(COSName.SUBTYPE) && dic.getCOSName(COSName.SUBTYPE).equals(COSName.getPDFName("XML"));
+ }
}
Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane/StreamPane.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane/StreamPane.java?rev=1750999&r1=1750998&r2=1750999&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane/StreamPane.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane/StreamPane.java Fri Jul 1 19:46:29 2016
@@ -250,8 +250,13 @@ public class StreamPane implements Actio
@Override
protected StyledDocument doInBackground()
{
+ // default encoding to use when reading text base content
+ String encoding = "ISO-8859-1";
synchronized (stream)
{
+ if (stream.isXmlMetadata()) {
+ encoding = "UTF-8";
+ }
InputStream inputStream = stream.getStream(filterKey);
if (isContentStream && Stream.UNFILTERED.equals(filterKey))
{
@@ -260,9 +265,9 @@ public class StreamPane implements Actio
{
return document;
}
- return getDocument(stream.getStream(filterKey));
+ return getDocument(stream.getStream(filterKey), encoding);
}
- return getDocument(inputStream);
+ return getDocument(inputStream, encoding);
}
}
@@ -283,7 +288,7 @@ public class StreamPane implements Actio
}
}
- private String getStringOfStream(InputStream ioStream)
+ private String getStringOfStream(InputStream ioStream, String encoding)
{
ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
@@ -301,7 +306,7 @@ public class StreamPane implements Actio
}
try
{
- return byteArray.toString("ISO-8859-1");
+ return byteArray.toString(encoding);
}
catch (UnsupportedEncodingException e)
{
@@ -310,12 +315,12 @@ public class StreamPane implements Actio
}
}
- private StyledDocument getDocument(InputStream inputStream)
+ private StyledDocument getDocument(InputStream inputStream, String encoding)
{
StyledDocument docu = new DefaultStyledDocument();
if (inputStream != null)
{
- String data = getStringOfStream(inputStream);
+ String data = getStringOfStream(inputStream, encoding);
try
{
docu.insertString(0, data, null);