คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 4
$file = '248966-Optimization-Reference-Manual-V1-049.pdf' ; `
$range = 2..10 ; `
Write-Host "Query CIM for number of cores.." ; `
$query = Get-CimInstance -ClassName Win32_Processor ; `
$corenum = ($query |
Measure-Object -Property NumberOfCores -Sum).Sum ; `
$threadnum = ($query |
Measure-Object -Property NumberOfLogicalProcessors -Sum).Sum ; `
Write-Host "Physical cores : $corenum`r`nLogical cores : $threadnum" ; `
$range | Foreach-Object -ThrottleLimit $corenum -Parallel {
$core = "core $([System.Threading.Thread]::GetCurrentProcessorId())"
$ps = "page1&$("{0:d3}" -f $_).ps"
$pdf = "page1&$("{0:d3}" -f $_).pdf"
Write-Host "[$core] $pdf ...processing"
& ".\gswin64c" `
-dQUIET `
-o $ps `
-sDEVICE=ps2write `
-sPageList="1,$_" `
$Using:file `
2> $null
& ".\gswin64c" `
-dQUIET `
-o $pdf `
-sDEVICE=pdfwrite `
-dFastWebView `
$ps `
2> $null
Remove-Item $ps
Write-Host "[$core] $pdf ...done"
}
สคริป Powershell นี้จะสร้างไฟล์ปะหน้าหนึ่ง ของตั้งแต่หน้าที่สอง
หรือ 1,2 1,3 .... 1,10 ตามที่ท่านจขกท. ว่าไว้
page1&002.pdf
page1&003.pdf
...
page1&010.pdf
จากต้นฉบับ 248966-Optimization-Reference-Manual-V1-049.pdf
https://www.intel.com/content/www/us/en/content-details/814198
ด้วย Powershell 7
(Install จาก Windows Store)
https://apps.microsoft.com/detail/9mz1snwt0n5d
โดยสคริปเรียก Ghostscript 10.03.0 RC1
(โหลด gs10030w64.exe จาก Github)
https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/tag/gs10030rc1
เมื่อลงโปรแกรม Powershell 7 และ Ghostscript เสร็จ
ให้ copy สองไฟล์นี้ จากโฟลเดอร์ C:\Program Files\gs\10.01.2\bin
gswin64c.exe
gswin64.dll
มาไว้ในโฟลเดอร์ของไฟล์ต้นฉบับที่จะแยก
แล้วแก้ไขตัวแปร file และ range ตามที่ต้องการ
แล้ว paste ลง powershell prompt
ที่อยู่บนโฟลเดอร์ของไฟล์ต้นฉบับที่จะแยก
สคริปต์จะใช้ คอร์ทั้งหมด ของเครื่อง ดังนั้นสปีดไม่ต้องพูดถึง แป๊บเดียวก็เสร็จ
(ถ้ายังไม่ทันใจ เปลี่ยน -ThrottleLimit $corenum เป็น -ThrottleLimit $threadnum จะบังคับ hyperthreading)
แต่ถ้า สมมติ มีการแก้ไขให้รันแบบยาวมาก ๆ ต้อง มีคนเฝ้าเครื่อง เพราะรันนานแล้วมันจะร้อนสุด ๆ
อย่าปล่อยรันยาวไม่มีคนเฝ้าครับ
Ghostscript - PDF file output
https://ghostscript.readthedocs.io/en/latest/VectorDevices.html#the-family-of-pdf-and-postscript-output-devices
$file = '248966-Optimization-Reference-Manual-V1-049.pdf' ; `
$range = 2..10 ; `
Write-Host "Query CIM for number of cores.." ; `
$query = Get-CimInstance -ClassName Win32_Processor ; `
$corenum = ($query |
Measure-Object -Property NumberOfCores -Sum).Sum ; `
$threadnum = ($query |
Measure-Object -Property NumberOfLogicalProcessors -Sum).Sum ; `
Write-Host "Physical cores : $corenum`r`nLogical cores : $threadnum" ; `
$range | Foreach-Object -ThrottleLimit $corenum -Parallel {
$core = "core $([System.Threading.Thread]::GetCurrentProcessorId())"
$ps = "page1&$("{0:d3}" -f $_).ps"
$pdf = "page1&$("{0:d3}" -f $_).pdf"
Write-Host "[$core] $pdf ...processing"
& ".\gswin64c" `
-dQUIET `
-o $ps `
-sDEVICE=ps2write `
-sPageList="1,$_" `
$Using:file `
2> $null
& ".\gswin64c" `
-dQUIET `
-o $pdf `
-sDEVICE=pdfwrite `
-dFastWebView `
$ps `
2> $null
Remove-Item $ps
Write-Host "[$core] $pdf ...done"
}
สคริป Powershell นี้จะสร้างไฟล์ปะหน้าหนึ่ง ของตั้งแต่หน้าที่สอง
หรือ 1,2 1,3 .... 1,10 ตามที่ท่านจขกท. ว่าไว้
page1&002.pdf
page1&003.pdf
...
page1&010.pdf
จากต้นฉบับ 248966-Optimization-Reference-Manual-V1-049.pdf
https://www.intel.com/content/www/us/en/content-details/814198
ด้วย Powershell 7
(Install จาก Windows Store)
https://apps.microsoft.com/detail/9mz1snwt0n5d
โดยสคริปเรียก Ghostscript 10.03.0 RC1
(โหลด gs10030w64.exe จาก Github)
https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/tag/gs10030rc1
เมื่อลงโปรแกรม Powershell 7 และ Ghostscript เสร็จ
ให้ copy สองไฟล์นี้ จากโฟลเดอร์ C:\Program Files\gs\10.01.2\bin
gswin64c.exe
gswin64.dll
มาไว้ในโฟลเดอร์ของไฟล์ต้นฉบับที่จะแยก
แล้วแก้ไขตัวแปร file และ range ตามที่ต้องการ
แล้ว paste ลง powershell prompt
ที่อยู่บนโฟลเดอร์ของไฟล์ต้นฉบับที่จะแยก
สคริปต์จะใช้ คอร์ทั้งหมด ของเครื่อง ดังนั้นสปีดไม่ต้องพูดถึง แป๊บเดียวก็เสร็จ
(ถ้ายังไม่ทันใจ เปลี่ยน -ThrottleLimit $corenum เป็น -ThrottleLimit $threadnum จะบังคับ hyperthreading)
แต่ถ้า สมมติ มีการแก้ไขให้รันแบบยาวมาก ๆ ต้อง มีคนเฝ้าเครื่อง เพราะรันนานแล้วมันจะร้อนสุด ๆ
อย่าปล่อยรันยาวไม่มีคนเฝ้าครับ
Ghostscript - PDF file output
https://ghostscript.readthedocs.io/en/latest/VectorDevices.html#the-family-of-pdf-and-postscript-output-devices
แสดงความคิดเห็น
อยากทราบวิธีการแยกไฟล์ PDF พร้อมกันหลายๆไฟล์ในครั้งเดียว
ด้วยการจับคู่หน้าแบบ 1,2 1,3 1,4 1,5 ......... 1,700
แบบไม่ต้องมาทำทีละไฟล์