2012-02-16 68 views
2

Convert SVG to PDF 中的方法類似,svg2pdf轉換在Windows下成功運行,文本項目可在搜索結果pdf中搜索。它在linux(Ubuntu)下生成pdfs(帶-Djava.awt.headless = true以避免因缺失X11窗口服務器而導致的異常),但是文本項不可搜索,有時甚至被編碼爲圖像。蠟染:在Linux上的svg到pdf(無X服務器)

是否有可能在Linux下保存pdf文本以及我是否缺少一些運行時選項?

UPD:如果某種字體沒有找到,我可以以某種方式強制蠟染(SVGGraphics2D或SVGConverter)回退到默認字體?

+0

奇數。兩臺機器上都有可用的字體嗎?您是否嘗試過使用標準PDF字體(Times New Roman,...)或者您是否使用自定義TrueType字體? – 2012-02-16 14:21:50

+0

@AaronDigulla我不控制字體,因爲它們來自隨機排序的pptx文件。週期爲:pptx-> svg_files-> pdf_files-> one_pdf_file。但字體可用性是我首先關心的問題。我可以以某種方式從win-> linux中複製字體嗎? – 2012-02-16 15:10:34

+0

(由@Rok Kralj建議)imagemagick的'identify -list format'cmd我可以看到TrueType字體集合從我的Linux機器中完全丟失。這似乎是蠟染的問題 – 2012-02-16 15:48:16

回答

0

install imagemagick。然後調用convert:

convert doc.svg doc.pdf 

它會轉換成PDF。

+0

Sory,typo .. :) – 2012-02-16 14:27:14

+0

感謝您的指點,試試看.. – 2012-02-16 15:11:12

+0

hm,轉換產生不符合圖形原始定義'Dialog'''@ draw.c/DrawImage/3140。 – 2012-02-17 08:55:27

1

如果您想將字體從Windows複製到Linux,您只需將.ttf文件複製到正確的位置(注意:某些字體受版權保護,您需要獲得安裝它們的權限)。沒有必要將它們放入某種註冊表中。在jre/lib目錄中運行蠟染

  • 打開font.properties文件,uncommnent並設置爲前

    1. 您可以設置環境變量JAVA_FONTS

      爲了讓他們在Java中可用,你有兩個選擇相應的字體目錄:

      appendedfontpath=/usr/share/fonts/truetype 
      
  • +0

    這真的很有幫助,非常感謝。我現在正在複製字體,並且也會包含它們,因爲在linux下的一些轉換在字母之間有額外的空格 – 2012-02-21 08:52:57

    0

    嘗試添加定義(用URL)爲您要使用這些字體:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="745" height="300" xml:space="preserve" xmlns:xml="http://www.w3.org/XML/1998/namespace"> 
        <desc>TEST</desc> 
        <defs> 
         <style type="text/css"> 
          @font-face { 
           font-family: "font"; 
           src: url('COMPLETE URL TO TTF FILE eg. http://example.com/font.ttf') format('truetype'); 
          } 
         </style> 
        </defs> 
        <g transform="translate(174.5 53)"> 
         <text font-family="font" font-size="40" font-weight="normal" style="stroke: none; stroke-width: 1; stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: #333; opacity: 1;" transform="translate(-98.5 39)"> 
          <tspan x="0" y="-26" fill="#333">TEXT THAT YOU WANT TO DISPLAY</tspan> 
         </text> 
        </g> 
    </svg> 
    

    我有同樣的問題。有一件事我忘了svg是 type =「text/css」