📄 pdfcompresser.cs
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -