fixed rendering

This commit is contained in:
Kilian Schuettler 2025-02-15 17:49:10 +01:00
parent 7c2749aefa
commit c8003a57cb
6 changed files with 111 additions and 1090 deletions

View File

@ -19,7 +19,6 @@
"@tauri-apps/plugin-dialog": "~2",
"@tauri-apps/plugin-fs": "~2",
"@tauri-apps/plugin-opener": "^2",
"@tauri-apps/plugin-websocket": "~2",
"async-mutex": "^0.5.0",
"flowbite-svelte": "^0.47.4",
"flowbite-svelte-icons": "^2.0.2",

1136
src-tauri/Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -14,7 +14,6 @@ edition = "2021"
name = "pdf_forge_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[render]
[build-dependencies]
tauri-build = { version = "2", features = [] }
@ -29,13 +28,8 @@ tauri-plugin-dialog = "2"
uuid = { version = "1.12.0", features = ["v4"] }
regex = "1.10.3"
lazy_static = "1.4.0"
base64 = "0.21"
image = { version = "0.25.5", features = ["jpeg"] }
pdf_render = { path = "../../pdf-render/render" }
pathfinder_rasterize = { git = "https://github.com/s3bk/pathfinder_rasterizer" }
pathfinder_geometry = { git = "https://github.com/servo/pathfinder" }
show-image = {version = "0.14.0", features = ["image"] }
[[example]]
name = "render_test"
path = "examples/render.rs"

View File

@ -1,43 +0,0 @@
use pdf::file::FileOptions;
use pdf_forge_render::render::Renderer;
use show_image::{create_window, event};
use std::thread::sleep;
use std::time::Duration;
macro_rules! timed {
($func_call:expr, $label:expr) => {{
let start = std::time::Instant::now();
let result = $func_call;
let duration = std::time::Instant::now().duration_since(start);
println!("{} took {:?}", $label, duration);
result
}};
}
#[show_image::main]
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("{:?}", std::env::args());
let pdf_path = std::env::args()
.nth(1)
.expect("Please provide a path to a PDF file as an argument");
let page_num = std::env::args()
.nth(2)
.map(|arg| {
arg.parse::<u32>()
.expect("provide a valid page number as an argument")
})
.expect("Please provide a ");
let file = FileOptions::cached().open(pdf_path.as_str())?;
let mut renderer = Renderer::new(&file, 75);
let window = create_window(format!("page-{}", page_num), Default::default())?;
let img = renderer.render(page_num)?;
let _ = window.set_image(format!("im-{}", page_num), img)?;
for event in window.event_channel()? {
if let event::WindowEvent::CloseRequested(event) = event {
break;
}
}
Ok(())
}

View File

@ -1,15 +1,13 @@
use std::{
collections::VecDeque,
ffi::{OsStr, OsString},
io::Cursor,
sync::Arc,
};
use image::{DynamicImage, GrayImage, RgbImage, RgbaImage};
use image::{DynamicImage, RgbaImage};
use pdf::{
enc::StreamFilter,
file::FileOptions,
object::{ColorSpace, ImageXObject, ObjectWrite, PlainRef, Resolve, Stream},
object::{ImageXObject, ObjectWrite, PlainRef, Resolve, Stream},
primitive::{PdfStream, Primitive},
};
use pdf::object::Resources;

View File

@ -515,13 +515,6 @@
dependencies:
"@tauri-apps/api" "^2.0.0"
"@tauri-apps/plugin-websocket@~2":
version "2.3.0"
resolved "https://registry.yarnpkg.com/@tauri-apps/plugin-websocket/-/plugin-websocket-2.3.0.tgz#7b7c69db52828aee8ad0efd3cbd684f593ef7e07"
integrity sha512-eAwRGe3tnqDeQYE0wq4g1PUKbam9tYvlC4uP/au12Y/z7MP4lrS4ylv+aoZ5Ly+hTlBdi7hDkhHomwF/UeBesA==
dependencies:
"@tauri-apps/api" "^2.0.0"
"@types/cookie@^0.6.0":
version "0.6.0"
resolved "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz"