Apache POIとitextを使用してword(.docx)をPDFに変換する

ソブハン:

私のJava Webアプリケーションには、ユーザーがAPACHE-POIを使用してデータを作成するためにカスタマイズする契約としてペルシャテンプレートワード(docx)ドキュメントがあり、その後、ファイルが歪むのを防ぐためにPDFに変換する必要がありますオペレーターによる。私はitextを使用して変換しようとしましたが、成功することができず、役立つものを見つけることができませんでした。誰かがitextを使用して変換を行う方法を提案したり、変換を行わずにファイルが歪曲されないようにする他の方法があるかどうか誰かに教えたりできます?

編集メモ:以下のコードで変換を実行しましたが、pdfファイルにたくさんの疑問符が含まれていますが、誰でも手助けできますか?itextはペルシャ語またはRTL言語をサポートしていますか?この問題を解決する方法は?iTextのバージョン5.0.6を使用しています!!

convertWordToPdf("D:/PrivateBanking/docxCo.docx","D:/PrivateBanking/docxCo.pdf");

public static void convertWordToPdf(String src, String desc){
        try{
            //create file inputstream object to read data from file
            FileInputStream fs=new FileInputStream(src);
            //create document object to wrap the file inputstream object
            XWPFDocument doc=new XWPFDocument(fs);
            //72 units=1 inch
            Document pdfdoc=new Document(PageSize.A4,72,72,72,72);
            //create a pdf writer object to write text to mypdf.pdf file
            PdfWriter pwriter=PdfWriter.getInstance(pdfdoc, new FileOutputStream(desc));
            //specify the vertical space between the lines of text
            pwriter.setInitialLeading(20);
            //get all paragraphs from word docx
            List<XWPFParagraph> plist=doc.getParagraphs();

            //open pdf document for writing
            pdfdoc.open();
            for (int i = 0; i < plist.size(); i++) {
                //read through the list of paragraphs
                XWPFParagraph pa = plist.get(i);
                //get all run objects from each paragraph
                List<XWPFRun> runs = pa.getRuns();
                //read through the run objects
                for (int j = 0; j < runs.size(); j++) {
                    XWPFRun run=runs.get(j);
                    //get pictures from the run and add them to the pdf document
                    List<XWPFPicture> piclist=run.getEmbeddedPictures();
                    //traverse through the list and write each image to a file
                    Iterator<XWPFPicture> iterator=piclist.iterator();
                    while(iterator.hasNext()){
                        XWPFPicture pic=iterator.next();
                        XWPFPictureData picdata=pic.getPictureData();
                        byte[] bytepic=picdata.getData();
                        Image imag=Image.getInstance(bytepic);
                        pdfdoc.add(imag);

                    }
                    //get color code
                    int color=getCode(run.getColor());
                    //construct font object
                    Font f=null;
                    if(run.isBold() && run.isItalic())
                        f= FontFactory.getFont(FontFactory.TIMES_ROMAN,run.getFontSize(),Font.BOLDITALIC, new BaseColor(color));
                    else if(run.isBold())
                        f=FontFactory.getFont(FontFactory.TIMES_ROMAN,run.getFontSize(),Font.BOLD, new BaseColor(color));
                    else if(run.isItalic())
                        f=FontFactory.getFont(FontFactory.TIMES_ROMAN,run.getFontSize(),Font.ITALIC, new BaseColor(color));
                    else if(run.isStrike())
                        f=FontFactory.getFont(FontFactory.TIMES_ROMAN,run.getFontSize(),Font.STRIKETHRU, new BaseColor(color));
                    else
                        f=FontFactory.getFont(FontFactory.TIMES_ROMAN,run.getFontSize(),Font.NORMAL, new BaseColor(color));
                    //construct unicode string
                    String text=run.getText(-1);
                    byte[] bs;
                    if (text!=null){
                        bs=text.getBytes();
                        String str=new String(bs,"UTF-8");
                        //add string to the pdf document
                        Chunk chObj1=new Chunk(str,f);
                        pdfdoc.add(chObj1);
                    }

                }
                //output new line
                pdfdoc.add(new Chunk(Chunk.NEWLINE));
            }
            //close pdf document
            pdfdoc.close();
        }catch(Exception e){e.printStackTrace();}
    }

 public static int getCode(String code){
        int colorCode;
        if(code!=null)
            colorCode=Long.decode("0x"+code).intValue();
        else
            colorCode=Long.decode("0x000000").intValue();
        return colorCode;
    }
メヘランアルバニア語:

実行する前にMS Officeをインストールする必要があります。

import com.documents4j.api.DocumentType; 
import com.documents4j.api.IConverter; 
import com.documents4j.job.LocalConverter;
import org.apache.commons.io.output.ByteArrayOutputStream;

import java.io.*; 
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future; 
import java.util.concurrent.TimeUnit;

public class Converter{
    public static void main(String[] args) throws IOException, ExecutionException, InterruptedException {
        ByteArrayOutputStream bo = new ByteArrayOutputStream();

        InputStream in = new BufferedInputStream(new FileInputStream("d:\\input.docx"));
        IConverter converter = LocalConverter.builder()
                .baseFolder(new File("D:\\input"))
                .workerPool(20, 25, 2, TimeUnit.SECONDS)
                .processTimeout(5, TimeUnit.SECONDS)
                .build();

        Future<Boolean> conversion = converter
                .convert(in).as(DocumentType.MS_WORD)
                .to(bo).as(DocumentType.PDF)
                .prioritizeWith(1000) // optional
                .schedule();
        conversion.get();
        try (OutputStream outputStream = new FileOutputStream("D:\\output.pdf")) {
            bo.writeTo(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        in.close();
        bo.close();
    }
}

これらは必要なmaven依存関係です:

<dependency>
    <groupId>com.documents4j</groupId>
    <artifactId>documents4j-api</artifactId>
    <version>0.2.1</version>
</dependency>
<dependency>
    <groupId>com.documents4j</groupId>
    <artifactId>documents4j-util-conversion</artifactId>
    <version>0.2.1</version>
</dependency>
<dependency>
    <groupId>com.documents4j</groupId>
    <artifactId>documents4j-transformer</artifactId>
    <version>0.2.1</version>
</dependency>
<dependency>
    <groupId>com.documents4j</groupId>
    <artifactId>documents4j-util-all</artifactId>
    <version>0.2.1</version>
</dependency>
<dependency>
    <groupId>com.documents4j</groupId>
    <artifactId>documents4j-local</artifactId>
    <version>0.2.1</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.8.0-beta2</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.8.0-beta2</version>
</dependency>
<dependency>
    <groupId>com.documents4j</groupId>
    <artifactId>documents4j-util-standalone</artifactId>
    <version>1.0.3</version>
</dependency>
<dependency>
    <groupId>com.documents4j</groupId>
    <artifactId>documents4j-transformer-msoffice-word</artifactId>
    <version>1.0.3</version>
</dependency>
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>23.0</version>
</dependency>

楽しい!

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Java:Apache POIを使用してMS WordファイルをPDFに変換する方法は?

分類Dev

Apache POIを使用してMS Wordを解析し、XMLに変換することは可能ですか?

分類Dev

Apache POIを使用してHSSFWorkbookをXSSFWorkbookに変換する方法

分類Dev

Apache POIを使用してdocxでtext(tag)をHTMLに置き換える方法は?

分類Dev

docxをPDFに変換する

分類Dev

docxをPDFに変換する

分類Dev

docxをpdfに変換する

分類Dev

Apache POIを使用してWordの.docxファイルでRSID属性を正しく生成する方法

分類Dev

Apache POIでWordをHTMLに変換する

分類Dev

PythonとLibreOfficeを使用してpdfをdocxに、docをdocxに変換するのに問題がある

分類Dev

Apache POIを使用してdocxのテキストボックスのテキストを置換する

分類Dev

画像のレイアウトを変更するか、Apache POIを使用してDOCXでラップする

分類Dev

NodeJSでPDFをDOCXに、またはURLをDOCXに変換する方法は?

分類Dev

Apache-POIを使用してdocxの各段落の行を取得する

分類Dev

Apache poiを使用して.docxを生成するときに、フッターに間隔を追加するにはどうすればよいですか?

分類Dev

.docまたは.docxを.pdfにバッチ変換する方法

分類Dev

Microsoft Office で pdf を docx にバッチ変換する

分類Dev

.docまたは.docxを.pdfにバッチ変換する方法

分類Dev

Apache SSLitermediateCA.cerをopensslを使用してcrtに変換する

分類Dev

Apache Nifiを使用してCSVをJSONに変換する方法は?

分類Dev

tbszip を使用して docx ファイルを pdf に変換する方法

分類Dev

Apache Poi-Java-:Apache POIを使用してWord文書に個別の段落として空白行を含むテキストを追加するにはどうすればよいですか?

分類Dev

pandocを使用して.docxを.pdfに変換します

分類Dev

Apache POIを使用してWordのテーブルセルに境界線付きの画像を追加する方法

分類Dev

iTextを使用してHTMLをPDFに変換する方法

分類Dev

iTextを使用してTIFをPDFに変換するClassCastException

分類Dev

Java Apache POIを使用してExcelに行を挿入する

分類Dev

Apache POIを使用してaltChunk要素をXWPFDocumentに追加する方法

分類Dev

JavaとApache POIを使用してExcelでデータを読み書きする

Related 関連記事

  1. 1

    Java:Apache POIを使用してMS WordファイルをPDFに変換する方法は?

  2. 2

    Apache POIを使用してMS Wordを解析し、XMLに変換することは可能ですか?

  3. 3

    Apache POIを使用してHSSFWorkbookをXSSFWorkbookに変換する方法

  4. 4

    Apache POIを使用してdocxでtext(tag)をHTMLに置き換える方法は?

  5. 5

    docxをPDFに変換する

  6. 6

    docxをPDFに変換する

  7. 7

    docxをpdfに変換する

  8. 8

    Apache POIを使用してWordの.docxファイルでRSID属性を正しく生成する方法

  9. 9

    Apache POIでWordをHTMLに変換する

  10. 10

    PythonとLibreOfficeを使用してpdfをdocxに、docをdocxに変換するのに問題がある

  11. 11

    Apache POIを使用してdocxのテキストボックスのテキストを置換する

  12. 12

    画像のレイアウトを変更するか、Apache POIを使用してDOCXでラップする

  13. 13

    NodeJSでPDFをDOCXに、またはURLをDOCXに変換する方法は?

  14. 14

    Apache-POIを使用してdocxの各段落の行を取得する

  15. 15

    Apache poiを使用して.docxを生成するときに、フッターに間隔を追加するにはどうすればよいですか?

  16. 16

    .docまたは.docxを.pdfにバッチ変換する方法

  17. 17

    Microsoft Office で pdf を docx にバッチ変換する

  18. 18

    .docまたは.docxを.pdfにバッチ変換する方法

  19. 19

    Apache SSLitermediateCA.cerをopensslを使用してcrtに変換する

  20. 20

    Apache Nifiを使用してCSVをJSONに変換する方法は?

  21. 21

    tbszip を使用して docx ファイルを pdf に変換する方法

  22. 22

    Apache Poi-Java-:Apache POIを使用してWord文書に個別の段落として空白行を含むテキストを追加するにはどうすればよいですか?

  23. 23

    pandocを使用して.docxを.pdfに変換します

  24. 24

    Apache POIを使用してWordのテーブルセルに境界線付きの画像を追加する方法

  25. 25

    iTextを使用してHTMLをPDFに変換する方法

  26. 26

    iTextを使用してTIFをPDFに変換するClassCastException

  27. 27

    Java Apache POIを使用してExcelに行を挿入する

  28. 28

    Apache POIを使用してaltChunk要素をXWPFDocumentに追加する方法

  29. 29

    JavaとApache POIを使用してExcelでデータを読み書きする

ホットタグ

アーカイブ