2010-11-03 92 views
2

我正在使用platypus生成一些PDF文件的reportlab PDF包。在Linux服務器和Windows上,我有相同的Python應用程序,相同版本的reportlab軟件包(儘管略有不同的Python版本 - 2.6.5和2.6.6)。我使用我自己的字體,我不依賴於系統字體。最近,我注意到在這兩個平臺上生成的PDF有些不同 - 有些段落在一個版本中與其他版本相比垂直向上幾個點。Reportlab PDF版本生成問題

我試圖發現是這些plaforms之間的差異,但我並沒有發現差異。

最後,當我比較PDF文件,一個文件是PDF 1.3和第二是PDF 1.4版本,所以我想這個問題一定是這個。我不知道如何在reportlab中設置PDF版本的任何選項,請任何人都可以指出如何設置生成的PDF文件的正確版本,或者可以設置reportlab輸出的其他屬性?使用

ReportLab的2.4版本:

UPDATE

reportlab.__version__: $Id: __init__.py 3649 2010-01-20 14:45:53Z damian $

+0

您運行的是哪個版本的reportlab? – 2010-11-03 23:23:36

回答

1

您是否試圖與每個系統上確切的代碼生成它們?我在reportlab源代碼中進行了快速搜索,發現一些評論指出,如果您使用setFillAlphasetStrokeAlpha方法,那麼它將導致生成PDF 1.4而不是1.3。

編輯:

進一步看,我相當肯定的是,這些方法是唯一的原因ReportLab的的將永遠生成PDF 1.4文件。它似乎總是默認爲1.3,否則。據我所見,沒有可以讓你切換版本的界面。但是,您可以很容易地修改源代碼。只要搜索pdfdoc.py和改變這一行(它是圍繞2.5的ReportLab管線85)從

PDF_VERSION_DEFAULT = (1, 3) 

PDF_VERSION_DEFAULT = (1, 4) 

這將迫使它總是生成PDF文檔1.4。

希望這會有所幫助。

+0

我的代碼絕對是一樣的,我已經檢查過好幾次了。我沒有使用setFillAlpha或setStrokeAlpha。感謝您提供pdfdoc.py的提示,我會查看它並讓您知道。 – Jiri 2010-11-04 15:19:55

+0

最後,我沒有使用您的建議來更改PDF版本,但我已經檢查了PDF中所有透明度的用法(png文件,現在我使用其他PNG文件)。我不完全確定這一點,但它現在適用於我。謝謝。 – Jiri 2011-03-11 12:05:41