惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
Latest news
Latest news
G
GRAHAM CLULEY
Security Latest
Security Latest
C
Cyber Attacks, Cyber Crime and Cyber Security
Security Archives - TechRepublic
Security Archives - TechRepublic
N
News and Events Feed by Topic
S
Secure Thoughts
Simon Willison's Weblog
Simon Willison's Weblog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Help Net Security
Help Net Security
S
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - Franky
H
Heimdal Security Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
The Cloudflare Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
人人都是产品经理
人人都是产品经理
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
有赞技术团队
有赞技术团队
博客园 - 【当耐特】
雷峰网
雷峰网
Forbes - Security
Forbes - Security
IT之家
IT之家
The Hacker News
The Hacker News
P
Privacy & Cybersecurity Law Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
N
News | PayPal Newsroom
AI
AI
博客园 - 三生石上(FineUI控件)
PCI Perspectives
PCI Perspectives
H
Hacker News: Front Page
Apple Machine Learning Research
Apple Machine Learning Research
N
News and Events Feed by Topic
WordPress大学
WordPress大学
P
Palo Alto Networks Blog
S
SegmentFault 最新的问题
Last Week in AI
Last Week in AI
C
CERT Recently Published Vulnerability Notes
Cyberwarzone
Cyberwarzone
阮一峰的网络日志
阮一峰的网络日志
K
Kaspersky official blog
L
LINUX DO - 最新话题
宝玉的分享
宝玉的分享
S
Security @ Cisco Blogs
Know Your Adversary
Know Your Adversary
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页

博客园 - Tonyyang

【XAF】如何通过前缀或自定义架构将数据库表与内置系统表分开 [XAF] Declare Conditional Appearance Rules in Code DataTableHelper C# 多任务数据同步 【原】 XAF Localization改用百度翻译 C#百度翻译--亲测试可用 SqlQueryDynamic BOM导入 C#上传到FTP Server FREE OFFER - .NET App Security API (Role-based Access Control) 后台管理框架 Model to Model JSON序列化和反序列化日期时间的处理 Asp.net MVC 上传文件 Asp.net MVC bootstrap 穿梭框 EXT.NET Combox下拉Grid 转 Refresh Excel Pivot Tables Automatically Using SSIS Script Task SQL Server Integration Services SSIS最佳实践 PowerBI
Power Shell 7 和5.1 批量给pdf添加页码
Tonyyang · 2025-01-14 · via 博客园 - Tonyyang
# 批量给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