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

推荐订阅源

P
Privacy & Cybersecurity Law Blog
aimingoo的专栏
aimingoo的专栏
Microsoft Azure Blog
Microsoft Azure Blog
T
Tailwind CSS Blog
P
Proofpoint News Feed
T
The Blog of Author Tim Ferriss
WordPress大学
WordPress大学
GbyAI
GbyAI
Engineering at Meta
Engineering at Meta
I
InfoQ
U
Unit 42
小众软件
小众软件
阮一峰的网络日志
阮一峰的网络日志
Martin Fowler
Martin Fowler
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
G
Google Developers Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
S
Security Affairs
Jina AI
Jina AI
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
H
Hacker News: Front Page
MongoDB | Blog
MongoDB | Blog
A
About on SuperTechFans
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
SecWiki News
SecWiki News
V
V2EX
MyScale Blog
MyScale Blog
V2EX - 技术
V2EX - 技术
www.infosecurity-magazine.com
www.infosecurity-magazine.com
G
GRAHAM CLULEY
博客园 - 司徒正美
L
LangChain Blog
F
Fortinet All Blogs
Scott Helme
Scott Helme
量子位
Recent Announcements
Recent Announcements
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
Cloudbric
Cloudbric
W
WeLiveSecurity
The Register - Security
The Register - Security
NISL@THU
NISL@THU
博客园_首页

博客园 - 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