pdfcompresser.cs
来自「PDF文件格式解析库源代码」· CS 代码 · 共 90 行
CS
90 行
using System;
using System.Collections.Generic;
using System.Text;
namespace AnotherPDFLib
{
public class PdfCompresser
{
public static void Compress(PdfDocument pdfdoc)
{
foreach (PdfObject pdfobj in pdfdoc.PdfObjects.Values)
{
CompressObject(pdfobj);
}
}
public static void CompressObject(PdfObject pdfobj)
{
if (pdfobj is PdfDictionary)
{
PdfDictionary dict = pdfobj as PdfDictionary;
foreach (PdfObject subpdfobj in dict.Entries.Values)
{
if (!subpdfobj.IsIndirect)
{
CompressObject(subpdfobj);
}
}
if (pdfobj is PdfStream)
{
PdfStream stream = pdfobj as PdfStream;
stream.EncodeStream();
}
}
else if (pdfobj is PdfArray)
{
PdfArray array = pdfobj as PdfArray;
foreach (PdfObject subpdfobj in array.Items)
{
if (!subpdfobj.IsIndirect)
{
CompressObject(subpdfobj);
}
}
}
}
public static void DeCompress(PdfDocument pdfdoc)
{
foreach (PdfObject pdfobj in pdfdoc.PdfObjects.Values)
{
DeCompressObject(pdfobj);
}
}
public static void DeCompressObject(PdfObject pdfobj)
{
if (pdfobj is PdfDictionary)
{
PdfDictionary dict = pdfobj as PdfDictionary;
foreach (PdfObject subpdfobj in dict.Entries.Values)
{
if (!subpdfobj.IsIndirect)
{
DeCompressObject(subpdfobj);
}
}
if (pdfobj is PdfStream)
{
PdfStream stream = pdfobj as PdfStream;
stream.DecodeStream();
}
}
else if (pdfobj is PdfArray)
{
PdfArray array = pdfobj as PdfArray;
foreach (PdfObject subpdfobj in array.Items)
{
if (!subpdfobj.IsIndirect)
{
DeCompressObject(subpdfobj);
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?