.NET 學習

.NET 學習生活感想... 万事成蹉跎..... 贵在坚持 及时整理自己做过和学过的东西

博客园 首页 新随笔 联系 订阅 管理
# 批量给pdf添加页码
# 导入必要的程序集
Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName System.Windows.Forms
# 加载 iTextSharp.dll

# 假设iTextSharp.dll位于C:\path\to\iTextSharp目录
$iTextSharpPath = "C:\Users\Administrator\source\repos\ConsoleApp2\packages\iTextSharp.5.5.13.4\lib\net461\iTextSharp.dll"
# 加载iTextSharp.dll
Add-Type -Path $iTextSharpPath
# 假设BouncyCastle的DLL位于C:\path\to\BouncyCastle目录
$bouncyCastlePath = "C:\Python34\psLib\BouncyCastle.Cryptography.dll"

# 加载BouncyCastle.Crypto.dll
Add-Type -Path $bouncyCastlePath


# 定义PDF处理函数
function Add-PdfPageNumbers {
    param (
        [string]$inputFolder,
        [string]$outputFolder
    )

    # 确保输出文件夹存在
    if (-Not (Test-Path -Path $outputFolder)) {
        New-Item -ItemType Directory -Path $outputFolder | Out-Null
    }

    # 获取所有PDF文件
    $pdfFiles = Get-ChildItem -Path $inputFolder -Filter *.pdf

    foreach ($pdfFile in $pdfFiles) {
        $inputFilePath = $pdfFile.FullName
        $outputFilePath = Join-Path -Path $outputFolder -ChildPath $pdfFile.Name

        # 打开PDF文档
        $pdfDocument = [iTextSharp.text.pdf.PdfReader]::new($inputFilePath)
        $pageCount = $pdfDocument.NumberOfPages

        # 创建PDF写入器
        $pdfStamper = [iTextSharp.text.pdf.PdfStamper]::new($pdfDocument, [System.IO.File]::Create($outputFilePath))

        # 设置字体
        $baseFont = [iTextSharp.text.pdf.BaseFont]::CreateFont([iTextSharp.text.pdf.BaseFont]::HELVETICA, [iTextSharp.text.pdf.BaseFont]::WINANSI, $false)
        $fontSize = 12

        for ($i = 1; $i -le $pageCount; $i++) {
            $pdfContentByte = $pdfStamper.GetOverContent($i)
            $pdfContentByte.BeginText()
            $pdfContentByte.SetFontAndSize($baseFont, $fontSize)
            $pdfContentByte.ShowTextAligned([iTextSharp.text.pdf.PdfContentByte]::ALIGN_CENTER, "Page $i of $pageCount", 520, 20, 0)
            $pdfContentByte.EndText()
        }

        # 关闭PDF写入器
        $pdfStamper.Close()
        $pdfDocument.Close()
    }
}

# 调用函数,指定输入和输出文件夹路径
$inputFolder = "C:\Users\Administrator\Desktop\Sign\SO2411160009-3\1BB0110A"
$outputFolder = "C:\Users\Administrator\Desktop\Sign\SO2411160009-3\1BB0110A\output"
Add-PdfPageNumbers -inputFolder $inputFolder -outputFolder $outputFolder

 5.1 版

    Add-Type -AssemblyName System.Drawing
    Add-Type -AssemblyName System.Windows.Forms
    $iTextSharpPath = "C:\Python34\psLib\iTextSharp.dll"

    try {
        [System.Reflection.Assembly]::LoadFrom($iTextSharpPath)
        Write-Output "iTextSharp loaded successfully."
    } catch {
        Write-Error "Failed to load iTextSharp: $_"
    } 

    $bouncyCastlePath = "C:\Python34\psLib\BouncyCastle.Cryptography.dll"

    try {
        [System.Reflection.Assembly]::LoadFrom($bouncyCastlePath)
        Write-Output "BouncyCastle loaded successfully."
    } catch {
        Write-Error "Failed to load BouncyCastle: $_"
    }

# 定义PDF处理函数
function Add-PdfPageNumbers {
    param (
        [string]$inputFolder,
        [string]$outputFolder
    )

    # 确保输出文件夹存在
    if (-Not (Test-Path -Path $outputFolder)) {
        New-Item -ItemType Directory -Path $outputFolder | Out-Null
    }

    # 获取所有PDF文件
    $pdfFiles = Get-ChildItem -Path $inputFolder -Filter *.pdf

    foreach ($pdfFile in $pdfFiles) {
        $inputFilePath = $pdfFile.FullName
        $outputFilePath = Join-Path -Path $outputFolder -ChildPath $pdfFile.Name

        # 打开PDF文档
        $pdfDocument = [iTextSharp.text.pdf.PdfReader]::new($inputFilePath)
        $pageCount = $pdfDocument.NumberOfPages

        # 创建PDF写入器
        $pdfStamper = [iTextSharp.text.pdf.PdfStamper]::new($pdfDocument, [System.IO.File]::Create($outputFilePath))

        # 设置字体
        $baseFont = [iTextSharp.text.pdf.BaseFont]::CreateFont([iTextSharp.text.pdf.BaseFont]::HELVETICA, [iTextSharp.text.pdf.BaseFont]::WINANSI, $false)
        $fontSize = 8

        for ($i = 1; $i -le $pageCount; $i++) {
            $pdfContentByte = $pdfStamper.GetOverContent($i)
            $pdfContentByte.BeginText()
            $pdfContentByte.SetFontAndSize($baseFont, $fontSize)
            $pdfContentByte.ShowTextAligned([iTextSharp.text.pdf.PdfContentByte]::ALIGN_CENTER, "$i/$pageCount", 810, 15, 0)
            $pdfContentByte.EndText()
        }

        # 关闭PDF写入器
        $pdfStamper.Close()
        $pdfDocument.Close()
    }
}

# 调用函数,指定输入和输出文件夹路径
$inputFolder = "C:\Users\Administrator\Desktop\Sign\SO2411160009-3\1BB0110A"
$outputFolder = "C:\Users\Administrator\Desktop\Sign\SO2411160009-3\1BB0110A\output"
Add-PdfPageNumbers -inputFolder $inputFolder -outputFolder $outputFolder

 

posted on 2025-01-14 15:32  Tonyyang  阅读(35)  评论(0)    收藏  举报
欢迎转载,转载请注明出处:http://www.cnblogs.com/Tonyyang/