我有一个服务,它需要一个 pdf 文档,调整所有图像的大小,然后在 pdf 中替换它。我遇到的问题是压缩。
有些文档使用 Compression.CCITTFAX3 压缩进行扫描和保存,有些文档使用 Compression.CCITTFAX4 压缩进行保存。我正在使用 iTextSharp 并将流字节转换为 Tiff,否则图像会因为步幅或其他原因而变得时髦。
下面是我目前用来检查正确过滤器,然后转换为 tiff 图像的代码。
if (filter == "/CCITTFaxDecode")
{
byte[] data = PdfReader.GetStreamBytesRaw((PRStream)stream);
using (MemoryStream ms = new MemoryStream())
{
using (Tiff myTiff = Tiff.ClientOpen("in-memory", "w", ms, new TiffStream()))
{
myTiff.SetField(TiffTag.IMAGEWIDTH, UInt32.Parse(dict.Get(PdfName.WIDTH).ToString()));
myTiff.SetField(TiffTag.IMAGELENGTH, UInt32.Parse(dict.Get(PdfName.HEIGHT).ToString()));
myTiff.SetField(TiffTag.COMPRESSION, Compression.CCITTFAX3);
myTiff.SetField(TiffTag.BITSPERSAMPLE, UInt32.Parse(dict.Get(PdfName.BITSPERCOMPONENT).ToString()));
myTiff.SetField(TiffTag.SAMPLESPERPIXEL, 1);
myTiff.WriteRawStrip(0, data, data.Length);
myTiff.Flush();
using (System.Drawing.Image img = new Bitmap(ms))
{
if (img == null) continue;
ReduceResolution(stream, img, quality);
}
myTiff.Close();
}
}
}
只是为了确保您理解我的问题...
我想知道我如何知道何时使用 G3 压缩以及何时使用 G4 压缩。
请记住,我已经尝试了我能找到的所有代码示例。
这一点非常重要,因为我们与银行系统交互,上传的文件作为 FICA 文件发送给他们。
请帮忙...