//Copyright (C) 2003-2026, Foxit Software Inc..
//All Rights Reserved.
//
//http://www.foxitsoftware.com
//
//The following code is copyrighted and contains proprietary information and trade secrets of Foxit Software Inc..
//You cannot distribute any part of Foxit PDF SDK to any third party or general public,
//unless there is a separate license agreement with Foxit Software Inc. which explicitly grants you such rights.
//
//This file contains an example to demonstrate how to use Foxit PDF SDK to convert from DWG files to PDF files.

import com.foxit.sdk.PDFException;
import com.foxit.sdk.common.Library;
import com.foxit.sdk.pdf.PDFDoc;
import com.foxit.sdk.addon.conversion.DWG2PDFSettingData;

import java.io.*;

import static com.foxit.sdk.common.Constants.e_ErrSuccess;
import static com.foxit.sdk.addon.conversion.DWG2PDFSettingData.e_FlagZoomToExtentsMode;
import static com.foxit.sdk.addon.conversion.DWG2PDFSettingData.e_DWG2PDFExportHatchesTypeBitmap;
import static com.foxit.sdk.addon.conversion.DWG2PDFSettingData.e_DWG2PDFSearchableTextTypeNoSearch;

public class dwg2pdf {
    private static String key = "8f3g1sFttW8NAgfSNv+BvaJWy4Pp8flcm7ncNDkdvCCO4JwUFbGLyZdujReMaiplbYJwwxam3lr7uHtQaEf0xTSu8j2ZBdrZ8FS4OQkEUjOI9UEGb3Ic0GqmlP9T9OnSItOYqoZZA/OnYg5EaVP+c/ha32nUquOk+5riEdhYgINAZDdgJkPc+YSWsrfixOIROf6t34j3eRcyFnOY0MS7tSXi1AEPE0VZdyu+5bfmBSGvLI+WR5lQ+oOQR5hRGwqf990WEdBelNO7dxhZELVhEZ+/L60PpDf5y9A8qmrY6PiEU8nhqIyLpks0BxeIsYyZ3Cr82jjfbItPGyEARsIVzluBSgVMD4oGjojz8T6wGDEXUbmZH/pra94XAs8wZ28mzbmIEppWnhBqX0c6Ov8iXCfFfUZr4KNuPxMEgk4VOYTMOd70GEjGnylivw18hbn7ZpkWh2Zql+uU2HejvOgn+WHvT0HF9NhK0Xb5vH8aFkgBP92PJx8obIbxBVeeExczxvsqWufuPdXS2sPNIgMYZ2TtvqVVsiUToeGB2FQo09fzZOSH5Vi18u/siyvC3FmjeMf4+OYWPuDPNCcrb21NgcHam7XI8AAoGLTGtLLWR+fxynbBBcg2d2ZPcZ5CMFIfOBHRWCkcA0sDT3cl9nsBppHNJze/jVxHy+lREeQEA/etSIgohTGAWW3ZlpibRXqMxlmVWEPifCubbWTzQ6U54mRMpW2UghH3gvCNFNgdday3Av7EtlIJOdUuiMq3zmmd5J4Jt4C82CKnVewA0DtZ4EEtwRG9IYuLrfpuZlnjBAtoeXRV1lqUZ6BcCe0E3m9jO28sGkALuIeJQ74XG7X8lMC7lMWWQYiYD7D6G9QT6X3qV4vXJwNKRKpYc/rI+amEawTSnDYAMEaYPwtZ0rb/7BL+atsZZaI+ncebdfVfjDJZbCZAc+JnkuNlUn2xrNRuObw8h/G0lm2pNOEJ10S8R4+yplo5B1QmC2dCDhaTaW67QJPqnJPKbVmjw7i6KGBi+CDP3JnAKlOX/YUu8uk56JfeQUuGcQg/KaBMGctnchH2n1i3+oGbibhurQj22+OO66Q6mijKoCRP/QJm5WTGcO4c0iVX0B8dIlai/uv/pGU8Wps9MxysH5ViVIj56LWKuNfy1FNO9+wx4iHYnUxfW0Iccq3YJYAlOBkMv8VZIJl9aTEEFJ626LJEw/UbEBdR9CdlwnylPf4RuNW/lcGYMgq3xNVpp/bzYKwZivvQOFgMdX1tv8D33SHvAm3zrRCU+v94BJXnBi9k25fnKsc705IMwv+I6bueXA+mDnagj1oTqsWXZ0WnPAYI3WUO7sBf7XUH230wfYXnTSVhujJxiEP/2oWqi2813gtQkKwz9N2p6yT8Vsh3+BaAwwDvtOZMJKUFcabTBSL6NoouzmzwItJ4mIboT6KXaef66rs8jCU=";
    private static String sn = "Rew1vB0TqoMIxX444UcpScARWdhgJpsJfzmyMLR32a0+EgrCjp2NaQ==";

    private static String output_directory = "../output_files/dwg2pdf/";	
	private static String dwg_file_path = "../input_files/ParcelMap.dwg";
    // "engine_path" is the path of the engine file "dwg2pdf" which is used to convert dwg to pdf. Please refer to Developer Guide for more details.
    private static String engine_path = "";
    private static String output_pdf_path = output_directory + "dwg2pdf_result.pdf";

    static {
      String os = System.getProperty("os.name").toLowerCase();
      String lib = "fsdk_java_";
      if (os.startsWith("win")) {
          lib += "win";
      } else if (os.startsWith("mac")) {
          lib += "mac";
      } else {
          lib += "linux";
      }
      if (System.getProperty("sun.arch.data.model").equals("64")) {
          if(System.getProperty("os.arch").equals("aarch64")){
              lib += "arm";
          }
          else{
              lib += "64";
          }
      } else {
          lib += "32";
      }
      System.loadLibrary(lib);
    }

    private static void createResultFolder(String output_path) {
        File myPath = new File(output_path);
        if (!myPath.exists()) {
            myPath.mkdir();
        }
    }
	
	public static void main(String[] args) throws PDFException {
    	createResultFolder(output_directory);
        // Initialize library
        int error_code = Library.initialize(sn, key);
        if (error_code != e_ErrSuccess) {
            System.out.println("Library Initialize Error: " + error_code);
            return;
        }

        try {
            // Setting DWG2PDFSettingData values.
        	com.foxit.sdk.addon.conversion.DWG2PDFSettingData settings=new com.foxit.sdk.addon.conversion.DWG2PDFSettingData();
            settings.setExport_flags(e_FlagZoomToExtentsMode);
            settings.setExport_hatches_type(e_DWG2PDFExportHatchesTypeBitmap);
            settings.setOther_export_hatches_type(e_DWG2PDFExportHatchesTypeBitmap);
            settings.setGradient_export_hatches_type(e_DWG2PDFExportHatchesTypeBitmap);
            settings.setSearchable_text_type(e_DWG2PDFSearchableTextTypeNoSearch);
            settings.setIs_active_layout(true);
            settings.setPaper_width(650);
            settings.setPaper_height(850);
            settings.setOutput_title("DWG2PDF");
            settings.setOutput_author("Cad Artist");
            settings.setOutput_subject("Cad Subject");
            settings.setOutput_keywords("DWG2PDF");
            settings.setOutput_creator("Dwg Artist");
            settings.setOutput_producer("FoxitSDK");
            // Convert DWG file to PDF file.
    		com.foxit.sdk.addon.conversion.Convert.fromDWG(engine_path, dwg_file_path, output_pdf_path, settings);
            System.out.println("Convert DWG to PDF successfully!");
        } catch (Exception e) {
            e.printStackTrace();
        }
        Library.release();
    }
}
