몇 페이지를 그려야 하는지 알기 위해 PDF를 생성하려면 뷰의 전체 높이를 가져와야 합니다.
데이터베이스의 데이터가 포함된 ScrollView가 있는 화면 콘텐츠를 사용하여 PDF를 생성해야 합니다.
이를 위해 테스트 프로젝트를 만들었습니다. 아래 코드를 참조하세요.
더 많은 이미지를 추가하기 위해 XML을 변경하더라도 이 코드는 항상 같은 번호를 제공합니다.
으아악이것은 제가 생성한 PDF 코드입니다:
으아악이것은 내 XML 파일입니다:
으아악@편집자: 내가 시도한 링크는 다음과 같습니다. Android: ScrollView의 총 높이
레이아웃이 그려지는 시점을 어떻게 알 수 있나요?
@Edit2: PDF 생성을 위한 튜토리얼은 다음과 같습니다(1페이지만 생성하므로 더 많은 페이지를 생성하는 코드는 제가 찾은 것입니다). https://www.youtube.com/watch?v=-JC1PI-dSeE
코드는 어떤 번호를 줄지 알려주고 그 번호를 고치기 때문에 항상 같은 번호를 줍니다. 주어진 크기.
Measurespec을 docs
에 따라 정확하게 설정한 경우그래서 화면 크기를 기준으로 계산된 잘못된 크기로 보기 크기를 강제하고 있습니다.
PDF 보기를 그릴 때 PDF 페이지를 화면에 맞는 재미있는 크기로 설정하거나 A4와 같은 표준 용지 크기로 설정할 수 있습니다
비표준 너비를 선택하면 비표준 높이를 사용할 수도 있으며 페이지가 하나만 있을 수도 있습니다. 그런 다음 사용자가 인쇄하려면 다양한 너비와 높이의 페이지로 분할해야 합니다. 사용자 관점에서 보면 단지 화면에서 PDF를 보는 것이라면 여러 페이지를 사용해도 아무런 이점이 없습니다
PDF의 표준 페이지 크기를 고수한 다음 장치의 물리적 화면 크기에 관계없이 PDF를 별도의 저해상도 화면으로 처리하는 것이 더 낫다고 생각합니다(페이지를 위, 아래, 왼쪽, 그리고 맞아)
단일 뷰를 측정하는 경우 전체 뷰와 모든 하위 뷰를 측정하는 것이므로 슬라이스(두 번째 및 세 번째 페이지에서 보려는 내용)를 측정할 수는 없습니다.
보기에서 다중 페이지 PDF를 만드는 두 가지 주요 방법이 있습니다.
모든 것을 그린 다음 여러 페이지에 걸쳐 자르고 깍둑썰기합니다. 이 방법을 사용하면 한 페이지에 있는 일부 텍스트 줄의 위쪽 절반과 다른 페이지에 있는 일부 줄의 위쪽 절반과 같이 페이지 간에 항목을 분할할 수 있습니다. 읽을 수 없게 만듭니다. 이는 좋은 접근 방식이 아닙니다.
상위 뷰의 하위 뷰를 반복하고, 각 하위 뷰를 측정하고, 단일 페이지의 레이아웃에 추가합니다. 이렇게 하면 각 하위 보기의 크기를 얻은 다음 추가한 모든 보기의 누적 크기를 계산하여 페이지 크기에 비해 너무 큰지 확인할 수 있습니다. 너무 크면 PDF 페이지를 닫고 새 페이지에 레이아웃을 시작합니다. 이는 항목이 여러 페이지에 걸쳐 분할되지 않음을 의미합니다(훨씬 더 좋습니다).
https://www.php.cn/link/ea89621bee7c88b2c5be6681c8ef4906은 개별 하위 뷰를 측정하여 스크롤 가능한 화면에서 다중 페이지 PDF를 생성하는 방법에 대한 완전한 예입니다(이 경우 스크롤 가능한 화면은 재활용 보기입니다. 하지만 비슷한 방식으로 스크롤 뷰의 하위 항목을 반복할 수 있습니다.
A4 페이지의 해상도가 매우 낮기 때문에 실제 화면의 일반 글꼴 크기(또는 다른 프로젝트 크기)가 너무 클 수 있으므로 다른 화면 크기에 대해 일반적으로 하는 것처럼 이러한 레이아웃의 크기를 조정해야 합니다) . 낮은 해상도를 위해 PDF 페이지의 크기를 조정하고 PDF 페이지 크기의 배수로 그린 다음 PDF 캔버스에서 배율을 설정하여 다시 올바른 크기로 조정하는 방법이 있습니다(예: 두 배의 레이아웃으로 그리기). 그런 다음 PDF 페이지에 그릴 때 모든 것을 절반 크기로 다시 조정합니다.
발생할 수 있는 문제는 Textview가 한 페이지에 들어갈 수 있는 것보다 더 많은 텍스트를 블록에 포함할 수 있다는 것이지만, 하나가 아닌 두 개의 Textview를 생성하려면 추가 처리가 필요합니다.
위 내용은 뷰의 전체 높이를 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!