Merge Two PDF to Single Encrypted PDF

Problem

I have unprotected

  1. input1.pdf
  2. input2.pdf

and I want to create one single encrypted.pdf.

My try

I looked up QPDF’s manual and tried the following command.

qpdf --empty --pages input{1,2}.pdf --encrypt upw opw 256 -- encrypted.pdf

but I got this error.

qpdf: unrecognized argument --encrypt (pages options must be terminated with --)

For help:
  qpdf --help=usage       usage information
  qpdf --help=topic       help on a topic
  qpdf --help=--option    help on an option
  qpdf --help             general help and a topic list

Solution

The sentence inside the parentheses says it all.

[Read More]
PDF  QPDF 

Ten Probably Handy Sites

A brief summary of 10 Incredibly Useful Websites on Medium.

Upword.AI (paid)
summarise stuff
Gamma (free trial for the moment)
get professional slides in min, not open source
IMGCreator (free, point-based)
text/img → img, chatGPT powered
Popsy (free to create, paid to publish)
no-code website buider
Visual Capitalist (free)
explanatory charts
TypeLit.io (free for some œuvres, paid for own book)
type classics out to train typing
Zorp.one (free for trial, paid for deploy)
no-code app generator for businesses, e.g. delivery, store management, doc collection
Kialo (free)
repository for debate arguments, with discussion topology
Nomad List (free limited trial, paid content)
good for remote workers, find remote work opportunities, insights into cities, dating app (that I don’t recommend)
SuperMeme (paid)
AI meme generator

Encrypt PDF on Command Line

Background

On M$ Win*, I don’t have dedicated PDF readers like Adobe.

During visioconference, one might want to share some downloaded PDFs. Those documents can be part of an ebook or notes. In some situations, they can provide context to a discussion.

Problem

  1. Under the same folder, you might have
  • downloaded_ebook.pdf
  • personal_info.pdf
  • other_personal_stuff.pdf that you don’t want to expose while streaming.

However, each downloaded PDF usually comes with a name set by others. It can be tedious to rename them according to your own habits. To protect users’ privacy, we can

[Read More]
PDF  QPDF 

Adjust Git Bash Font and Window Size

Goal

Make the characters larger and more readable.

Solution

The option names might be found in the manual. Sometimes, I find opening MINGW’s settings through GUI helpful.

FontHeight=12
Columns=143
Rows=36

I’ve read Gerald Lee’s .minttyrc. I’ve enlarged the window size so that in the standard output, one line can contain more info.

Fujitsu LH532 Thermal Paste Application

Background

My old laptop was bought ten years ago. I had never changed the thermal paste between its CPU and its fan. As a result, it had been getting hot during my online tutorials.

Photos

thermal paste on CPU

thermal paste on CPU displaced after ten years

thermal paste on fan

thermal paste on fan displaced after ten years

CPU and fan cleaned

dried thermal paste cleaned and removed

with isopropyl and kitchen towel

[Read More]

Removed jQuery Dependency from My Math Editor

Background

jQuery provides many handy functions to speed up the development, for example document.ready(), element.toggle(), element.hide(), etc. My math editor used some of them. However, I replaced them with Vanilla JavaScript at commit 4a35c45b.

Goal

Some users complained about the white background in the past versions of my editor. That had motivated me to refactor the code, so that it would be easier to maintain and to add in new features.

HTML5 input types used

Actual appearance might vary across browsers.

[Read More]

Showdown KaTeX With mhchem

mhchem support for Showdown-KaTeX

Background

I’ve written about bringing user-defined KaTeX macros into Hugo a few years ago. Looking back, I realized that I only knew how to copy code at that time.

Goal

  1. To replace the current code for my math editor with Showdown-KaTeX.
  2. To bring mhchem into my LaTeX + Markdown sandbox.

Motivation

To get the benefits of the three free (as in “freedom”) technologies.

  1. Markdown syntax is (much) simple(r than its LaTeX equivalent, especially for tables, ordered/unordered lists, etc).
  2. LaTeX syntax for math is, in the long run, worth learning, so that your fingers can stay on the keyboard while editing math expressions.
  3. mhchem allows writing chemical equations conveniently as in the previous point.

However, Rattle has pointed out the difficulties of mixing LaTeX and Markdown syntax. In his proposed solution for WordPress, he first renders KaTeX before moving to Markdown. He has provided an example use case with a dollar sign $ in a normal Markdown content (e.g. An apple costs $1.5.)

[Read More]

Tikz to SVG in VS Code

My little LaTeX Workshop recipe

Goal

View SVG graphics generated from TikZ code in VS Code.

LaTeX TikZ coding + SVG preview in VS Code

Compile TikZ code and preview SVG in VS Code

with LaTeX Workship and SVG Preview

Part I: generate SVG using LaTeX Workshop

From the IDE’s parameters tab, I found the tools and recipes parameters. I clicked my user settings settings.json twice: once through the tools, and once through the recipes. Each click generated an array of default recipes or tools. Each of the former is a sequence of the later, which represents a command. The official examples and placeholders are easy to follow. Here’s the two JSON objects that I added.

[Read More]

dvisvgm Guide for TikZ Pictures with Pattern Filling

A quick note of the right commands for the conversion

Problem

I had issues in getting a SVG from a TikZ picture containing a pattern filling: https://github.com/mgieseki/dvisvgm/issues/158. The reported issue was created last year, and it’s marked as fixed. Nonetheless, I had this issue even though my MikTeX was up-to-date.

Discussion

  1. I wanted to confirm whether my dvisvgm.exe, which had been shipped with MikTeX, was latest.
  2. I gave a MWE illustrating the problem with the graph of y = (x + 1)² with region under the curve filled with a pattern in the above issue. I knew that’s probably off-topic, but the package owner might have some insights about the problem. It turned out that PDF → SVG was partly supported by dvisvgm. Using DVI → SVG, I managed to get the filling pattern, but I lost the beautiful Computer Modern Roman fonts—that’s another issue.
  3. Hoping for a response from the owner for the previous problem, I started https://github.com/mgieseki/dvisvgm/issues/186. He suggested the use of --no-fonts or --font-format=woff. I observed no difference in the local filesystem. I uploaded everything I got through GitHub so that he could see what my dvisvgm.exe had output. I didn’t expected that the Computer Modern Roman fonts disappeared on GitHub side. If I hadn’t asked there, I would have never known that it’s the web browser’s security measure not to load the embedded font data in a SVG loaded from a server.

Skills learned

Meaning of some commonly used parameters of dvisvgm:

[Read More]
LaTeX  dvisvgm  SVG 

Git Warning: LF Will Be Replaced by CRLF

I’m using Git Bash while writing this post. I’ve never tested the commands on *nix.

Background

Some of the tags and titles were written as “LateX”/“latex” in the source files. I batch corrected them with Git Grep and GNU Sed.

git grep --name-only -IiE ^-\ latex$'\r'? content/{post,page} | \
xargs -n1 sed -i "s/^- latex/- LaTeX/I"

I tried to match

  1. a leading - using ^-
  2. a whitespace \ escaped by a backslash to avoid wrapping the special character below with double quotes
  3. the string “latex” (case-insensitive)
  4. the carriage return \r, which is represented by $'\r' in bash, for at most once (?)

I observed that wrapping $'\r' with "" would lead to no match.

[Read More]
Git  sed