mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 06:17:34 +00:00
Utilities: Add a pdf
utility
This utility will learn tricks such as extracting images from PDFs and dumping tables from PDFs so that we can create code from specs. It also allows testing LibPDF things in lagom, and allows testing reading large amounts of PDFs using a shell script.
This commit is contained in:
parent
e7e454f1d6
commit
efad31dac1
3 changed files with 51 additions and 0 deletions
47
Userland/Utilities/pdf.cpp
Normal file
47
Userland/Utilities/pdf.cpp
Normal file
|
@ -0,0 +1,47 @@
|
|||
/*
|
||||
* Copyright (c) 2023, Nico Weber <thakis@chromium.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibCore/ArgsParser.h>
|
||||
#include <LibCore/File.h>
|
||||
#include <LibCore/MappedFile.h>
|
||||
#include <LibPDF/Document.h>
|
||||
|
||||
static PDF::PDFErrorOr<int> pdf_main(Main::Arguments arguments)
|
||||
{
|
||||
Core::ArgsParser args_parser;
|
||||
|
||||
StringView in_path;
|
||||
args_parser.add_positional_argument(in_path, "Path to input image file", "FILE");
|
||||
|
||||
args_parser.parse(arguments);
|
||||
|
||||
auto file = TRY(Core::MappedFile::map(in_path));
|
||||
|
||||
auto document = TRY(PDF::Document::create(file->bytes()));
|
||||
|
||||
if (auto handler = document->security_handler(); handler && !handler->has_user_password()) {
|
||||
// FIXME: Add a flag for passing in a password and suggest it in this diag.
|
||||
warnln("PDF requires password");
|
||||
return 1;
|
||||
}
|
||||
|
||||
TRY(document->initialize());
|
||||
|
||||
outln("{} pages", document->get_page_count());
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||
{
|
||||
auto maybe_error = pdf_main(move(arguments));
|
||||
if (maybe_error.is_error()) {
|
||||
auto error = maybe_error.release_error();
|
||||
warnln("{}", error.message());
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue