iT邦幫忙

0

該如何為 windows 印表機新增新的自訂紙張格式,且讓瀏覽器中選取的印表機可以讀到新增的紙張格式

2023-09-03 03:23:551729 瀏覽
  • 分享至 

  • xImage

研究了很久依舊沒成功,但我看 vnc server 可以做到每次在我把專門給 vnc 使用,用來輸出成 pdf 的印表機砍掉之後,再重開機就會自動新增回來,而且擁有比 Microsoft print to PDF 的印表機更多的紙張大小,雖然印表機名稱很類似,但 vnc server 的印表機使用的驅動程式並不是微軟提供的

一開始是找到Microsoft Print to PDF - custom paper sizes possible?,照著步驟在.gdppdc.xml這兩個檔案中新增內容,仍是沒在印表機的紙張選單中出現,後來想到直接修改這兩個檔案中原本就有的紙張格式的數值,但還是沒起作用,唯一有效果的地方只有使用 C# 的印表機 API 讀取DefaultPageSettings.PrintableArea時可以讀到.gdp檔修改過的PrintableArea數值

又想到去修改機碼HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\Microsoft Print To PDF內的printMinXExtentprintMinYExtent數值或printMediaSupported字串,依舊沒用

也有嘗試刪掉列印伺服器中舊的Microsoft Print to PDF驅動程式,然後修改C:\WINDOWS\System32\DriverStore\FileRepository資料夾下,屬於Microsoft Print to PDF資料夾中的MPDW-PDC.xml檔,再用這個修改過的檔案重新把Microsoft Print to PDF裝回來,效果等同於我去修改C:\Windows\System32\spool\V4Dirs資料夾中屬於Microsoft Print to PDF印表機的.gdp以及pdc.xml,所以還是沒起作用

接著我對照列印伺服器中的各驅動程式的內容,資料檔案不一定都要是.gpd,有的是.ini,有的是.dat,有的是.d64,反正就是五花八門,但他們都能自訂使用的紙張格式,瀏覽器中選到印表機時也都有列出的紙張可以選

有人了解印表機驅動程式在 windows 底層運作的原理嗎?到底瀏覽器或 c# 印表機 API 是去哪裡讀取印表機的紙張格式的值呢?我該怎麼修改或修改哪些內容才能新增自訂的紙張格式並且讓瀏覽器跟 c# 印表機 API 都能讀到呢?

有個小工具軟體可以做到這件事,你可以修改一台電腦之後,
在去看一下他增加了那些機碼登錄,
在把這些機碼登錄轉成REG檔案之後發布到其他電腦

中文天地網的 "Repair Tool for Microsoft Print to PDF 1.02 免安裝中文版 "
– Microsoft Print to PDF 診斷修復工具
https://zhtwnet.com/repair-tool-for-microsoft-print-to-pdf/

這個工具可以增加你需要的紙張大小,找出登錄之後,你可以任意新增修改刪除紙張設定
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
zero
iT邦好手 1 級 ‧ 2023-09-04 15:26:00
最佳解答

用 Windows Server 架 Print Server 吧

去研究機碼跟列印底層是廠商在做的工作,如果你是IT的話還是善用工具就好了

瀏覽器一直都是吃Windows的列印驅動在顯示UI的,之前因為這也是一個資安大漏洞

所以微軟也在這部份跟廠商調整了不少東西,能不動底層就不動,免得一個更新又壞了

https://ithelp.ithome.com.tw/upload/images/20230904/20022284BPMpJLZ53I.jpg

https://ithelp.ithome.com.tw/upload/images/20230904/20022284BACfpW8OGN.jpg

https://ithelp.ithome.com.tw/upload/images/20230904/20022284eIqabxeLS0.jpg

iT邦新手 4 級 ‧ 2023-09-04 23:19:09 檢舉

雖然不是我想要的解決方案,不過還是感謝您提出一個可行的解法

我要發表回答

立即登入回答