我使用iTextSharp的(LGPL/MPL)4.1.6取一個頁面範圍從現有的PDF流,壓縮它,並把它保存到一個新文件:爲什麼不是iTextSharp PdfWriter.CompressionLevel設置器更改值?
private static void CreateFile(Stream stream, string filename, int first, int last)
{
RandomAccessFileOrArray raf = new RandomAccessFileOrArray(stream);
PdfReader reader = new PdfReader(raf, null);
reader.SelectPages(string.Format("{0}-{1}", first, last));
char version = reader.PdfVersion; // == '4'
using (FileStream fs = new FileStream(filename, FileMode.Create))
{
PdfStamper stamper = new PdfStamper(reader, fs, PdfWriter.VERSION_1_5);
PdfWriter writer = stamper.Writer;
writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_5);
writer.CompressionLevel = PdfStream.BEST_COMPRESSION;
// this will always be true - why?
if (PdfStream.DEFAULT_COMPRESSION == writer.CompressionLevel)
{
var help = "what am I doing wrong?";
}
for (int i = 1; i <= reader.NumberOfPages; i++)
{
reader.SetPageContent(i, reader.GetPageContent(i));
}
stamper.SetFullCompression();
stamper.Close();
}
reader.Close();
raf.Close();
}
壓縮線是新的。但是我注意到在壓縮代碼被添加之前和之後幾乎沒有文件大小的差異。在調試模式下逐步完成時,我看到CompressionLevel始終爲-1(默認值),即使我明確將其設置爲9(最佳)。
如何將壓縮級別設置爲最佳並讓其保持不變?
報告錯誤,然後 – Xaqron 2013-04-09 21:28:36