Urgent.News

What's breaking now, across thousands of outlets.

Tech

I compressed a signed PDF with five tools. Every signature broke or vanished

A lot of e-contract pipelines sign first and compress later. The signed file often carries scans or photos, so shrinking it right before archiving feels natural. I wanted to see what that order actually does, so I built a test file, ran it through five compression or rewrite tools, and checked every output with two validators. Short version: every tool rewrote the whole file, and every signature…

Many e-contract workflows sign documents first and compress them afterward. The signed file often contains scans or images, so it makes sense to shrink it before archiving. The reporter built a test file, ran it through five compression tools, and checked the outputs using two validators. The results showed that every tool restructured the whole file, and every signature either failed or disappeared.

The test file was a one-page agreement with an 1800×1200 synthetic photo, signed by pyHanko using adbe.pkcs7.detached and a self-made test root CA. It compressed to 931,980 bytes. Both poppler s pdfsig 26.08.0 and pyHanko 0.33.0 validated the signature, trusting only the test root CA. The signature covered two byte ranges: 923,749 bytes starting at offset 0 and 705 bytes starting at offset 931,275, totaling 931,980 bytes.

The signature was based on byte changes, not the appearance of the page. Reordering objects or recompressing a single stream caused the hash to fail, even if the page layout remained unchanged. After running the test file through qpdf, pdfsig reported an illegal ByteRange array. Ghostscript's ebook output lost the signature entirely.

ImgIng's output still claimed a range ending at byte 931,980 in a 64,903-byte file. Ghostscript and iLovePDF removed the signature field altogether. The reporter recommends compressing signed PDFs before signing and avoids re-signing if revisions are made.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Software Statement of Work (SOW) Template and Guide

A software statement of work (SOW) describes what will be built, what will be delivered, how each delivery is accepted, when it happens and how changes are handled.

  • Software SOW outlines project scope, deliverables, and change management
  • Twelve-section template covers parties, objectives, scope, and schedule
  • Legal consultation recommended for compliance and risk protection

I Stopped Uploading Videos to Online Editors — Here's the Browser-Native Alternative

Every time you drag a video into a typical "free online editor," the same thing happens: your file uploads to someone's server, gets processed there, and you download the result.

  • Client-side video processing eliminates server round-trips
  • Private Video Tools offers compression, trim, crop, and more
  • Browser capabilities now support client-side video transcoding

🚀 Big update

🚀 Grosse mise à jour sur coddyrun.fr ! Ces dernières semaines, le site a beaucoup changé. Voici tout ce qui vous attend 👇 ⚔️ NOUVEAU : les Défis Un problème à résoudre en CoddyRun, proposé par un…

  • CoddyRun introduces Challenges for problem-solving with community submissions.
  • Real-time chat and public profiles enable interaction and sharing among users.
  • Over 340 FAQ entries and 54 collectible badges enhance user engagement.

DishReactions is a free, offline app that records customer reactions per order and shows a live chart of which dish gets the best reviews.

*This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle What I Built DishReactions — a local-first app for small restaurants that records customer reaction on every…

  • DishReactions is a free, offline app for small restaurants
  • Records customer reactions (1-5 stars, emojis) per order
  • Live chart shows dish with highest average rating

Quy Uớc Đặt Tên (Naming Conventions) Trong Java

Quy ước đặt tên là một tập hợp các quy tắc thống nhất về cách đặt tên cho các thành phần ngôn ngữ như class, biến, phương thức, v.v. trong Java.

  • Java naming conventions standardize language components like classes and variables.
  • CamelCase used for variables, methods, and classes; PascalCase for classes and interfaces.
  • Consistency, meaningfulness, and readability are benefits of following naming conventions.

More from Sunday 18 October →