需要一个基于Java的解决方案,或者最糟糕的是,需要Linux的命令行.
我试着使用Ghostscript:
gs -sDEVICE=pdfwrite -dPDFA -dBATCH -dNOPAUSE -dUseCIEColor \
-sProcessColorModel=DeviceCMYK -sPDFACompatibilityPolicy=1 \
-sOutputFile=downgraded.pdf leon_range_my12_w22_brochure.pdf
Run Code Online (Sandbox Code Playgroud)
但是我犯了很多错误......
在研究如何压缩一堆带有图片的PDF时(理想情况是以无损方式,但我会满足于有损),我发现有很多人建议这样做:
$ pdf2ps file.pdf
$ ps2pdf file.ps
Run Code Online (Sandbox Code Playgroud)
这有效!生成的文件较小,看起来至少足够好.
当我使用Acrobat Distiller(v.9.1.3)时,似乎我无法嵌入所有字体 - 至少不是我想要的方式(没有子集).一个例子是Wingdings(TrueType).
我将复选框和设置激活为"始终嵌入"和"无子集".如果我在文本编辑器中签入*.joboptions我保存为自定义Distiller配置文件的文件,它会清楚地说:
/EmbedAllFonts true
/EmbedOpenType true
/MaxSubsetPct 1
/SubsetFonts false
Run Code Online (Sandbox Code Playgroud)
一些字体Distiller完全嵌入(根据我的要求),其他字体不是.如果我将设置更改为字体子集,则适用于所有字体.因此我认为我的设置是正确的.
有没有其他人遇到与Acrobat相同的问题/错误?
我有正在上传到ISSUU 的PDF 。
可以使用 FLASH 查看这些 PDF,但浏览器因 PDF 问题而崩溃。
ISSUU 诊断出 PDF 并检测到 PDF 在其页面上使用了透明度、径向和轴向阴影。他们建议我将它们转换为位图。不幸的是,他们不是 Ghostscript 的专家。
我需要使用 Ghostscript 重新渲染我的 PDF 以消除图像/页面上的透明度、径向和轴向阴影。
有人可以帮助我,哪个是 Ghostscript 尽可能简单地呈现我的 PDF 并使其在网络上轻松查看的正确命令?
也许按照ISSUU支持的建议显示如何转换为位图?
我尝试了以下但仍然无法解决我的问题:
我正在使用 matplotlib 生成 PDF 图形。然而,即使是最简单的数字也会产生相对较大的文件,下面的 MWE 会产生几乎 1 MB 的文件。我意识到文件大小较大是由于 matplotlib 完全嵌入了所有使用的字体。由于我要生成相当多的图并希望减小文件大小,所以我想知道:
主要问题:
有没有办法让 matplotlib 嵌入字体子集而不是完整的字体?我也可以完全不包含字体。
到目前为止考虑的事情:
由于使用外部软件生成带有嵌入子集的文件很容易,尽管是劳动密集型的,是否有可能直接在 matplotlib 中实现这一点?任何帮助将不胜感激。
微量元素
import matplotlib.pyplot as plt #Setup
import matplotlib as mpl
mpl.rcParams['pdf.fonttype'] = 42
mpl.rcParams['mathtext.fontset'] = 'dejavuserif'
mpl.rc('font',family='Arial',size=12)
fig,ax=plt.subplots(figsize=(2,2)) #Create a figure containing some text
ax.semilogy(1,1,'s',label='Text\n$M_\mathrm{ath}$')
ax.legend()
fig.tight_layout()
fig.savefig('test.pdf')
Run Code Online (Sandbox Code Playgroud)
环境:matplotlib 3.1.1
pdf ×5
ghostscript ×2
acrobat ×1
bitmap ×1
compression ×1
flash ×1
fonts ×1
issuu ×1
java ×1
linux ×1
matplotlib ×1
python ×1