PDF文書があれば、文書をスキャンしたもので、スキャンした文書の写真だけを保存するので、容量が非常に大きいファイルなのです。
テキストのみを保存する正しい文書を作成するのに役立つOCRツールはありますか?
まあ、私はその逆が必要です!完璧なPDF文書があり、pdflatex
それを紙に印刷した場合(特定のdpi値で)正確に同じように見えますが、元の画像である「巨大な」PDFに変換する必要があるとします。
私の最初のアイデアは、PDFを一連のJPGに変換してからPDFに変換することでしたが、標準的な方法はありますか?
私がなぜこのようなことをしたいのか疑問に思うなら、私は現在管理していないネットワークプリンタに閉じ込められ、印刷されたファイルからランダムに文字を削除しています!したがって、誰かが何が間違っているのかを理解するまで、これを解決策として残したいと思います。
答え1
画像ベースのPDFも汚染されているかどうかをテストできます。まず、PDFを(複数ページ)TIFFに変換します。ゴーストスクリプト:
gs -sDEVICE=tiffg4 -o sample.tif sample.pdf
次にTIFFをPDFに変換します。例:
tiff2pdf -z -f -F -pA4 -o sample-img.pdf sample.tif
これにより、ページがテキストではなく画像であるPDFファイルが生成されます。
または、システムがTIFFファイルの印刷をサポートしている場合は、直接印刷してみてください。
PDFをPSに変換するオプションもありますがpdf2ps
、可能であればより良いようです。
答え2
答え3
解決策
次のコードは1200 DPIにラスタライズしa.pdf
、c.pdf
最初に2400 DPIにラスタライズしてから出力する前に2だけ縮小します。文書。
gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage24 -r2400 -dDownScaleFactor=2 -o c.pdf a.pdf
白黒でのみ印刷する必要がある場合は、それを交換して作業を高速化できpdfimage24
ますpdfimage8
。
基準
pdf2ps
上記の解決策が最も速く、+にのみ触れることがわかりますps2pdf
(しかし、pdf2ps
+ps2pdf
保証しないファイルをラスタライズする)とpdf2ppm
(ただし、.jpg
ファイルを拡大するには変換)
解決策 | 所要時間(秒) | 占有メモリ(KiB) | 出力ファイルサイズ(KiB) | 印刷時間(秒) |
---|---|---|---|---|
pdftoppm (1200)(.jpg )+ img2pdf (†) |
2.710 | 603092 | 10341.3 | |
pdf2ps +ps2pdf 一時ファイルを含める(源泉)(*) |
4.110 | 37596 | 1706.4 | |
pdfimage8 (1200) |
4.180 | 35668 | 2348.6 | 9.5 |
pdfimage24 (1200/2) |
5.020 | 36088 | 1971.9 | 9.7 |
pdfimage24 (1200) |
6.520 | 36212 | 3316.1 | |
pdf2ps +ps2pdf パイプ付き(*) |
7.230 | 37668 | 1706.4 | |
convert (600) |
9.560 | 964532 | 5953.6 | |
pdftoppm (1200)(.tiff )+ img2pdf (†) |
10.850 | 1539512 | 14483.3 | |
convert (600) +gs 最適化(源泉) |
12.010 | 964532 | 1989.4 | 9.9 |
pdfimage8 (2400/2) |
20.350 | 43872 | 3481.9 | |
pdfimage24 (2400/2) |
23.510 | 46484 | 4833.2 | 15.8 |
pdftoppm (1200)(.png )+ img2pdf (源泉)(†) |
33.000 | 626896 | 14127.2 |
(*):実際には常にPDFをラスタライズすることは解決策ではありませんが、場合によってはgs
これを行うことにすることもできます(どのような場合はラスタライズされているのかわからず、PDFが複雑すぎる場合があります)。
(†):コードは1ページのPDFファイルにのみ適合するように書かれていますが、調整できます。
ベンチマークソリューションの詳細
pdftoppm
(1200)(.jpg
)+ img2pdf
(†)
pdftoppm -progress -r 1200 -jpeg a.pdf a
img2pdf a-1.jpg -o c.pdf
pdf2ps
+ps2pdf
一時ファイルを含める(源泉)(*)
gs -sDEVICE=ps2write -dNOCACHE -sOutputFile=c.ps -q -dBATCH -dNOPAUSE a.pdf
ps2pdf c.ps c.pdf
pdfimage8
(1200)
gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage8 -r1200 -o c.pdf a.pdf
pdfimage24
(1200/2)
gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage24 -r1200 -dDownScaleFactor=2 -o c.pdf a.pdf
pdfimage24
(1200)
gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage24 -r1200 -o c.pdf a.pdf
pdf2ps
+ps2pdf
パイプ付き(*)
gs -sDEVICE=ps2write -dNOCACHE -sOutputFile=- -q -dBATCH -dNOPAUSE a.pdf -c quit | ps2pdf - c.pdf
convert
(600)
convert -density 600 a.pdf c.pdf
pdftoppm
(1200)(.tiff
)+ img2pdf
(†)
pdftoppm -progress -r 1200 -tiff a.pdf a
img2pdf a-1.tif -o c.pdf
convert
(600) +gs
最適化(源泉)
convert -density 600 a.pdf b.pdf
gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=c.pdf b.pdf -q
pdfimage8
(2400/2)
gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage8 -r2400 -dDownScaleFactor=2 -o c.pdf a.pdf
pdfimage24
(2400/2)
gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage24 -r2400 -dDownScaleFactor=2 -o c.pdf a.pdf
pdftoppm
(1200)(.png
)+ img2pdf
(源泉)(†)
pdftoppm -progress -r 1200 -png a.pdf a
img2pdf a-1.png -o c.pdf
ベンチマークのソースコードを見つけることができます。ここ。