我正在使用CairoSVG將SVG轉換爲PDF。我發現了一個錯誤,其中每行文本在PDF加載到CorelDraw時最後都有一個1維標記。在CorelDraw中可見的PDF創建中記錄的數字光標移動
我覺得這是真實的,即使與SVGs的最簡單和最起碼的。然後我決定深入挖掘CairoSVG的python源代碼,以解決問題的根源。我發現text.py是問題發生的地方。
https://github.com/Kozea/CairoSVG/blob/master/cairosvg/text.py
具體地說,for [x, y, dx, dy, r], letter in letters_positions:
for循環。在for循環之後,我可以通過這樣做來操作標記。
surface.context.move_to(100, 100)
surface.context.save()
surface.context.text_path(' ')
surface.context.restore()
根據我輸入的值,它將移動其中一個點(在這種情況下是標記的右下角)。這表明當CairoSVG完成一行文本時,表面會將光標移動到它正在繪製的最後一個字母的開頭。出於某種原因,上次執行此操作時實際上會記錄到PDF中,但對於大多數PDF查看器而言,它不會呈現。我試圖微調這個標記,因此這兩個點是相同的,但是因爲這個位置每次都取決於字母和位置以及更多,我不能微調這個數字來使標記消失,即使在使用可用時寬度和高度變量
注意surface.context是不是一個文件或功能,表面pprint
編爲<cairosvg.surface.PDFSurface object at 0x7f647802ec90>
,它是某種開羅接口直接通過某種PDF API與PDF文件交互,雖然我還沒有沒有找到任何文件。
我已經嘗試了許多便宜的工作方式,例如將PDF保存在另一個程序中,然後在Corel中打開,但是元素以不可接受的方式丟失或更改。
我當然也試過一次註釋掉這個文件1行,然後一次一塊代碼,但沒有運氣。
我也研究過其他文件,如path.py,parser.py等,但text.py似乎是最有前途的位置。
如何防止此標記出現在我的PDF文件中?