Pdf Scribus,IText减少文件大小

Pdf Scribus,IText减少文件大小,pdf,itext,ghostscript,Pdf,Itext,Ghostscript,我正在Web应用程序中使用IText生成PDF。PDF文件来自Scribus,非常庞大(一页2MB)。当前的方法是PDF有很多表单字段,然后由IText(AcroForms等)填充 Scribus生成的单个PDF为2MB。它可能小到150K。我知道这是因为在上面运行了GhostScript。见下文 对于大文件(有些可能是150页),服务器会陷入困境,并且通常没有PDF结果 GhostScript将文件减少到每页150K。但是,如果PDF生成从未完成,我不能将其作为后期处理运行。如果我在提供给IT

我正在Web应用程序中使用IText生成PDF。PDF文件来自Scribus,非常庞大(一页2MB)。当前的方法是PDF有很多表单字段,然后由IText(AcroForms等)填充

Scribus生成的单个PDF为2MB。它可能小到150K。我知道这是因为在上面运行了GhostScript。见下文

对于大文件(有些可能是150页),服务器会陷入困境,并且通常没有PDF结果

GhostScript将文件减少到每页150K。但是,如果PDF生成从未完成,我不能将其作为后期处理运行。如果我在提供给IText的初始PDF上运行GhostScript,那么表单字段就会消失,结果是一个空表单

因此,我要么需要一种在不丢失表单字段的情况下运行GhostScript的方法(或者另一种执行相同操作的外部工具),要么需要一种IText通过表单字段以外的其他方式填充PDF的方法。是否有任何IText功能等同于旧JavaScript的document.getElementById('xyz').innerHTML=“新文本”


当然,绝对最好的解决方案是Scribus中的导出选项,它不会执行他们引以为豪的“一次放置一个glyph”。

您使用ghostscript做什么来减小文件大小?您使用的ghostscript版本是什么?我认为,如果提供-dShowAcroForm开关(请参阅use.htm),则应保留AcroForms。也许您可以从Scribus、iText和PDF在流程的每个阶段共享一个示例文件。下面是我用于应用Ghostscript的bat文件:“c:\Program Files\gs\gs9.18\bin\gswin64.exe”-sDEVICE=pdfwrite-dCompatibilityLevel=1.4-dShowAcroForm-dPDFSETTINGS=/prepress-dNOPAUSE-dQUIET-dBATCH-sOutputFile=%1_1.pdf-c.setpdfwrite-f%1.pdf还使用-dShowAcroForm=true进行了尝试安装Acrobat免费试用版后,我查看了pdf中的内容。出于某种原因,它有1.8MB的字体,这似乎太多了。然后很明显,每一页都会重复这些内容。从PdfCopyFields切换到PdfSmartCopy似乎可以防止字体重复。我猜当他们不推荐PdfCopyFields时,他们忘记在Javadoc中输入的参考是PdfCopy/PDFSmartCopy这里是解决方案。