将可搜索 PDF 转换为不可搜索 PDF

发布于 2025-01-02 10:39:25 字数 522 浏览 0 评论 0原文

我有一个可搜索的 PDF,我需要将其转换为不可搜索的 PDF。

我尝试使用 Ghostscript 将其更改为 JPEG,然后再更改回 PDF,这确实有效,但文件大小太大且无法接受。

我尝试先使用 Ghostscript 将 PDF 转换为 PS,然后再将 PDF 转换为 PDF,效果也不错,但质量不够好。

gswin32.exe -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pswrite -r1000 -sOutputFile=out.ps in.pdf
gswin32.exe -q -dNOPAUSE -dBATCH -dSAFER -dDEVICEWIDTHPOINTS=596 -dDEVICEHEIGHTPOINTS=834 -dPDFSETTINGS=/ebook -sDEVICE=pdfwrite -sOutputFile=out.pdf out.ps

有没有办法提高 PDF 的质量?

或者是否有一种更简单的方法将可搜索的 PDF 转换为不可搜索的 PDF?

I have a PDF which is searchable and I need to convert it into a non-searchable one.

I tried using Ghostscript and change it to JPEG and then back to PDF which does the trick but the file size is way too large and not acceptable.

I tried using Ghostscript to convert the PDF to PS first and then PDF which does the trick as well but the quality is not good enough.

gswin32.exe -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pswrite -r1000 -sOutputFile=out.ps in.pdf
gswin32.exe -q -dNOPAUSE -dBATCH -dSAFER -dDEVICEWIDTHPOINTS=596 -dDEVICEHEIGHTPOINTS=834 -dPDFSETTINGS=/ebook -sDEVICE=pdfwrite -sOutputFile=out.pdf out.ps

Is there a way to give a good quality to the PDF?

Alternatively is there an easier way to convert a searchable PDF to a non-searchable one?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

有木有妳兜一样 2025-01-09 10:39:25

您可以使用 Ghostscript 来实现这一点。您需要 2 个步骤:

  1. 将 PDF 转换为 PostScript 文件,其中所有使用的字体都转换为轮廓形状。这里的关键是 -dNOCACHE 参数:

    gs -o somepdf.ps -dNOCACHE -sDEVICE=pswrite somepdf.pdf

  2. 将 PS 转换回 PDF(并且可能再次删除中间 PS):

    gs -o somepdf-with-outlines.pdf -sDEVICE=pdfwrite somepdf.ps
    rm somepdf.ps

请注意,生成的 PDF 很可能比原始 PDF 更大。 (并且,如果没有额外的命令行参数,原始 PDF 中的所有图像也可能会根据 Ghostscript 内置默认值进行转换,除非您添加更多命令行参数来执行其他操作。但质量应该比您自己尝试使用 Ghostscript 更好...)


更新

显然,从版本 9.15(将于 2014 年 9 月/10 月期间发布)开始,Ghostscript 将支持新的命令行参数: >

 -dNoOutputFonts

这将导致输出设备 pdfwriteps2writeeps2write “将字形‘展平’为‘基本’标记操作(而不是将字体写入输出)”

这意味着可以避免上述两个步骤,并且通过单个命令即可实现所需结果:

 gs -o somepdf-with-outlines.pdf -dNoOutputFonts -sDEVICE=pdfwrite somepdf.pdf

注意事项:我已经使用一些输入文件对此进行了测试基于当前 Git 源自编译的 Ghostscript。它在每种情况下都完美地工作。

You can use Ghostscript to achieve that. You need 2 steps:

  1. Convert the PDF to a PostScript file, which has all used fonts converted to outline shapes. The key here is the -dNOCACHE paramenter:

    gs -o somepdf.ps -dNOCACHE -sDEVICE=pswrite somepdf.pdf

  2. Convert the PS back to PDF (and, maybe delete the intermediate PS again):

    gs -o somepdf-with-outlines.pdf -sDEVICE=pdfwrite somepdf.ps
    rm somepdf.ps

Note, that the resulting PDF will very likely be larger than the original one. (And, without additional command line parameters, all images in the original PDF will likely also be converted according to Ghostscript builtin defaults, unless you add more command line parameters to do otherwise. But the quality should be better than your own attempt to use Ghostscript...)


Update

Apparently, from version 9.15 (to be released during September/October 2014), Ghostscript will support a new command line parameter:

 -dNoOutputFonts

which will cause the output devices pdfwrite, ps2write and eps2write "to 'flatten' glyphs into 'basic' marking operations (rather than writing fonts to the output)".

This means that the above two steps can be avoided, and the desired result be achieved with a single command:

 gs -o somepdf-with-outlines.pdf -dNoOutputFonts -sDEVICE=pdfwrite somepdf.pdf

Caveats: I've tested this with a few input files using a self-compiled Ghostscript based on current Git sources. It worked flawlessly in each case.

轻拂→两袖风尘 2025-01-09 10:39:25

从可搜索矢量 pdf 生成不可搜索矢量 pdf 的一种可能方法是

  1. 在其单页中突发 pdf

    pdftk file.pdfburst

  2. 转换 svg 中的任何单个页面

    pdftocairo

包含在 poppler utils

for f in *.pdf; do pdftocairo -svg $f; done

3 中。删除文件夹 4 中的所有 pdf 文件

。然后,使用 batikrasterizer

重新将 ALL svg 转换为 pdf(这次生成的 pdf 将保持矢量,但不可搜索)

java -jar ./batik-rasterizer.jar -m application/pdf *.svg

最后一步:将所有生成的单页 pd 合并到一个多页 pdf 文件中

pdftk *.pdf cat output out.pdf

a possible way to produce non-searchable vector pdf from a searchable vector pdf is

  1. burst pdf in its single pages

    pdftk file.pdf burst

  2. convert any single page in svg with

    pdftocairo

contained into poppler utils

for f in *.pdf; do pdftocairo -svg $f; done

3 . delete ALL pdf in folder

4 . then, with batikrasterizer

re-convert ALL svg to pdf (this time the resulting pdfs will be kept vectorial, but without to be searchable)

java -jar ./batik-rasterizer.jar -m application/pdf *.svg

final step: join all resulting single page pd in one multipage pdf file

pdftk *.pdf cat output out.pdf
养猫人 2025-01-09 10:39:25

我认为转换为像 jpg 这样的图像是可行的方法,可能值得转换为 am 图像,优化/减小图像的大小,然后用这些创建 PDF?

I think converting to an image like jpg is the way to go, it might be worth converting to am image, optimizing/reducing the size of the images and then creating a PDF with those?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文