• 先安装PDF Creator。

  http://rj.baidu.com/soft/detail/10500.html?ald

  • 把他设置为默认打印机。
  • 在IE中设置打印页面的边距,页眉页脚等。

Powershell脚本

[CmdletBinding()]
param ( [Parameter(Mandatory=$False, Position=0, ValueFromPipeline=$false, HelpMessage='Define the Key')]
[ValidateNotNullOrEmpty()]
[string]$WorkPlace,
[Parameter(Mandatory=$False, Position=0, ValueFromPipeline=$false, HelpMessage='Mail to users split with , ')]
[ValidateNotNullOrEmpty()]
[string[]]$MailTos ) # provide the location where the PDF file will be created #
$OUTPUT_FOLDER="D:\TimeJob\" # a name for the PDF file without the extension #
# without a name the file name is the current timestampt #
$OUTPUT_FILENAME="" # comment following line to add a timestamp to each file gets created
if($OUTPUT_FILENAME.length -eq 0) {$OUTPUT_FILENAME="$WorkPlace" +"_" + (get-date).tostring("yyyyMMdd_HHmmss")} #website
$website="http://www.baidu.com" #$website="https://www.baidu.com/"
###############################################################
# DO NOT WRITE ANYTHING BELOW THIS LINE #
###############################################################
$ErrorActionPreference="Stop"
$WarningPreference="Stop"
$PDFINFOPATH="HKCU:\Software\PDFCreator\Program"
$AUTOSAVEFNAMEPROPERTY="AutoSaveFilename"
$AUTOSAVEDIRPROPERTY="AutoSaveDirectory"
$USEAUTOSAVEPROPERTY="UseAutoSave"
################################################################ function WriteScreenLog {
##
## Write a log entry to the screen
## Usage:
## WriteScreenLog -Message "Message text" [-Type OK|Warning|Error|Info|Verbose] [-printTime] Param (
[Parameter(Mandatory=$True,Position=0)]
[string]$Message, [ValidateSet("OK","Warning","Error", "Info", "Verbose")]
[string]$Type, [switch]$printTime
)
$screenXpos = [Math]::Truncate($Host.UI.RawUI.WindowSize.Width - 11) # Write the message to the screen
$now = ""
if($printTime -eq $true){
$now = (Get-Date -Format "yyyy-MM-dd HH:mm:ss")
$now = "$now | "
}
$Message = $now + $Message
Write-Output $Message if($Type -ne "") {
[Console]::SetCursorPosition($screenXpos, $Host.UI.RawUI.CursorPosition.Y-1)
}
switch ($Type) {
"OK" {Write-Host -BackgroundColor Green -ForegroundColor Black " OK "}
"Warning" {Write-Host -BackgroundColor Yellow -ForegroundColor Black " Warning "}
"Error" {Write-Host -ForegroundColor Yellow -BackgroundColor Red " Error "}
"Info" {Write-Host -BackgroundColor $Host.UI.RawUI.ForegroundColor -ForegroundColor $Host.UI.RawUI.BackgroundColor " Info "}
"Verbose" {Write-Host -BackgroundColor $Host.UI.RawUI.ForegroundColor -ForegroundColor $Host.UI.RawUI.BackgroundColor " Verbose "}
}
} ################################################################
$LogFile="D:\TimeJob\Log\$OUTPUT_FILENAME.txt"
Start-Transcript -Path $LogFile try
{
get-itemproperty -path $PDFINFOPATH -name $AUTOSAVEDIRPROPERTY |out-null
set-itemproperty -path $PDFINFOPATH -name $AUTOSAVEDIRPROPERTY -value $OUTPUT_FOLDER |out-null
}
catch
{
new-itemproperty -path $PDFINFOPATH -name $AUTOSAVEDIRPROPERTY -value $OUTPUT_FOLDER |out-null }
try
{
get-itemproperty -path $PDFINFOPATH -name $USEAUTOSAVEPROPERTY |out-null
set-itemproperty -path $PDFINFOPATH -name $USEAUTOSAVEPROPERTY -value "" |out-null
}
catch
{
new-itemproperty -path $PDFINFOPATH -name $USEAUTOSAVEPROPERTY -value "" |out-null }
finally
{
try
{
$ie=new-object -com internetexplorer.application
$ie.navigate($website)
#depending upon the website sleep parameters here onwards may need adjustment
start-sleep -seconds 5
try
{
get-itemproperty -path $PDFINFOPATH -name $AUTOSAVEFNAMEPROPERTY |out-null
set-itemproperty -path $PDFINFOPATH -name $AUTOSAVEFNAMEPROPERTY -value "$OUTPUT_FILENAME.pdf" |out-null }
catch
{
new-itemproperty -path $PDFINFOPATH -name $AUTOSAVEFNAMEPROPERTY -value "$OUTPUT_FILENAME.pdf" |out-null
}
start-sleep -seconds 5
$ie.execWB(6,2)
start-sleep -seconds 5
$ie.quit()
WriteScreenLog -Message "Success:Save $OUTPUT_FOLDER$OUTPUT_FILENAME.pdf"
#WriteScreenLog -Message "" -Type INFO -printTime
}
catch
{
WriteScreenLog -Message "Error:Save $OUTPUT_FOLDER$OUTPUT_FILENAME.pdf" -Type ERROR -printTime
}
finally
{
try
{
WriteScreenLog -Message "Start to sleep 10 seconds for save PDF report"
Start-Sleep -s 10
WriteScreenLog -Message "Success:Send $OUTPUT_FOLDER$OUTPUT_FILENAME.pdf to $MailTos"
#Start-Sleep -s 60
}
catch
{
WriteScreenLog -Message "Error:Send $OUTPUT_FOLDER$OUTPUT_FILENAME.pdf to $MailTos"
sendReportEmailError "Error:Send $OUTPUT_FOLDER$OUTPUT_FILENAME.pdf to $MailTos"
}
try
{
set-itemproperty -path $PDFINFOPATH -name $AUTOSAVEFNAMEPROPERTY -value "" |out-null
set-itemproperty -path $PDFINFOPATH -name $AUTOSAVEDIRPROPERTY -value "" |out-null
set-itemproperty -path $PDFINFOPATH -name $USEAUTOSAVEPROPERTY -value "" |out-null
}
catch
{
WriteScreenLog -Message "Error:Set item property path value"
}
}
if($LogFile)
{
Stop-Transcript
}
}

Bat 调用

ping 127.0.0.1 -n 6 > nul

powershell "D:\TimeJob\PDF.ps1" -WorkPlace "XXXXX" -MailTos "xxxxxxx,xxxxxxx"

ping 127.0.0.1 -n 2 > nul

使用PDFCreate 和 Powershell 自动保存网页为PDF的更多相关文章

  1. 使用 PowerShell 自动登录Azure

    PowerShell 是管理 Azure 的最好方式之一,通过使用 PowerShell 脚本可以把很多的工作自动化.比如对于 Azure 上的虚拟机,可以设置定时关机操作,并在适当的时间把它开机,这 ...

  2. 一键保存网页为PDF

    一键保存网页为PDF_V1.2   福利来了,“一键保存网页为PDF”发布以来最给力的功能来了: 1.支持大部分浏览器了(添加书签方式),测试IE8\IE9.谷歌.火狐可用: 2.转换组件“ephtm ...

  3. Azure 基础:用 PowerShell 自动登录

    PowerShell 是管理 Azure 的最好方式,因为我们可以使用脚本把很多的工作自动化.比如把 Azure 上的虚拟机关机,并在适当的时间把它开机,这样我们就能节省一些开支,当然我们同时也为减少 ...

  4. 使用PowerShell 自动安装IIS 及自动部署网站

    执行环境:Windows Server 2012 R2 安装iis核心代码,可自定义安装项 注意这里不能使用add-windowsfeature  "Web-Filtering", ...

  5. Azure 基础:用 PowerShell 自动发布 CloudServices

    在软件的开发过程中,自动化的编译和部署能够带来很多的优势.下面我们聊聊如何自动发布云应用程序到 azure 上的 cloud services. 打包要发布的内容 首先使用 msbuild 编译 *. ...

  6. 将HTML页面自动保存为PDF文件并上传的两种方式(一)-前端(react)方式

    一.业务场景 公司的样本检测报告以React页面的形式生成,已调整为A4大小的样式并已实现分页,业务上需要将这个网页生成PDF文件,并上传到服务器,后续会将这个文件发送给客户(这里不考虑). 二.原来 ...

  7. 谷歌浏览器保存网页为pdf和.mhtml文件

    注:需要安装chrome谷歌浏览器,尽可能安装最新版的浏览器: 一:保存为pdf 打开要加载的网页 空白处右键-----打印 配置要打印的pdf网页 点击  左边----> 保存按钮  即可: ...

  8. 使用PowerShell自动部署ASP.NetCore程序到IIS

    Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能.有关于更多PowerShell的信息,可参阅百度词条 接 ...

  9. PowerShell自动部署ASP.NET Core程序到 IIS

    Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能.有关于更多PowerShell的信息,可参阅百度词条 接 ...

随机推荐

  1. jQuery.Deferred 源码分析

    作者:禅楼望月(http://www.cnblogs.com/yaoyinglong ) 1 引子 观察者模式是我们日常开发中经常用的模式.这个模式由两个主要部分组成:发布者和观察者.通过观察者模式, ...

  2. 【大数据】Linux下Storm(0.9版本以上)的环境配置和小Demo

    一.引言: 在storm发布到0.9.x以后,配置storm将会变得简单很多,也就是只需要配置zookeeper和storm即可,而不再需要配置zeromq和jzmq,由于网上面的storm配置绝大部 ...

  3. 如何禁用事件的浮升(div的子元素的点击事件会触发父元素的点击事件)

    <div onclick="alert();"> <div onclick="alert();"></div> </d ...

  4. Windows Azure HandBook (10) 测试本地网络到微软云的延迟

    <Windows Azure Platform 系列文章目录> 之前遇到一些微软云的客户,在使用海外数据中心的时候,需要评估本地网络到微软云网络的延迟. 我们建议部署到微软云上的服务,离最 ...

  5. 20款精致的长阴影 LOGO 设计【附免费生成工具】

    长阴影(Long Shadow)概念来自于最新非常流行的扁平化设计(Flat Design).扁平化设计趋势影响最大的是用户界面元素和图标,但它也开始蔓延到其他网页设计的其他部分. 长阴影其实就是扩展 ...

  6. js基础篇——原型与原型链的详细理解

    js中的对象分为两种:普通对象object和函数对象function. function fn1(){}; var fn2 = function(){}; var fn3 = new Function ...

  7. 第23/24周 临时数据库(TempDb)

    在今天的性能调优培训里我们讨论下TempDb——SQL Server的公共厕所,在SQL Server里我是这样描述它的.我们的每个人都会经常使用TempDb.有些人直接使用它,有些人不直接使用它.今 ...

  8. HTML5的五种客户端离线存储方案

    最近折腾HTML5游戏需要离线存储功能,便把目前可用的几种HTML5存储方式研究了下,基于HT for Web写了个综合的实例,分别利用了Cookie.WebStorage.IndexedDB以及Fi ...

  9. SQL Server时间粒度系列----第6节基于当前日的小时数和分钟数与mysql unix_timestamp和from_unixtime的mssql实现

    本文目录列表: 1.基于当前日的小时数和分钟数2.mysql unix_timestamp和from_unixtime的mssql实现 3.总结语 4.参考清单列表   基于当前日的小时数和分钟数   ...

  10. ASP.NET MVC系列:从Controller访问Model数据

    在项目解决方案中,添加一个MoviesController控制器,选择对应的模板,和模型类以及数据上下文:关于如何添加模型类和数据上下文,我们在ASP.NET MVC系列:添加模型中已经介绍过