The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Changes 08
MANIFEST 21
META.yml 11
Makefile.PL 11
README 11
barcode.pl~ 230
dist.ini 11
lib/PDF/API2/Annotation.pm 11
lib/PDF/API2/Basic/PDF/Array.pm 11
lib/PDF/API2/Basic/PDF/Bool.pm 11
lib/PDF/API2/Basic/PDF/Dict.pm 11
lib/PDF/API2/Basic/PDF/File.pm 11
lib/PDF/API2/Basic/PDF/Filter/ASCII85Decode.pm 11
lib/PDF/API2/Basic/PDF/Filter/ASCIIHexDecode.pm 11
lib/PDF/API2/Basic/PDF/Filter/FlateDecode.pm 11
lib/PDF/API2/Basic/PDF/Filter/LZWDecode.pm 11
lib/PDF/API2/Basic/PDF/Filter/RunLengthDecode.pm 11
lib/PDF/API2/Basic/PDF/Filter.pm 11
lib/PDF/API2/Basic/PDF/Literal.pm 11
lib/PDF/API2/Basic/PDF/Name.pm 11
lib/PDF/API2/Basic/PDF/Null.pm 11
lib/PDF/API2/Basic/PDF/Number.pm 11
lib/PDF/API2/Basic/PDF/Objind.pm 11
lib/PDF/API2/Basic/PDF/Page.pm 11
lib/PDF/API2/Basic/PDF/Pages.pm 11
lib/PDF/API2/Basic/PDF/String.pm 11
lib/PDF/API2/Basic/PDF/Utils.pm 11
lib/PDF/API2/Content/Text.pm 11
lib/PDF/API2/Content.pm 11
lib/PDF/API2/Lite.pm 11
lib/PDF/API2/Matrix.pm 11
lib/PDF/API2/NamedDestination.pm 11
lib/PDF/API2/Outline.pm 11
lib/PDF/API2/Outlines.pm 11
lib/PDF/API2/Page.pm 11
lib/PDF/API2/Resource/BaseFont.pm 11
lib/PDF/API2/Resource/CIDFont/CJKFont.pm 11
lib/PDF/API2/Resource/CIDFont/TrueType/FontFile.pm 11
lib/PDF/API2/Resource/CIDFont/TrueType.pm 11
lib/PDF/API2/Resource/CIDFont.pm 11
lib/PDF/API2/Resource/ColorSpace/DeviceN.pm 11
lib/PDF/API2/Resource/ColorSpace/Indexed/ACTFile.pm 11
lib/PDF/API2/Resource/ColorSpace/Indexed/Hue.pm 11
lib/PDF/API2/Resource/ColorSpace/Indexed/WebColor.pm 11
lib/PDF/API2/Resource/ColorSpace/Indexed.pm 11
lib/PDF/API2/Resource/ColorSpace/Separation.pm 11
lib/PDF/API2/Resource/ColorSpace.pm 11
lib/PDF/API2/Resource/Colors.pm 11
lib/PDF/API2/Resource/ExtGState.pm 11
lib/PDF/API2/Resource/Font/BdFont.pm 11
lib/PDF/API2/Resource/Font/CoreFont/bankgothic.pm 11
lib/PDF/API2/Resource/Font/CoreFont/courier.pm 11
lib/PDF/API2/Resource/Font/CoreFont/courierbold.pm 11
lib/PDF/API2/Resource/Font/CoreFont/courierboldoblique.pm 11
lib/PDF/API2/Resource/Font/CoreFont/courieroblique.pm 11
lib/PDF/API2/Resource/Font/CoreFont/georgia.pm 11
lib/PDF/API2/Resource/Font/CoreFont/georgiabold.pm 11
lib/PDF/API2/Resource/Font/CoreFont/georgiabolditalic.pm 11
lib/PDF/API2/Resource/Font/CoreFont/georgiaitalic.pm 11
lib/PDF/API2/Resource/Font/CoreFont/helvetica.pm 11
lib/PDF/API2/Resource/Font/CoreFont/helveticabold.pm 11
lib/PDF/API2/Resource/Font/CoreFont/helveticaboldoblique.pm 11
lib/PDF/API2/Resource/Font/CoreFont/helveticaoblique.pm 11
lib/PDF/API2/Resource/Font/CoreFont/symbol.pm 11
lib/PDF/API2/Resource/Font/CoreFont/timesbold.pm 11
lib/PDF/API2/Resource/Font/CoreFont/timesbolditalic.pm 11
lib/PDF/API2/Resource/Font/CoreFont/timesitalic.pm 11
lib/PDF/API2/Resource/Font/CoreFont/timesroman.pm 11
lib/PDF/API2/Resource/Font/CoreFont/trebuchet.pm 11
lib/PDF/API2/Resource/Font/CoreFont/trebuchetbold.pm 11
lib/PDF/API2/Resource/Font/CoreFont/trebuchetbolditalic.pm 11
lib/PDF/API2/Resource/Font/CoreFont/trebuchetitalic.pm 11
lib/PDF/API2/Resource/Font/CoreFont/verdana.pm 11
lib/PDF/API2/Resource/Font/CoreFont/verdanabold.pm 11
lib/PDF/API2/Resource/Font/CoreFont/verdanabolditalic.pm 11
lib/PDF/API2/Resource/Font/CoreFont/verdanaitalic.pm 11
lib/PDF/API2/Resource/Font/CoreFont/webdings.pm 11
lib/PDF/API2/Resource/Font/CoreFont/wingdings.pm 11
lib/PDF/API2/Resource/Font/CoreFont/zapfdingbats.pm 11
lib/PDF/API2/Resource/Font/CoreFont.pm 11
lib/PDF/API2/Resource/Font/Postscript.pm 11
lib/PDF/API2/Resource/Font/SynFont.pm 11
lib/PDF/API2/Resource/Font.pm 11
lib/PDF/API2/Resource/Glyphs.pm 11
lib/PDF/API2/Resource/PaperSizes.pm 11
lib/PDF/API2/Resource/Pattern.pm 11
lib/PDF/API2/Resource/Shading.pm 11
lib/PDF/API2/Resource/UniFont.pm 11
lib/PDF/API2/Resource/XObject/Form/BarCode/codabar.pm 11
lib/PDF/API2/Resource/XObject/Form/BarCode/code128.pm 11
lib/PDF/API2/Resource/XObject/Form/BarCode/code3of9.pm 11
lib/PDF/API2/Resource/XObject/Form/BarCode/ean13.pm 11
lib/PDF/API2/Resource/XObject/Form/BarCode/int2of5.pm 11
lib/PDF/API2/Resource/XObject/Form/BarCode.pm 11
lib/PDF/API2/Resource/XObject/Form/Hybrid.pm 11
lib/PDF/API2/Resource/XObject/Form.pm 11
lib/PDF/API2/Resource/XObject/Image/GD.pm 11
lib/PDF/API2/Resource/XObject/Image/GIF.pm 11
lib/PDF/API2/Resource/XObject/Image/JPEG.pm 11
lib/PDF/API2/Resource/XObject/Image/PNG.pm 11
lib/PDF/API2/Resource/XObject/Image/PNM.pm 11
lib/PDF/API2/Resource/XObject/Image/TIFF.pm 11
lib/PDF/API2/Resource/XObject/Image.pm 11
lib/PDF/API2/Resource/XObject.pm 11
lib/PDF/API2/Resource.pm 11
lib/PDF/API2/UniWrap.pm 11
lib/PDF/API2/Util.pm 11
lib/PDF/API2/Win32.pm 11
lib/PDF/API2.pm 1015
t/rt69503.t 034
t/rt69503.t~ 110
111 files changed (This is a version diff) 151163
@@ -1,3 +1,11 @@
+2.023     2014-09-12
+
+    - The fix for [RT #69503] broke a previously-working case where a
+      page object could be passed (and was expected).  The -firstpage
+      option now accepts a page object or a page number.  Thanks to
+      Marco Pessotto for the bug report and test.
+
+
 2.022     2014-07-04
 
     - Added $pdf->version() get/set method.  When opening an existing
@@ -6,7 +6,6 @@ META.yml
 Makefile.PL
 PATENTS
 README
-barcode.pl~
 contrib/combine_pdfs.pl
 contrib/pdf-deoptimize.pl
 contrib/pdf-optimize.pl
@@ -170,7 +169,7 @@ t/resources/1x1.jpg
 t/resources/1x1.png
 t/resources/1x1.tif
 t/resources/sample.pdf
-t/rt69503.t~
+t/rt69503.t
 t/string.t
 t/text.t
 t/tiff.t
@@ -18,4 +18,4 @@ requires:
   perl: v5.8.1
 resources:
   repository: https://bitbucket.org/ssimms/pdfapi2
-version: 2.022
+version: 2.023
@@ -25,7 +25,7 @@ my %WriteMakefileArgs = (
     "Font::TTF" => 0
   },
   "TEST_REQUIRES" => {},
-  "VERSION" => "2.022",
+  "VERSION" => "2.023",
   "test" => {
     "TESTS" => "t/*.t"
   }
@@ -1,7 +1,7 @@
 
 
 This archive contains the distribution PDF-API2,
-version 2.022:
+version 2.023:
 
   Facilitates the creation and modification of PDF files
 
@@ -1,23 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-use PDF::API2;
-
-my $pdf = PDF::API2->new();
-my $page = $pdf->page();
-my $gfx = $page->gfx();
-
-my $barcode = $pdf->xo_ean13(
-    -code => '0123456789012',
-    -zone => 10,
-    -umzn => 0,
-    -lmzn => 10,
-    -font => $pdf->corefont('Helvetica'),
-    -fnsz => 10,
-);
-
-$gfx->formimage($barcode, 100, 100, 1);
-
-$pdf->saveas('barcode.pdf');
@@ -1,5 +1,5 @@
 name = PDF-API2
-version = 2.022
+version = 2.023
 author  = Steve Simms <steve@deefs.net>
 license = LGPL_2_1
 copyright_holder = Steve Simms
@@ -1,6 +1,6 @@
 package PDF::API2::Annotation;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Dict';
 
@@ -12,7 +12,7 @@
 #=======================================================================
 package PDF::API2::Basic::PDF::Array;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Objind';
 
@@ -12,7 +12,7 @@
 #=======================================================================
 package PDF::API2::Basic::PDF::Bool;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::String';
 
@@ -12,7 +12,7 @@
 #=======================================================================
 package PDF::API2::Basic::PDF::Dict;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Objind';
 
@@ -14,7 +14,7 @@
 #=======================================================================
 package PDF::API2::Basic::PDF::File;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 =head1 NAME
 
@@ -1,6 +1,6 @@
 package PDF::API2::Basic::PDF::Filter::ASCII85Decode;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Filter';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Basic::PDF::Filter::ASCIIHexDecode;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Filter';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Basic::PDF::Filter::FlateDecode;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Filter';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Basic::PDF::Filter::LZWDecode;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Filter::FlateDecode';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Basic::PDF::Filter::RunLengthDecode;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Filter';
 
@@ -12,7 +12,7 @@
 #=======================================================================
 package PDF::API2::Basic::PDF::Filter;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use PDF::API2::Basic::PDF::Filter::ASCII85Decode;
 use PDF::API2::Basic::PDF::Filter::ASCIIHexDecode;
@@ -1,7 +1,7 @@
 # Literal PDF Object for Dirty Hacks ...
 package PDF::API2::Basic::PDF::Literal;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Objind';
 
@@ -12,7 +12,7 @@
 #=======================================================================
 package PDF::API2::Basic::PDF::Name;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::String';
 
@@ -12,7 +12,7 @@
 #=======================================================================
 package PDF::API2::Basic::PDF::Null;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Objind';
 
@@ -12,7 +12,7 @@
 #=======================================================================
 package PDF::API2::Basic::PDF::Number;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::String';
 
@@ -12,7 +12,7 @@
 #=======================================================================
 package PDF::API2::Basic::PDF::Objind;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 =head1 NAME
 
@@ -12,7 +12,7 @@
 #=======================================================================
 package PDF::API2::Basic::PDF::Page;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Pages';
 
@@ -12,7 +12,7 @@
 #=======================================================================
 package PDF::API2::Basic::PDF::Pages;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Dict';
 
@@ -12,7 +12,7 @@
 #=======================================================================
 package PDF::API2::Basic::PDF::String;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Objind';
 
@@ -12,7 +12,7 @@
 #=======================================================================
 package PDF::API2::Basic::PDF::Utils;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 =head1 NAME
 
@@ -1,6 +1,6 @@
 package PDF::API2::Content::Text;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use warnings;
 use strict;
@@ -1,6 +1,6 @@
 package PDF::API2::Content;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Dict';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Lite;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 BEGIN {
 
@@ -10,7 +10,7 @@
 #=======================================================================
 package PDF::API2::Matrix;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 sub new {
     my $type = shift;
@@ -1,6 +1,6 @@
 package PDF::API2::NamedDestination;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Dict';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Outline;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Dict';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Outlines;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use warnings;
 use strict;
@@ -1,6 +1,6 @@
 package PDF::API2::Page;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Pages';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::BaseFont;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::CIDFont::CJKFont;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::CIDFont';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::CIDFont::TrueType::FontFile;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Dict';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::CIDFont::TrueType;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::CIDFont';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::CIDFont;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::BaseFont';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::ColorSpace::DeviceN;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::ColorSpace';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::ColorSpace::Indexed::ACTFile;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::ColorSpace::Indexed';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::ColorSpace::Indexed::Hue;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::ColorSpace::Indexed';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::ColorSpace::Indexed::WebColor;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::ColorSpace::Indexed';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::ColorSpace::Indexed;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::ColorSpace';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::ColorSpace::Separation;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::ColorSpace';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::ColorSpace;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Array';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Colors;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use strict;
 use warnings;
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::ExtGState;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::BdFont;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::Font';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::bankgothic;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'BankGothicMediumBT',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::courier;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Courier',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::courierbold;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Courier-Bold',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::courierboldoblique;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Courier-BoldOblique',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::courieroblique;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Courier-Oblique',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::georgia;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Georgia',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::georgiabold;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Georgia,Bold',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::georgiabolditalic;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Georgia,BoldItalic',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::georgiaitalic;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Georgia,Italic',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::helvetica;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Helvetica',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::helveticabold;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Helvetica-Bold',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::helveticaboldoblique;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Helvetica-BoldOblique',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::helveticaoblique;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Helvetica-Oblique',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::symbol;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Symbol',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::timesbold;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Times-Bold',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::timesbolditalic;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Times-BoldItalic',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::timesitalic;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Times-Italic',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::timesroman;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Times-Roman',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::trebuchet;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'TrebuchetMS',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::trebuchetbold;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'TrebuchetMS,Bold',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::trebuchetbolditalic;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'TrebuchetMS,BoldItalic',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::trebuchetitalic;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'TrebuchetMS,Italic',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::verdana;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Verdana',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::verdanabold;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Verdana,Bold',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::verdanabolditalic;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Verdana,BoldItalic',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::verdanaitalic;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Verdana,Italic',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::webdings;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Webdings',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::wingdings;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'Wingdings',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont::zapfdingbats;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 $FONTDATA = {
     'fontname' => 'ZapfDingbats',
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::CoreFont;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::Font';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::Postscript;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::Font';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font::SynFont;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::Font';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Font;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::BaseFont';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Glyphs;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use strict;
 use warnings;
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::PaperSizes;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use strict;
 use warnings;
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Pattern;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::Shading;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::UniFont;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use Encode qw(:all);
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject::Form::BarCode::codabar;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::XObject::Form::BarCode';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject::Form::BarCode::code128;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::XObject::Form::BarCode';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject::Form::BarCode::code3of9;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::XObject::Form::BarCode';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject::Form::BarCode::ean13;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::XObject::Form::BarCode';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject::Form::BarCode::int2of5;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::XObject::Form::BarCode';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject::Form::BarCode;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::XObject::Form::Hybrid';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject::Form::Hybrid;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base qw(PDF::API2::Content PDF::API2::Resource::XObject::Form);
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject::Form;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::XObject';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject::Image::GD;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::XObject::Image';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject::Image::GIF;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::XObject::Image';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject::Image::JPEG;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::XObject::Image';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject::Image::PNG;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::XObject::Image';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject::Image::PNM;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 # For spec details, see man pages pam(5), pbm(5), pgm(5), pnm(5),
 # ppm(5), which were pasted into the __END__ of this file in an
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject::Image::TIFF;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::XObject::Image';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject::Image;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource::XObject';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource::XObject;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Resource';
 
@@ -1,6 +1,6 @@
 package PDF::API2::Resource;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use base 'PDF::API2::Basic::PDF::Dict';
 
@@ -1,6 +1,6 @@
 package PDF::API2::UniWrap;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 # Implements UAX#14: Line Breaking Properties
 # David Nesting <david@fastolfe.net>
@@ -1,6 +1,6 @@
 package PDF::API2::Util;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 no warnings qw[ recursion uninitialized ];
 
@@ -1,6 +1,6 @@
 package PDF::API2::Win32;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 no warnings qw[ deprecated recursion uninitialized ];
 
@@ -1,6 +1,6 @@
 package PDF::API2;
 
-our $VERSION = '2.022'; # VERSION
+our $VERSION = '2.023'; # VERSION
 
 use Carp;
 use Encode qw(:all);
@@ -303,7 +303,8 @@ B<Initial Page Options>:
 
 =item -firstpage => [ $page, %options ]
 
-Specifying the page to be displayed, plus one of the following options:
+Specifying the page (either a page number or a page object) to be
+displayed, plus one of the following options:
 
 =over
 
@@ -462,31 +463,35 @@ sub preferences {
         my ($page, %args) = @{$options{-firstpage}};
         $args{'-fit'} = 1 unless scalar keys %args;
 
+        # $page can be either a page number (which needs to be wrapped
+        # in PDFNum) or a page object (which doesn't).
+        $page = PDFNum($page) unless ref($page);
+
         if (defined $args{'-fit'}) {
-            $self->{'catalog'}->{'OpenAction'} = PDFArray(PDFNum($page), PDFName('Fit'));
+            $self->{'catalog'}->{'OpenAction'} = PDFArray($page, PDFName('Fit'));
         }
         elsif (defined $args{'-fith'}) {
-            $self->{'catalog'}->{'OpenAction'} = PDFArray(PDFNum($page), PDFName('FitH'), PDFNum($args{'-fith'}));
+            $self->{'catalog'}->{'OpenAction'} = PDFArray($page, PDFName('FitH'), PDFNum($args{'-fith'}));
         }
         elsif (defined $args{'-fitb'}) {
-            $self->{'catalog'}->{'OpenAction'} = PDFArray(PDFNum($page), PDFName('FitB'));
+            $self->{'catalog'}->{'OpenAction'} = PDFArray($page, PDFName('FitB'));
         }
         elsif (defined $args{'-fitbh'}) {
-            $self->{'catalog'}->{'OpenAction'} = PDFArray(PDFNum($page), PDFName('FitBH'), PDFNum($args{'-fitbh'}));
+            $self->{'catalog'}->{'OpenAction'} = PDFArray($page, PDFName('FitBH'), PDFNum($args{'-fitbh'}));
         }
         elsif (defined $args{'-fitv'}) {
-            $self->{'catalog'}->{'OpenAction'} = PDFArray(PDFNum($page), PDFName('FitV'), PDFNum($args{'-fitv'}));
+            $self->{'catalog'}->{'OpenAction'} = PDFArray($page, PDFName('FitV'), PDFNum($args{'-fitv'}));
         }
         elsif (defined $args{'-fitbv'}) {
-            $self->{'catalog'}->{'OpenAction'} = PDFArray(PDFNum($page), PDFName('FitBV'), PDFNum($args{'-fitbv'}));
+            $self->{'catalog'}->{'OpenAction'} = PDFArray($page, PDFName('FitBV'), PDFNum($args{'-fitbv'}));
         }
         elsif (defined $args{'-fitr'}) {
             croak 'insufficient parameters to -fitr => []' unless scalar @{$args{'-fitr'}} == 4;
-            $self->{'catalog'}->{'OpenAction'} = PDFArray(PDFNum($page), PDFName('FitR'), map { PDFNum($_) } @{$args{'-fitr'}});
+            $self->{'catalog'}->{'OpenAction'} = PDFArray($page, PDFName('FitR'), map { PDFNum($_) } @{$args{'-fitr'}});
         }
         elsif (defined $args{'-xyz'}) {
             croak 'insufficient parameters to -xyz => []' unless scalar @{$args{'-xyz'}} == 3;
-            $self->{'catalog'}->{'OpenAction'} = PDFArray(PDFNum($page), PDFName('XYZ'), map { PDFNum($_) } @{$args{'-xyz'}});
+            $self->{'catalog'}->{'OpenAction'} = PDFArray($page, PDFName('XYZ'), map { PDFNum($_) } @{$args{'-xyz'}});
         }
     }
     $self->{'pdf'}->out_obj($self->{'catalog'});
@@ -0,0 +1,34 @@
+use Test::More tests => 2;
+
+use strict;
+use warnings;
+
+use PDF::API2;
+
+# -firstpage as page number (original bug report)
+
+my $pdf = PDF::API2->new();
+my $page1 = $pdf->page();
+my $page2 = $pdf->page();
+
+$pdf->preferences(-firstpage => [2, -fit => 1]);
+
+my $output = $pdf->stringify();
+
+like($output,
+     qr/OpenAction \[ 2 \/Fit \]/,
+     q{-firstpage accepts a page number});
+
+# -firstpage as page object (regression)
+
+$pdf = PDF::API2->new();
+$page1 = $pdf->page();
+$page2 = $pdf->page();
+
+$pdf->preferences(-firstpage => [$page2, -fit => 1]);
+
+$output = $pdf->stringify();
+
+like($output,
+     qr/OpenAction \[ \d+ 0 R \/Fit \]/,
+     q{-firstpage accepts a page object});
@@ -1,11 +0,0 @@
-use Test::More;
-
-use strict;
-use warnings;
-
-use PDF::API2;
-
-my $pdf = PDF::API2->new();
-$pdf->page();
-$pdf->preferences(-firstpage => [1, -fit => 1]);
-