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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - Tonyyang

【XAF】如何通过前缀或自定义架构将数据库表与内置系统表分开 [XAF] Declare Conditional Appearance Rules in Code DataTableHelper - Tonyyang C# 多任务数据同步 【原】 XAF Localization改用百度翻译 - Tonyyang C#百度翻译--亲测试可用 SqlQueryDynamic BOM导入 - Tonyyang C#上传到FTP Server FREE OFFER - .NET App Security API (Role-based Access Control) 后台管理框架 Model to Model JSON序列化和反序列化日期时间的处理 Asp.net MVC 上传文件 - Tonyyang 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