今天隔壁同事要合并2個(gè)pdf,經(jīng)確認(rèn)已損壞,但可以在瀏覽器中預(yù)覽,向我求救。
現(xiàn)在存在的問(wèn)題是:
1、用wps、在線合并軟件都失敗
2、無(wú)法修復(fù)損壞文件
所以我打算換一個(gè)思路:
1、把pdf轉(zhuǎn)化成圖片
2、把圖片合并成pdf
因?yàn)閜df已經(jīng)損壞,所以軟件無(wú)法把它轉(zhuǎn)成圖片,一些小機(jī)靈鬼肯定想說(shuō),截圖不就好了嘛,但是截圖有些弊端,會(huì)一定程度降低pdf的分辨率,還會(huì)手抖。作為一個(gè)碼農(nóng),當(dāng)然要用更優(yōu)雅的方式解決這個(gè)問(wèn)題啦。
js有個(gè)庫(kù)pdf.js,可以把pdf文件轉(zhuǎn)化成cavans,這樣右鍵就能存為圖片了,我用的是基于pdf.js的react-pdf,代碼如下:
import { useState } from 'react';
import { Document, Page } from 'react-pdf';
function MyApp() {
const [numPages, setNumPages] = useState<number>();
const [pageNumber, setPageNumber] = useState<number>(1);
function onDocumentLoadSuccess({ numPages }: { numPages: number }): void {
setNumPages(numPages);
}
return (
<Document file="somefile.pdf" onLoadSuccess={onDocumentLoadSuccess}>
<Page pageNumber={pageNumber} />
</Document>
);
}
得到了圖片之后呢,我用photoshop把圖片合并成了pdf,具體操作步驟如下

image.png

image.png
保存好就成功合并損壞的pdf啦,當(dāng)然啦,有些小伙伴有興趣的話還可以自己做個(gè)小插件,一鍵運(yùn)行生成啥的,感覺(jué)也是可行的。