2016-11-17 64 views
0

我想編一個基本的Java項目,https://sourceforge.net/projects/pdfformfiller2其安裝說明很短:編譯基本的Java項目

確保iText庫,iText的-XTRA-5.x.0.jar和itextpdf- 5.x.0.jar,可由JAVA訪問,例如 這些文件放置在當前文件夾的「lib」子文件夾中。

從獲取最新的:在命令行中你給命令https://sourceforge.net/projects/itext/files/iText/

編譯PdfFormFiller.java

然後(查看使用幫助):

Java的罐子pdfformfiller.jar

我從來沒有編譯過JAR,而且我很難正確編譯PdfFormFiller。這裏就是我已經得到:

wget -O pdfformfiller.zip https://sourceforge.net/projects/pdfformfiller2/files/latest/download 
# author mentions 5.2.0, which is not available anymore, so we go for the latest 5.x: 
wget http://kent.dl.sourceforge.net/project/itext/5.5.10/itext5-5.5.10.zip 
unzip pdfformfiller.zip 
unzip itext5-5.5.10.zip -d pdfformfiller/lib 

cd pdfformfiller 
javac -cp "lib/*" PdfFormFiller.java 

mkdir META-INF 
echo -e 'Manifest-Version: 1.0\nClass-Path: pdfformfiller.jar\nMain-Class: PdfFormFiller' > META-INF/MANIFEST.MF 
jar -cvfm pdfformfiller.jar META-INF/MANIFEST.MF lib PdfFormFiller.class 

哪些成功,沒有錯誤,但仍然無法運行:

$ java -jar pdfformfiller.jar 
Error: Could not find or load main class PdfFormFiller 

我想我失去了一些東西小事?

編輯

完全自動化:

iText5=5.5.10 

wget -O pdfformfiller.zip https://sourceforge.net/projects/pdfformfiller2/files/latest/download 
wget http://kent.dl.sourceforge.net/project/itext/${iText5}/itext5-${iText5}.zip 
unzip pdfformfiller.zip 
unzip itext5-${iText5}.zip -d pdfformfiller/lib 

cd pdfformfiller 
mkdir classes 
javac -cp "lib/*" -d ./classes/ PdfFormFiller.java 

mkdir META-INF 
echo 'Manifest-Version: 1.0'                     > META-INF/MANIFEST.MF 
echo "Class-Path: ./lib/itextpdf-${iText5}.jar ./lib/itext-xtra-${iText5}.jar ./lib/itext-pdfa-${iText5}.jar" >> META-INF/MANIFEST.MF 
echo 'Main-Class: PdfFormFiller.PdfFormFiller'                >> META-INF/MANIFEST.MF 

jar -cvfm pdfformfiller.jar ./META-INF/MANIFEST.MF ./lib -C ./classes/ PdfFormFiller 

編輯2

這似乎是從CLI可靠填寫PDF表單的唯一方法:

# list fields in a file: 
$ java -jar pdfformfiller.jar input.pdf -l 
myfield 

# prepare field data: 
$ echo 'myfield αβγ' > fields 

# specify font, fill the fields, flatten the form: 
$ java -jar pdfformfiller.jar input.pdf -f fields -font Times_New_Roman.ttf -flatten output.pdf 

工程就像一個魅力!

回答

3

下面是我遵循的步驟來實現它的工作。

  1. 首先,爲了清楚起見,我們爲您編譯的類創建一個專用文件夾。這不是強制性的,而只是良好開發實踐的一個例子。我省略了創建文件夾,改變等等的步驟,因爲它很明顯。

    一)所需lib文件夾中的參考和

    B)軟件包名稱:

    所有的命令都從項目的根目錄

    javac -cp "lib/*" -d ./classes/ PdfFormFiller.java 
    
  2. 修復被錯過了兩個主要的東西跑

    echo -e 'Manifest-Version: 1.0\nClass-Path: ./lib/itextpdf-5.5.4.jar ./lib/itext-xtra-5.5.4.jar ./lib/itext-pdfa-5.5.4.jar\nMain-Class: PdfFormFiller.PdfFormFiller' > META-INF/MANIFEST.MF 
    
  3. 裝配瓶子(請注意,附加選項:-C在此處使用):

    jar -cvfm pdfformfiller.jar ./META-INF/MANIFEST.MF ./lib -C ./classes/ PdfFormFiller 
    
  4. 這是從執行所得到的jar文件的最終輸出:

    $ java -jar pdfformfiller.jar 
    
    USAGE: pdfformfiller document.pdf [ -l ] [ -v ] [ -f fields_filename ] [ -font font_file ] [ -flatten] [ output.pdf ] 
    
        document.pdf - name of source pdf file (required). 
        -l - only list available fields in document.pdf. 
        -v - verbose. Use to debug the fields_filename file. 
        -f fields_filename - name of file with the list of fields values to apply to document.pdf. 
             if ommited, stdin is used. 
        -font font_file - font to use. Needed UTF-8 support, e.g. cyrillic and non-latin alphabets. 
        -flatten - Flatten pdf forms (convert them to text disabling editing in PDF Reader). 
        output.pdf - name of output file. If omitted, the output if sent to stdout. 
    
    fields_filename file can be in UTF-8 as is of the following format: 
        On each line, one entry consists of 'field name' followed by value of that field without any quotes. 
        Any number of whitespaces allowed before 'field name', and one space separates 'field name' and its value. 
        In value, newline characters should be encoded as "\n", 
        'U+2029 utf-8 E280A9 : PARAGRAPH SEPARATOR PS' should be encoded as "\p", 
        and '\' characters should be escaped as "\\". 
        For checkboxes, values are 'Yes'/'Off'. 
    
        Based on the Belgian iText library v. 5.2.0, http://www.itextpdf.com/