Coder Social home page Coder Social logo

Comments (5)

neolord0 avatar neolord0 commented on August 23, 2024

테스트 하신 코드를 올려 주시면... 수정해 드리겠습니다.

from hwplib.

boojongmin avatar boojongmin commented on August 23, 2024

피드백 감사합니다. ^^

1번 질문은 아래의 코드로 테스트하였습니다.

String filename = "classpath:hwp_in/test.hwp";
        File file = resourceLoader.getResource(filename).getFile();
        HWPFile hwpFile = HWPReader.fromFile(file.getAbsolutePath());
        HWPWriter.toFile(hwpFile, "hwp_out/test.hwp");

hwp_in.zip
위 두개의 파일을 이름을 바꿔가며 테스트했는데 둘다 원본과 다른 정렬을 가지게 되었습니다.

2. 표대각선 부분은 이렇게 작성했습니다.

    private int createBorderFillIDForCell(CellBorderFillModel m) {
        BorderFill bf =  hwpFile.getDocInfo().addNewBorderFill();
        bf.getProperty().set3DEffect(false);
        bf.getProperty().setShadowEffect(false);
        bf.getProperty().setSlashDiagonalShape(SlashDiagonalShape.None);
        bf.getProperty().setBackSlashDiagonalShape(BackSlashDiagonalShape.None);
        bf.getLeftBorder().setType(BorderType.valueOf((byte)1));
        bf.getLeftBorder().setThickness(BorderThickness.valueOf((byte)0));
        bf.getLeftBorder().getColor().setValue(0x0);
        bf.getRightBorder().setType(BorderType.valueOf((byte)1));
        bf.getRightBorder().setThickness(BorderThickness.valueOf((byte)0));
        bf.getRightBorder().getColor().setValue(0x0);
        bf.getTopBorder().setType(BorderType.valueOf((byte)1));
        bf.getTopBorder().setThickness(BorderThickness.valueOf((byte)0));
        bf.getTopBorder().getColor().setValue(0x0);
        bf.getBottomBorder().setType(BorderType.valueOf((byte)1));
        bf.getBottomBorder().setThickness(BorderThickness.valueOf((byte)0));
        bf.getBottomBorder().getColor().setValue(0x0);

        bf.setDiagonalSort(BorderType.Solid);
        bf.setDiagonalThickness(BorderThickness.MM0_5);
        bf.getDiagonalColor().setValue(0x0);

        bf.getFillInfo().getType().setPatternFill(true);
        bf.getFillInfo().createPatternFill();
        PatternFill pf = bf.getFillInfo().getPatternFill();
        pf.setPatternType(PatternType.None);
        pf.getBackColor().setValue(-1);
        pf.getPatternColor().setValue(-1);

        return hwpFile.getDocInfo().getBorderFillList().size();
    }

제가 위의 코드로 동작시켜서 나온 테이블의 셀/테두리/배경 메뉴에서
대각선 탭을 살펴보면

image

위의 이미지처럼 대각선 값은 활성화되어있는데 빨간색으로 표시해둔 부분에 선택이 안되어있어서 대각선이 안생겨있는 것을 확인했습니다.
선택해보면 셀안에 대각선이 나타나는 것을 확인할 수 있었습니다.

감사합니다. ^^

from hwplib.

neolord0 avatar neolord0 commented on August 23, 2024

일단 대각선에 대한 질문에 대한 답입니다.
한글은 대각선의 모양(종류, 굵기, 색)이 있고, 대각선의 종류라는 게 있습니다.
밑에 있는 하향 대각선 종류와 상향 대각선의 종류를 설정해야 합니다.
이 속성은 다음 함수로 설정할 수 있습나다.
bf.getProperty().setSlashDiagonalShape();
bf.getProperty().setBackSlashDiagonalShape();
이 함수에 적절한 값을 세팅하면 위의 그림에서 표시한 속성이 설정됩니다.

from hwplib.

neolord0 avatar neolord0 commented on August 23, 2024

그리고, 글자 정렬이 바뀌는 문제는...
보니까.. 보내주신 한글 파일을 보니까.. 제가 생각했던 것과 다르게 저장되있던데... 최종 저장한 프로그램이 한글이 맞나요? 한글 버젼이 어떻게 되시는지요 ??
테스트 해보니까.. 문단 모양 객체가 파일 내부에 있는 개수보다 하나 덜 만들어져서
문단에서 링크해서 사용하는 문단 모양 객체의 순번이 하나씩 밀린 것 같습니다.

추측하건데, 한글 프로그램은 이런 경우 보정을 하는 거 같습니다.
그래서 문제없이 나오는 데, 제가 만든 프로그램은 이런 예외상황을 예측하지 못했던 거 같습니다.

보정 해주는 알고리즘을 넣어서 새로 올렸습니다.
받아서 다시 테스트 해보세요.

from hwplib.

boojongmin avatar boojongmin commented on August 23, 2024
  1. 제가 그쪽 속성을을 미처 확인하지 못했네요;; 감사합니다.
  2. hwp 파일을 연 프로그램은 한글 2018이였습니다.
    수정해주신 소스를 적용해보니
    문단이 정상적으로 나오는 것을 확인했습니다.

감사합니다. ^^

문서포멧도 읽어보고 컨트리뷰팅도 해보려고했는데
수이 눈에 안들어오고 간단치 않아서 난감해하고 있었는데...
정말 감사합니다. ^^

from hwplib.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.