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

推荐订阅源

The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
L
LangChain Blog
Simon Willison's Weblog
Simon Willison's Weblog
N
News and Events Feed by Topic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
WordPress大学
WordPress大学
M
MIT News - Artificial intelligence
A
About on SuperTechFans
Microsoft Security Blog
Microsoft Security Blog
I
Intezer
Know Your Adversary
Know Your Adversary
H
Heimdal Security Blog
博客园 - 叶小钗
B
Blog RSS Feed
F
Fortinet All Blogs
Hacker News: Ask HN
Hacker News: Ask HN
A
Arctic Wolf
小众软件
小众软件
Help Net Security
Help Net Security
MongoDB | Blog
MongoDB | Blog
aimingoo的专栏
aimingoo的专栏
G
Google Developers Blog
Forbes - Security
Forbes - Security
Latest news
Latest news
AI
AI
I
InfoQ
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
CXSECURITY Database RSS Feed - CXSecurity.com
W
WeLiveSecurity
C
Cybersecurity and Infrastructure Security Agency CISA
人人都是产品经理
人人都是产品经理
Cyberwarzone
Cyberwarzone
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
C
Cyber Attacks, Cyber Crime and Cyber Security
O
OpenAI News
博客园 - 【当耐特】
T
Threat Research - Cisco Blogs
GbyAI
GbyAI
U
Unit 42
D
Darknet – Hacking Tools, Hacker News & Cyber Security
G
GRAHAM CLULEY
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
Google DeepMind News
Google DeepMind News
T
Threatpost
T
The Blog of Author Tim Ferriss
罗磊的独立博客

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