Powershell 拆分和合并PDF

这里使用到 itextsharp dll, 需要的可以在我的CSDN下载:




$dllpath = "\\cnfuoapp130\rpa_folder\kdc_rpa\Jayden\RC_Expense\Rc_Submit_IBS\Library";

$sourcePDF = "C:\Users\jtang20\Desktop\splitPdf\20200912_SLE-BEL-S-20-003_Rachel Zheng12345678.pdf";

$outputFolder = $sourcePDF.Substring(0,$sourcePDF.LastIndexOf("\") + 1) + "split"; # "C:\Users\jtang20\Desktop\splitPdf\split";

$combineFolder = $sourcePDF.Substring(0,$sourcePDF.LastIndexOf("\") + 1) + "combine"; # "C:\Users\jtang20\Desktop\splitPdf\combine";

Function splitPDF(){

    if(Test-Path $outputFolder){

        [void](Remove-Item -Path $outputFolder -Recurse);

    }

    Start-Sleep 1;

    [void](New-Item -Path $outputFolder -ItemType Directory);

    $path = "$dllpath\itextsharp.dll";

    [Void][System.Reflection.Assembly]::LoadFile($path);

    $reader = New-Object iTextSharp.text.pdf.PdfReader($sourcePDF);

    $pCount = $reader.NumberOfPages;

    $startPos = 1;

    for($i = 1;$i -le $pCount; $i++){

        if($i -le $pCount){

            $output = $outputFolder + "\" + $i + ".pdf";

            $fileStream = New-Object System.IO.FileStream($output, [System.IO.FileMode]::OpenOrCreate);

            $document = New-Object iTextSharp.text.Document;

            $pdfCopy = New-Object iTextSharp.text.pdf.PdfCopy($document, $fileStream);

            $document.Open();

            $pdfCopy.AddPage($pdfCopy.GetImportedPage($reader, $i));

            $newFile = [System.IO.FileInfo]::new($output);

            #Write-Host $newFile.Length;

            $pdfCopy.FreeReader($reader);

            $document.Close();

            Start-Sleep 0.2;

            $fileStream.Close();

        }

    }


    $reader.Close();

    Start-Sleep 0.2;

    return $pCount;

}

Function MergePdf(){

    if(Test-Path $combineFolder){

        [void](Remove-Item -Path $combineFolder -Recurse);

    }

    Start-Sleep 1;

    [void](New-Item -Path $combineFolder -ItemType Directory);

    $sList = "";$returnFP = "";

    $lengthCount = 0;

    for($i = 1;$i -le $pCount; $i++){

        # FileInfo

        $FI = [System.IO.FileInfo]::new("$outputFolder\$i.pdf");

        $lengthCount = $lengthCount + $Fi.Length;

        if($lengthCount -gt (9 * 1024 * 1024)){

            if([String]::IsNullOrEmpty($sList)){

                $sList = $i.ToString();

            }else{

                $sList = $sList + "|$i";

            }

            $lengthCount = $Fi.Length;

        }else{

            if([String]::IsNullOrEmpty($sList)){

                $sList = $i.ToString();

            }else{

                $sList = $sList + ",$i";

            }

        }

    }


    $iCount = 0;

    $sFileName = $sourcePDF.Substring($sourcePDF.LastIndexOf("\") + 1);

    if($sFileName.Length -gt 43){

        $sFileName = $sFileName.Substring(0,43);

    }else{

        $sFileName = $sFileName.Substring(0,$sFileName.LastIndexOf("."));

    }


    $reader = New-Object iTextSharp.text.pdf.PdfReader($sourcePDF);

    foreach($pageColl in $sList.Split("|")){

        $path = "$dllpath\itextsharp.dll";

        [Void][System.Reflection.Assembly]::LoadFile($path);

        $sFP = "$combineFolder\$sFileName`_" + "$iCount.pdf";

        if($returnFP -eq ""){

            $returnFP = $sFP;

        }else{

            $returnFP = $returnFP + "," + $sFP;

        }

        $fileStream = New-Object System.IO.FileStream(($sFP), [System.IO.FileMode]::OpenOrCreate);

        $document = New-Object iTextSharp.text.Document;

        $pdfCopy = New-Object iTextSharp.text.pdf.PdfCopy($document, $fileStream);

        $document.Open();

        foreach ($objPage in $pageColl.split(",")){

            #$sFileName" + "_" +

            $pdfCopy.AddPage($pdfCopy.GetImportedPage($reader, $objPage));

        }

        $pdfCopy.FreeReader($reader);

        $document.Close();

        Start-Sleep 0.2;

        $fileStream.Close();


        $iCount++;

    }

    $reader.Close();

    #>

    return $returnFP;

}

$pCount = splitPDF;

#Write-Host $pCount;

$sAllFile = MergePdf;

Write-Output $sAllFile;

你可能感兴趣的:(Powershell 拆分和合并PDF)