You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2023/06/27 19:10:51 UTC
svn commit: r1910638 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
Author: lehmi
Date: Tue Jun 27 19:10:51 2023
New Revision: 1910638
URL: http://svn.apache.org/viewvc?rev=1910638&view=rev
Log:
PDFBOX-5551: simplify
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java?rev=1910638&r1=1910637&r2=1910638&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java Tue Jun 27 19:10:51 2023
@@ -63,7 +63,9 @@ public class PDPage implements COSObject
* Log instance
*/
private static final Log LOG = LogFactory.getLog(PDPage.class);
-
+
+ private static final byte[] DELIMITER = new byte[] { '\n' };
+
private final COSDictionary page;
private PDResources pageResources;
private ResourceCache resourceCache;
@@ -167,40 +169,38 @@ public class PDPage implements COSObject
@Override
public RandomAccessRead getContentsForRandomAccess() throws IOException
{
- COSBase base = page.getDictionaryObject(COSName.CONTENTS);
- if (base instanceof COSStream)
+ COSStream contentStream = page.getCOSStream(COSName.CONTENTS);
+ if (contentStream != null)
{
try
{
- return ((COSStream) base).createView();
+ return contentStream.createView();
}
catch (IOException exception)
{
LOG.warn("skipped malformed content stream");
- return new RandomAccessReadBuffer(new byte[] { '\n' });
+ return new RandomAccessReadBuffer(DELIMITER);
}
}
- if (base instanceof COSArray && ((COSArray) base).size() > 0)
+ COSArray array = page.getCOSArray(COSName.CONTENTS);
+ if (array != null)
{
- byte[] delimiter = new byte[] { '\n' };
- List<COSBase> streams = ((COSArray) base).toList().stream() //
- .map(o -> o instanceof COSObject ? ((COSObject) o).getObject() : (COSBase) o) //
+ List<COSStream> streams = array.toList().stream() //
+ .map(o -> o instanceof COSObject ? ((COSObject) o).getObject() : o) //
+ .filter(b -> b instanceof COSStream) //
+ .map(b -> (COSStream) b) //
.collect(Collectors.toList());
List<RandomAccessRead> inputStreams = new ArrayList<>();
- streams.forEach(obj ->
+ streams.forEach(stream ->
{
- if (obj instanceof COSStream)
+ try
+ {
+ inputStreams.add(stream.createView());
+ inputStreams.add(new RandomAccessReadBuffer(DELIMITER));
+ }
+ catch (IOException exception)
{
- try
- {
- RandomAccessRead subStream = ((COSStream) obj).createView();
- inputStreams.add(subStream);
- inputStreams.add(new RandomAccessReadBuffer(delimiter));
- }
- catch (IOException exception)
- {
- LOG.warn("malformed substream of content stream skipped");
- }
+ LOG.warn("malformed substream of content stream skipped");
}
});
if (!inputStreams.isEmpty())