当前位置: 首页 > 编程语言 > C#

使用免费软件库使用C#编程压缩现有PDF分享

时间:2023-04-10 11:18:56 C#

C#学习教程:使用免费软件库在C#中以编程方式压缩现有PDF我的问题是我不能使用任何应用程序,因为它需要由C#程序完成。我不能使用任何付费图书馆,因为我的客户不想超出预算。所以付费库绝对不是我做了最后2天的家庭作业,找到了一个使用iTextSharp、BitMiracle的解决方案,但没有用,因为前者只减少了文件的1%,而后者是付费的。我还遇到了PDFcompressNET和pdftk,但我找不到它们的.dll。实际上,pdf是一份保险单,有2-3张图片(黑白),大约70页,大小5MB。我只需要pdf的输出(不能是任何其他格式)这是一种方法(无论您使用什么工具包,这都应该有效):如果您有24位rgb或32位cmyk图像,请执行以下:也就是说,如果你能以无人监督的方式完成所有这些,那么你就拥有了一个商业产品。我想说您可以使用AtalasoftdotImage完成大部分工作(免责声明:它不是免费的;我在那里工作;我几乎编写了所有PDF工具;我曾经在Acrobat上工作)。使用dotImage的一种特殊方法是拉取所有仅包含图像的页面,重新压缩它们并将它们保存为新的PDF,然后通过从原始文档中获取所有页面并用重新压缩的页面替换它们来构建新的PDF,然后保存再次。这并不难。列出pagesToReplace=newList();PdfImageCollectionpagesToEncode=newPdfImageCollection();using(Documentdoc=newDocument(sourceStream,password)){for(inti=0;i这里缺少的是ProcessImage()。ProcessImage将光栅化页面(您不需要知道图像可能已缩放到PDF上)或提取图像(并跟踪图像上的变换矩阵),然后执行上面列出的步骤。这很重要,但它是可行的。我想你可能想让你的客户知道你提到的库都不是完全免费的:鉴于以上所有情况,我想我可以放弃免费软件要求。Docotic.Pdf可以在不引入任何破坏性变化的情况下,不同程度地减小压缩和未压缩PDF的大小。增益取决于PDF的大小和结构:对于大多数小文件或扫描图像文件,缩小效果可能不是很好,因此您应该尝试文件库并亲自查看。如果大小是您最关心的问题并且您的文件中有很多图像,并且您可以放弃这些图像的一些质量,您可以使用Docotic.Pdf轻松地重新压缩现有图像。以下代码使用传真压缩对所有图像进行双层压缩:);文档保存(输出名称);还有RecompressWithFlate、RecompressWithGroup3Fax和RecompressWithJpeg方法。如有必要,库会将彩色图像转换为双层图像。您可以指定放气压缩级别、JPEG质量等。Docotic.Pdf还可以调整PDF中大图像的大小(并同时重新压缩它们)。如果文档中的图像实际上比需要的大或者图像质量不是那么重要,这将很有用。下面是一段代码,用于缩放所有宽度或高度大于或等于256的图像。然后使用JPEG压缩对缩放后的图像进行编码。publicstaticvoidRecompressToJpeg(stringpath,stringoutputPath){using(PdfDocumentdoc=newPdfDocument(path)){foreach(PdfImageimageindoc.Images){//用作遮罩的图像或带有附加遮罩的图像是//如果(!image.IsMask&&image.Mask==null&&(image.Width>=256||image.Height>=256))image.Scale(0.5,PdfImageCompression.Jpeg,65);}doc.Save(outputPath);可以使用ResizeTo方法之一将图像调整为指定的宽度和高度。请注意,ResizeTo方法不会尝试保留图像的纵横比。您应该自己计算合适的宽度和高度。免责声明:我为BitMiracle工作。GhostScript是AGPL许可的软件,可以压缩PDF。github上还有一个AGPL许可的C#包装器。您可以使用该包装器中的GhostscriptProcessor类将自定义命令传递给GhostScript,如描述PDF压缩的AskUbuntu答案中所见。以上就是C#学习教程:使用免费软件库使用C#编程压缩现有PDF分享的所有内容。代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: