This application is a Mac Cocoa GUI front end for the CPAN
module Fuse::PDF.
You can hand it most any PDF file and it will mount it
in /Volumes.
The command line version is much more powerful.
trailer to find the Catalog hash to find the Pages tree from which you can find a single Page hash...Catalog hash.%PDF-1.4 1 0 obj << /Type /Catalog /FusePDF << /FusePDF_FS 79 0 R >> /Metadata 78 0 R /Pages 2 0 R >> endobj 2 0 obj << /Type /Pages /Count 1 /Kids [ 5 0 R ] >> endobj 3 0 obj << /CreationDate (D:20071111223720Z) /Creator (Adobe Illustrator 10) /ModDate (D:20071111163806-06'00') /Producer (Adobe PDF library 5.00) >> endobj 5 0 obj << /Type /Page /ArtBox [ 135 603.67383 434.4668 679 ] /Contents 74 0 R /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /ColorSpace << /CS0 66 0 R /CS1 67 0 R >> /Font << /TT0 68 0 R >> /ProcSet [ /PDF /Text ] >> /Thumb 72 0 R /TrimBox [ 0 0 612 792 ] >> endobj
trailer << /ID [ <3ea45250c17a85697af93ca7662ae46f> <b6e75d95e111a3302f3c74228156deb2> ] /Info 3 0 R /Root 1 0 R /Size 80 >> startxref 265166 %%EOF
xref 0 80 0000000000 65535 f 0000000012 00000 n 0000000112 00000 n 0000000171 00000 n 0000000007 00001 f 0000000328 00000 n 0000000694 00000 n 0000000008 00001 f 0000000009 00001 f 0000000010 00001 f 0000000011 00001 f 0000000012 00001 f 0000000013 00001 f 0000000014 00001 f 0000000015 00001 f
use Fuse; Fuse::main( mountpoint => '/Volumes/mnt', getattr => \&fs_getattr, readlink => \&fs_readlink, getdir => \&fs_getdir, mknod => \&fs_mknod, mkdir => \&fs_mkdir, unlink => \&fs_unlink, rmdir => \&fs_rmdir, symlink => \&fs_symlink, rename => \&fs_rename, link => \&fs_link, chmod => \&fs_chmod, chown => \&fs_chown, truncate => \&fs_truncate, utime => \&fs_utime, open => \&fs_open, read => \&fs_read, write => \&fs_write, statfs => \&fs_statfs, threaded => 0, debug => 1);
sub fs_read {
my ($path, $size, $offset) = @_;
my ($f) = _parse_path($path);
return -$f if !ref $f;
return substr $f->{content}, $offset, $size;
}
sub fs_rmdir {
my ($path) = @_;
my ($p, $name) = _parse_path_to_parent($path);
return -$p if !ref $p;
my $f = $p->{files}->{$name};
return -ENOENT() if !ref $f;
return -ENOTDIR() if 'd' ne $f->{type};
return -ENOTEMPTY() if 0 != keys %{ $f->{files} };
delete $p->{files}->{$name};
$p->{nlink}--;
$p->{mtime} = time;
return 0;
}