2012-10-08 76 views
1

當我使用PyPdf合併幾個PDF頁面到一個單頁使用mergeTranslatedPage,我有一些未知的字符,這些未知的正方形是不包括在最後合併頁面的字符,經過一些研究,我認爲方法_merge_ressources不能很好地工作,因爲後面的頁面可能會覆蓋舊頁面的資源,我在每次合併後都嘗試了page1.compressContentStreams(),但沒有結果。PyPdf合併錯誤

in this link您將看到已合併的PDF和PDF結果的示例。

任何幫助,請

+0

這是否意味着[您的其他問題](http://stackoverflow.com/questions/12780668/cannot-install-pypdf-2-module)得到解決?你能指出那裏嗎? – Evert

+0

我有安裝新版本的Pypdf的問題,但這個問題是在舊版本,我試圖安裝最新版本來解決它,但我現在不能,所以我要重新安裝舊版本,希望修復這個錯誤 – geogeek

+0

你可以把兩個不能正常工作的pdf文件放在網上嗎? –

回答

1

下面的解決方案使用pdfjam命令多個PDF頁面合併成單一的PDF頁面。這是一個非常強大的命令,有很多不同的選項和良好的文檔。我在您提供4_P7.pdf和4_P13.pdf的兩個文件上測試瞭解決方案。您可以查看merged.pdf以驗證所有字符的格式是否正確。下面的代碼默認使用2x2網格,但您可以在調用合併時通過設置網格參數來更改該網格。

from subprocess import check_output 

def merge(inputs, output, grid='2x2'): 
    check_output(['pdfjam'] + inputs + ['--nup', grid, '--outfile', output]) 

merge(['4_P7.pdf', '4_P13.pdf'], 'merged.pdf') 

下面的評論中有一個問題,是否可以按照問題示例文件中的情況完成自定義位置。問題中提供的相同佈局在下面實現。它首先構建4x2佈局的頂部佈局,然後構建底部2x6佈局,最後將這兩個佈局合併到final.pdf中。以下示例中使用的pdf可以是found here

from subprocess import check_output 

def merge(inputs, output, grid='2x2'): 
    return check_output(['pdfjam'] + inputs + ['--nup', grid, '--outfile', output]) 

files = ['1.pdf', '2.pdf', '3.pdf', '4.pdf', '1.pdf', '2.pdf', '3.pdf', '4.pdf'] 
merge(files, 'top.pdf', '4x2') 

files = ['1.pdf', '2.pdf', '3.pdf', '4.pdf', '5.pdf', '6.pdf', '1.pdf', '2.pdf', 
    '3.pdf', '4.pdf', '5.pdf', '6.pdf'] 
merge(files, 'bottom.pdf', '2x6') 

merge(['top.pdf', 'bottom.pdf'], 'final.pdf', '1x2') 
+0

優秀:D,我想知道如果我可以爲PDF合併提供的PDF文件自定義位置? – geogeek

+0

非常感謝Marwan先生。 – geogeek

+0

不用擔心。我很高興能夠提供幫助 –