Սեղմեք PDF փաստաթուղթը՝ օգտագործելով C#, VB.NET

Բլոգի կատեգորիա՝ PDF.NET

12.07.2024

VintaSoft PDF .NET Plug-in-ը կարող է օգտագործվել PDF փաստաթղթի սեղմման և օպտիմալացման համար: VintaSoft PDF .NET Plug-in-ը կարող է նաև օգտագործվել PDF փաստաթղթից մետատվյալները հեռացնելու համար: PDF ֆայլի չափի կրճատումը կարող է օգնել նվազեցնել ցանցային երթևեկությունը PDF ֆայլերը փոխանցելիս և նվազեցնել PDF ֆայլերի կողմից զբաղեցված պահեստային տարածքը: Սա հատկապես օգտակար է այնպիսի ոլորտներում, ինչպիսիք են արխիվացումը, էլ. փոստով ուղարկումը և PDF փաստաթղթերի օգտագործումը վեբ ծրագրերում:

PDF փաստաթուղթը օպտիմալացնելու համար VintaSoft PDF .NET հավելվածը կարող է կատարել հետևյալ գործողությունները՝

PDF փաստաթուղթը փաթեթավորել

PDF փաստաթուղթը կարող է պարունակել չօգտագործված ռեսուրսներ: VintaSoft PDF .NET հավելվածը թույլ է տալիս որոշել և հեռացնել չօգտագործված ռեսուրսները PDF փաստաթղթում:
PDF փաստաթուղթը կարող է նաև պարունակել PDF փաստաթղթի վերանայումների պատմությունը: VintaSoft PDF .NET հավելվածը թույլ է տալիս հեռացնել վերանայումների պատմությունը PDF փաստաթղթից:
PDF փաստաթղթի ռեսուրսները կարող են նաև սեղմվել ոչ օպտիմալ սեղմման ալգորիթմով: VintaSoft PDF .NET հավելվածը կարող է սեղմել ռեսուրսները՝ օգտագործելով ավելի օպտիմալ սեղմման ալգորիթմներ:
PDF փաստաթուղթը նաև պարունակում է չսեղմված խաչաձև հղումների աղյուսակ, եթե PDF ֆայլը օգտագործում է PDF 1.4 կամ ավելի վաղ ձևաչափ: VintaSoft PDF .NET հավելվածը կարող է պահպանել PDF փաստաթուղթը PDF 1.5 կամ ավելի բարձր ձևաչափով և օգտագործել սեղմված խաչաձև հղումների աղյուսակ:

Ահա C# կոդը, որը ցույց է տալիս, թե ինչպես բեռնել առկա PDF փաստաթուղթը, հեռացնել չօգտագործված ռեսուրսները PDF փաստաթղթից, սեղմել օգտագործված PDF ռեսուրսները օպտիմալ սեղմման ալգորիթմով և պահպանել PDF փաստաթուղթը օպտիմալ PDF ձևաչափով.
/// <summary>
/// Packs the PDF document.
/// </summary>
/// <param name="inPdfFilename">The input PDF filename.</param>
/// <param name="outPdfFilename">The output PDF filename.</param>
public static void PackDocument(string inPdfFilename, string outPdfFilename)
{
    // create compressor with empty compression settings
    Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand compressor =
        Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand.CreateEmptyCompressor();

    // specify that compressor must use maximum Flate compression level (best compression)
    compressor.FlateCompressionLevel = 9;
    // specify that compressor must recompress all resource that uses None, LZW, Flate compression using Flate compression
    compressor.RecompressFlateCompression = true;
    compressor.UseFlateInsteadLzwCompression = true;
    compressor.UseFlateInsteadNoneCompression = true;

    // specify that compressor must remove incremental update info and unused objects
    compressor.PackDocument = true;

    // if version of PDF document is lower than 1.7
    if (GetPdfDocumentVersion(inPdfFilename) < 17)
    {
        // set output format to PDF 1.7
        compressor.DocumentPackFormat = Vintasoft.Imaging.Pdf.PdfFormat.Pdf_17;
    }

    // compress PDF document
    compressor.Compress(inPdfFilename, outPdfFilename);
}

/// <summary>
/// Returns the PDF document version.
/// </summary>
/// <param name="pdfFilename">The PDF filename.</param>
/// <returns>The version number in dual-digit format (10,11,12,13,14,15,16,17,20,...).</returns>
private static int GetPdfDocumentVersion(string pdfFilename)
{
    using (Vintasoft.Imaging.Pdf.PdfDocument document = new Vintasoft.Imaging.Pdf.PdfDocument(pdfFilename))
        return document.Format.VersionNumber;
}


Օպտիմալացնել տառատեսակները PDF փաստաթղթում

Որոշ տառատեսակների գլիֆներ չեն օգտագործվում PDF փաստաթղթում տեքստը վերարտադրելու համար: VintaSoft PDF .NET հավելվածը թույլ է տալիս հեռացնել չօգտագործված գլիֆները PDF փաստաթղթի տառատեսակներից:

Ահա C# կոդը, որը ցույց է տալիս, թե ինչպես օպտիմալացնել տառատեսակները PDF փաստաթղթում՝ օգտագործելով Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand դասը՝
/// <summary>
/// Subsets fonts in PDF document.
/// </summary>
/// <param name="inPdfFilename">The input PDF filename.</param>
/// <param name="outPdfFilename">The output PDF filename.</param>
public static void SubsetFonts(string inPdfFilename, string outPdfFilename)
{
    // create compressor with empty compression settings
    Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand compressor =
       Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand.CreateEmptyCompressor();

    // specify that compressor must subset fonts in PDF document
    compressor.SubsetFonts = true;

    // compress PDF document
    compressor.Compress(inPdfFilename, outPdfFilename);
}


Սեղմել պատկերները PDF փաստաթղթում

Շատ PDF փաստաթղթեր պարունակում են պատկերներ: VintaSoft PDF .NET հավելվածը թույլ է տալիս նվազեցնել PDF փաստաթղթում պատկերների լուծաչափը և գույնի բիթային խորությունը՝ PDF ֆայլի չափը նվազեցնելու համար:

Ահա C# կոդը, որը ցույց է տալիս, թե ինչպես նվազեցնել PDF փաստաթղթում ռեսուրսների լուծաչափը և գույնի բիթային խորությունը՝ օգտագործելով Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand դասը՝
/// <summary>
/// Detects "read color depth" of PDF image resources and compress PDF document with intent to view in 150DPI.
/// </summary>
/// <param name="inPdfFilename">The input PDF filename.</param>
/// <param name="outPdfFilename">The output PDF filename.</param>
public static void CompressToViewIn150DPI(string inPdfFilename, string outPdfFilename)
{
    // create compressor that will compress PDF document using lossy compression algorithms
    Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand compressor =
       Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand.CreateLossyCompressor(150, false, false, false);

    // specify that compressor must use JPEG compression for color images
    compressor.ColorImagesCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jpeg;
    // specify that compressor must set JPEG quality to 70
    compressor.ColorImagesCompressionSettings.JpegQuality = 70;

    // specify that compressor must detect if image is bitonal image and use optimal compression for bitonal image
    compressor.DetectBitonalImageResources = true;
    // specify that compressor must detect if image is black-white image and use optimal compression for black-white image
    compressor.DetectBlackWhiteImageResources = true;
    // specify that compressor must detect if image is grayscale image and use optimal compression for grayscale image
    compressor.DetectGrayscaleImageResources = true;

    // compress PDF document
    compressor.Compress(inPdfFilename, outPdfFilename);
}


Մաքրել PDF փաստաթղթի բովանդակությունը

PDF փաստաթուղթը կարող է պարունակել չօգտագործվող օբյեկտներ, օրինակ՝ ռեսուրսներ, էջեր, տառատեսակներ, պատկերներ, անուններ, բովանդակության օպերատորներ: PDF փաստաթուղթը կարող է նաև պարունակել ռեսուրսների կրկնօրինակներ, օրինակ՝ պատկերի պատճեններ կամ տառատեսակների պատճեններ: VintaSoft PDF .NET հավելվածը կարող է PDF փաստաթղթում որոշել և հեռացնել չօգտագործվող օբյեկտները և ռեսուրսների կրկնօրինակները:

Ահա C# կոդը, որը ցույց է տալիս, թե ինչպես հեռացնել չօգտագործվող օբյեկտները և կրկնօրինակ ռեսուրսները PDF փաստաթղթից՝ օգտագործելով Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand դասը՝
/// <summary>
/// Removes unused and duplicated resources in the PDF document.
/// </summary>
/// <param name="inPdfFilename">The input PDF filename.</param>
/// <param name="outPdfFilename">The output PDF filename.</param>
public static void RemoveUnsusedResources(string inPdfFilename, string outPdfFilename)
{
    // create compressor with empty compression settings
    Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand compressor =
       Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand.CreateEmptyCompressor();

    // specify that compressor must remove duplicate resources from PDF document
    compressor.RemoveDuplicateResources = true;
    // specify that compressor must remove unused names resources from PDF document
    compressor.RemoveUnusedNamedResources = true;
    // specify that compressor must remove unused names from PDF document
    compressor.RemoveUnusedNames = true;
    // specify that compressor must remove unused pages from PDF document
    compressor.RemoveUnusedPages = true;
    // specify that compressor must remove invalid bookmarks from PDF document
    compressor.RemoveInvalidBookmarks = true;
    // specify that compressor must remove invalid links from PDF document
    compressor.RemoveInvalidLinks = true;

    // compress PDF document
    compressor.Compress(inPdfFilename, outPdfFilename);
}


Հեռացնել մետատվյալները և այլ տարրերը PDF փաստաթղթից

PDF փաստաթուղթը կարող է պարունակել օբյեկտներ, որոնք չեն ազդում PDF էջի ցուցադրման վրա, օրինակ՝ մետատվյալներ, էջանիշեր, ներկառուցված ֆայլեր, ինտերակտիվ ձև, էջի մանրապատկերներ, կառուցվածքի ծառ, փաստաթղթի տեղեկատվություն: VintaSoft PDF .NET հավելվածը թույլ է տալիս հեռացնել օբյեկտները PDF փաստաթղթից, եթե փաստաթղթում օբյեկտներ անհրաժեշտ չեն:

Ահա C# կոդը, որը ցույց է տալիս, թե ինչպես հեռացնել օբյեկտները PDF փաստաթղթից՝ օգտագործելով Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand դասը՝
/// <summary>
/// Removes metadata, bookmarks, document information, embedded files, embedded thumbnails, interactive form and structure tree of the PDF document.
/// </summary>
/// <param name="inPdfFilename">The input PDF filename.</param>
/// <param name="outPdfFilename">The output PDF filename.</param>
public static void RemoveObjects(string inPdfFilename, string outPdfFilename)
{
    // create compressor with empty compression settings
    Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand compressor =
       Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand.CreateEmptyCompressor();

    // specify that compressor must remove metadata from PDF document
    compressor.RemoveMetadata = true;
    // specify that compressor must remove bookmarks from PDF document
    compressor.RemoveBookmarks = true;
    // specify that compressor must remove document information from PDF document
    compressor.RemoveDocumentInformation = true;
    // specify that compressor must remove embedded files from PDF document
    compressor.RemoveEmbeddedFiles = true;
    // specify that compressor must remove embedded thumbnails from PDF document
    compressor.RemoveEmbeddedThumbnails = true;
    // specify that compressor must remove interactive form from PDF document
    compressor.RemoveInteractiveForm = true;
    // specify that compressor must remove structure tree from PDF document
    compressor.RemoveStructureTree = true;

    // compress PDF document
    compressor.Compress(inPdfFilename, outPdfFilename);
}


Հեռացնել նշումները PDF փաստաթղթից

VintaSoft PDF .NET հավելվածը թույլ է տալիս հեռացնել նշումները PDF էջից, եթե նշումները անհրաժեշտ չեն PDF էջում: VintaSoft PDF .NET հավելվածը նաև թույլ է տալիս փոխակերպել նշումները գրաֆիկայի (հարթեցնել նշումները), եթե նշումները պետք է ցուցադրվեն PDF էջում, բայց օգտատերը չպետք է կարողանա փոխազդել նշումների հետ:

Ահա C# կոդը, որը ցույց է տալիս, թե ինչպես փոխակերպել նշումները գրաֆիկայի (հարթեցնել նշումները) և հեռացնել ինտերակտիվ ձևը PDF փաստաթղթից՝ օգտագործելով Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand դասը՝
/// <summary>
/// Flatten an annotations and remove intractive form of the PDF document.
/// </summary>
/// <param name="inPdfFilename">The input PDF filename.</param>
/// <param name="outPdfFilename">The output PDF filename.</param>
public static void FlattenAnnotations(string inPdfFilename, string outPdfFilename)
{
    // create compressor with empty compression settings
    Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand compressor =
       Vintasoft.Imaging.Pdf.Processing.PdfDocumentCompressorCommand.CreateEmptyCompressor();

    // specify that compressor must remove interactive form from PDF document
    compressor.RemoveInteractiveForm = true;
    // specify that compressor must flatten annotations in PDF document
    compressor.FlattenAnnotations = true;

    // compress PDF document
    compressor.Compress(inPdfFilename, outPdfFilename);
}