Возникла проблема с itextpdf 5.5.9 Семейство шрифтов в Java-коде приложений Domino - PullRequest
0 голосов
/ 13 мая 2019

Мое приложение Это приложение Domino X Pages, которое использует itextpdf-5.5.9 для создания PDF.Моя версия Domino Server - 9.01 FP 10.

Приложение работало нормально до недавних обновлений Windows на сервере.Проблема, с которой я сталкиваюсь сейчас, заключается в том, что я получаю сообщение об ошибке в следующих строках кода:

    Font regular1 = new Font(FontFamily.HELVETICA, 11,Font.NORMAL);
    Font regular2 = new Font(FontFamily.HELVETICA, 11,Font.ITALIC);
    Font regular0 = new Font(FontFamily.HELVETICA, 10,Font.NORMAL);
    Font bold1 = new Font(FontFamily.HELVETICA, 12, Font.BOLD);
    Font bold2 = new Font(FontFamily.HELVETICA, 10, Font.BOLD);
    Font bold0 = new Font(FontFamily.HELVETICA, 15, Font.BOLD);

Я не сталкивался с этой проблемой до недавних обновлений, которые были развернуты MS на нашем сервере Windows Azure.,При наведении курсора на эти строки ошибок я получаю следующее сообщение об ошибке:

     FontFamily.HELVETICA can not be resolved. 

Эти ошибки не позволяют моему PDF-коду создать PDF-файл.Кто-нибудь еще видел эту проблему и

У меня есть несколько вещей, связанных с файлами импорта и тому подобным, однако меня удивляет то, что этот код полностью работал раньше, и теперь я мертв в воде.

Любая помощь очень ценится.

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Map;
import java.util.Vector;
import java.awt.font.*;

import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import lotus.domino.Database;
import lotus.domino.DateTime;
import lotus.domino.Document;
import lotus.domino.EmbeddedObject;
import lotus.domino.Item;
import lotus.domino.NotesException;
import lotus.domino.RichTextItem;
import lotus.domino.Session;
import sun.font.FontFamily;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfPageEventHelper;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.draw.VerticalPositionMark;



public class InvoicePDF {

    //public static final String DEST = "d://IBM//Domino//Data1//chu//BCAInvoiceFiles//";    
    //public static final String LOGOFILEPATH = "d://IBM//Domino//Data1//chu/BCAInvoiceFiles//logo//logo.jpg";  
    public static final String DEST = "e://IBM//Domino//Data1//chu//BCAInvoiceFiles//";  
    public static final String LOGOFILEPATH = "e://IBM//Domino//Data1//chu/BCAInvoiceFiles//logo//logo.png";    


    SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");  


    Font regular1 = new Font(FontFamily.HELVETICA, 11,Font.NORMAL);
    Font regular2 = new Font(FontFamily.HELVETICA, 11,Font.ITALIC);
    Font regular0 = new Font(FontFamily.HELVETICA, 10,Font.NORMAL);
    Font bold1 = new Font(FontFamily.HELVETICA, 12, Font.BOLD);
    Font bold2 = new Font(FontFamily.HELVETICA, 10, Font.BOLD);
    Font bold0 = new Font(FontFamily.HELVETICA, 15, Font.BOLD);
    Date currentDate = new Date();

    public class HeaderTable extends PdfPageEventHelper {
        protected PdfPTable table;
        protected float tableHeight;
        public HeaderTable(Document InvDoc) throws MalformedURLException, IOException, DocumentException, NotesException {

            table = new PdfPTable(2);
            table.setWidths(new float[] { 1, 4 });

            Item frmDt=null;
            Item toDt=null;

            frmDt=InvDoc.getFirstItem("InvFrmDate");
            toDt=InvDoc.getFirstItem("InvToDate");

            DateTime  frmDt1=null;
            DateTime  toDt1=null;


            if(frmDt!=null)
            {
                frmDt1 = frmDt.getDateTimeValue();
            }
            if(toDt!=null)
            {
                toDt1 = toDt.getDateTimeValue();
            }


            String strFrmDate= formatter.format(frmDt1.toJavaDate());
            String strToDate= formatter.format(toDt1.toJavaDate());



            Phrase headerPhrase = new Phrase(); 
            headerPhrase.add(new Chunk("\n"+"State of Georgia - Department of Juvenile Justice"+"\n", bold1));
            headerPhrase.add(new Chunk("Office of Human Resources - Criminal History Unit\n", regular1));
            headerPhrase.add(new Chunk("(For Internal Use Only)\n", regular2));
            headerPhrase.add(new Chunk("SERVICE INVOICE\n", bold0));
            headerPhrase.add(new Chunk("For: ", bold2));
            headerPhrase.add(new Chunk(strFrmDate+" - "+strToDate+"\n", regular0));



            table.setTotalWidth(523);
            String logoFile =LOGOFILEPATH ;
            Image logoImg = Image.getInstance(logoFile);
            logoImg.setWidthPercentage(100);
            PdfPCell cell1 = new PdfPCell(logoImg);
            cell1.setBorder(0);
            cell1.setBorder(Rectangle.LEFT | Rectangle.TOP | Rectangle.BOTTOM );
            cell1.setUseBorderPadding(true);
            cell1.setBorderWidthLeft(1);
            cell1.setBorderColorLeft(BaseColor.GRAY);
            cell1.setBorderWidthTop(1);
            cell1.setBorderColorTop(BaseColor.GRAY);

            cell1.setBorderWidthBottom(1);
            cell1.setBorderColorBottom(BaseColor.GRAY);
            /* */
            cell1.setHorizontalAlignment(Element.ALIGN_CENTER);

            table.addCell(cell1);

            PdfPCell cell2 = new PdfPCell(headerPhrase);
            cell2.setBorder(0);

            cell2.setBorder( Rectangle.TOP | Rectangle.BOTTOM | Rectangle.RIGHT);
            cell2.setUseBorderPadding(true);

            cell2.setBorderWidthTop(1);
            cell2.setBorderColorTop(BaseColor.GRAY);
            cell2.setBorderWidthRight(1);
            cell2.setBorderColorRight(BaseColor.GRAY);
            cell2.setBorderWidthBottom(1);
            cell2.setBorderColorBottom(BaseColor.GRAY);/**/
            cell2.setHorizontalAlignment(Element.ALIGN_CENTER);


            table.addCell(cell2);
            table.completeRow();
            tableHeight = table.getTotalHeight();
        }





        public float getTableHeight() {
            return tableHeight;
        }

        public void onEndPage(PdfWriter writer,com.itextpdf.text.Document document) {
            table.writeSelectedRows(0, -1,
                    document.left(),
                    document.top() + ((document.topMargin() + tableHeight) / 2),
                    writer.getDirectContent());
        }
    }


    @SuppressWarnings("unchecked")
    public void createPDF(Document docInvoice,String CurUser) throws IOException, DocumentException
    {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        try {

            ExternalContext extCon = facesContext.getExternalContext();
            Session session = (Session) resolveVariable("session");
            Database dbCurrent = (Database) resolveVariable("database");
            Map sessionScope = extCon.getSessionMap();

            File file = new File(DEST+docInvoice.getUniversalID()+".pdf");
            file.getParentFile().mkdirs();
            System.out.println(":::::::::::::::::::Inside HeaderTable::::::555555555555:::::::::::::");
            new InvoicePDF().createPdf(DEST+docInvoice.getUniversalID()+".pdf",docInvoice,dbCurrent);
        }
        catch (Exception e) {
            e.printStackTrace();
        }

    }



    public void createPdf(String filename,Document docInvoice,Database dbCurrent) throws IOException, DocumentException, NotesException {

        InvoicePDF.HeaderTable event1 = new InvoicePDF.HeaderTable(docInvoice);
        // step 1
        com.itextpdf.text.Document document = new com.itextpdf.text.Document(PageSize.A4, 36, 36, 20 + event1.getTableHeight(), 36);

        // step 2
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename));
        try
        {
            writer.setPageEvent(event1);
        }
        catch(Exception e)
        {
            System.out.println("Exception :::::"+e);
        }
        // step 3
        document.open();

        // step 4

        Vector lineDocID = new Vector();
        Item InvLineItemsDocIDs =  docInvoice.getFirstItem("InvLineItemsDocIDs");
        if(InvLineItemsDocIDs==null)
        {
            lineDocID =null;
        }
        else
        {   
            lineDocID = InvLineItemsDocIDs.getValues();//
            //String lineDocIDs =docInvoice.getItemValueString("InvLineItemsDocIDs");
            //lineDocID = lineDocIDs.split("~");
        }
        Double unitPice =  docInvoice.getItemValueDouble("InvUnitPrice");
        double roundOffUnitPice = Math.round(unitPice * 100.00) / 100.00;



        // step 5
        //create a paragraph

        //special font sizes
...