NAME
DateTime::Format::PDF - PDF DateTime Parser and Formatter.
SYNOPSIS
use DateTime::Format::PDF;
my $obj = DateTime::Format::PDF->new;
my $dt = $obj->parse_datetime($pdf_date);
my $pdf_date = $obj->format_datetime($dt);
DESCRIPTION
This module understands the formats used by PDF file. It can be used to parse these formats in order to create DateTime objects, and it can take a DateTime object and produce a string representing it in a format accepted by PDF.
METHODS
new
my $obj = DateTime::Format::PDF->new(%params);
Constructor.
Returns instance of object.
parse_datetime
my $dt = $obj->parse_datetime($pdf_date);
Parse PDF datetime string.
Possible valid strings:
D:YYYY
D:YYYYMM
D:YYYYMMDD
D:YYYYMMDDHH
D:YYYYMMDDHHmm
D:YYYYMMDDHHmmSS
D:YYYYMMDDHHmmSSZ
D:YYYYMMDDHHmmSSOHHmm
D:YYYYMMDDHHmmSSOHH'mm
D:YYYYMMDDHHmmSSOHH'mm'
D:YYYYMMDDHHmmSSOHHmm'
Returns DateTime object.
format_datetime
my $pdf_date = $obj->format_datetime($dt);
Format DateTime object to PDF datetime string. Output value is D:YYYYMMDDHHmmSSOHHmm
.
Returns string.
ERRORS
format_datetime():
Bad DateTime object.
Value: %s
parse_datetime():
Invalid date format: %s
EXAMPLE1
use strict;
use warnings;
use DateTime::Format::PDF;
# Object.
my $obj = DateTime::Format::PDF->new;
# Parse date.
my $dt = $obj->parse_datetime("D:20240401084337-01'30");
# Print out.
print $dt->strftime("%a, %d %b %Y %H:%M:%S %z")."\n";
# Output like:
# Mon, 01 Apr 2024 08:43:37 -0130
EXAMPLE2
use strict;
use warnings;
use DateTime;
use DateTime::Format::PDF;
# Object.
my $obj = DateTime::Format::PDF->new;
# Example date.
my $dt = DateTime->now;
# Format.
my $pdf_date = $obj->format_datetime($dt);
# Print out.
print "PDF date: $pdf_date\n";
# Output like:
# PDF date: D:20240401084337+0000
EXAMPLE3
use strict;
use warnings;
use DateTime::Format::PDF;
use PDF::Builder;
if (@ARGV < 1) {
print STDERR "Usage: $0 pdf_file\n";
exit 1;
}
my $pdf_file = $ARGV[0];
# Open file.
my $pdf = PDF::Builder->open($pdf_file);
# Parser.
my $pdf_date_parser = DateTime::Format::PDF->new;
my ($dt_created, $dt_modified);
my $print_format = "%a, %d %b %Y %H:%M:%S %z";
if (defined $pdf->created) {
$dt_created = $pdf_date_parser->parse_datetime($pdf->created);
print "Created: ".$dt_created->strftime($print_format)."\n";
}
if (defined $pdf->modified) {
$dt_modified = $pdf_date_parser->parse_datetime($pdf->modified);
print "Modified: ".$dt_modified->strftime($print_format)."\n";
}
# Output:
# Created: Fri, 15 May 2009 08:40:48 +0200
# Modified: Fri, 15 May 2009 08:44:00 +0200
EXAMPLE4
use strict;
use warnings;
use DateTime::Format::PDF;
use PDF::API2;
if (@ARGV < 1) {
print STDERR "Usage: $0 pdf_file\n";
exit 1;
}
my $pdf_file = $ARGV[0];
# Open file.
my $pdf = PDF::API2->open($pdf_file);
# Get meta info.
my %meta = $pdf->info;
# Parser.
my $pdf_date_parser = DateTime::Format::PDF->new;
my ($dt_created, $dt_modified);
my $print_format = "%a, %d %b %Y %H:%M:%S %z";
if (exists $meta{'CreationDate'}) {
$dt_created = $pdf_date_parser->parse_datetime($meta{'CreationDate'});
print "Created: ".$dt_created->strftime($print_format)."\n";
}
if (exists $meta{'ModDate'}) {
$dt_modified = $pdf_date_parser->parse_datetime($meta{'ModDate'});
print "Modified: ".$dt_modified->strftime($print_format)."\n";
}
# Output:
# Created: Fri, 15 May 2009 08:40:48 +0200
# Modified: Fri, 15 May 2009 08:44:00 +0200
DEPENDENCIES
DateTime::Format::Builder, Error::Pure, Scalar::Util.
REPOSITORY
https://github.com/michal-josef-spacek/DateTime-Format-PDF
AUTHOR
Michal Josef Špaček mailto:skim@cpan.org
LICENSE AND COPYRIGHT
© 2024 Michal Josef Špaček
BSD 2-Clause License
VERSION
0.02