Flatter에서 PDF 문서의 텍스트를 찾는 5가지 간단한 방법
PDF는 다른 형식처럼 내용을 쉽게 수정할 수 없기 때문에 비즈니스 데이터를 교환하는 데 사용되는 가장 유행하는 파일 형식 중 하나입니다.이것은 우리의 데이터를 권한이 부여되지 않은 수정으로부터 보호한다.그러나 PDF 라이브러리는 PDF 문서에서 특정 텍스트를 쉽게 찾을 수 있으므로 PDF의 데이터를 자동으로 읽고 검증할 수 있습니다.
이 블로그에서는 다음 절차에 대해 설명합니다.
Find and highlight text in a PDF document in Flutter .
Find the text on a specific PDF page in Flutter .
Find text in a specific range of PDF pages in Flutter .
Find text with search options in PDF .
Find multiple pieces of text at the same time in PDF .
Flatter에서 PDF 문서의 텍스트 찾기 및 강조 표시
전체 PDF 문서에서 텍스트의 각 인스턴스와 해당 경계 및 페이지 색인을 찾을 수 있습니다.이를 위해서는 Syncfusion Flatter PDF 라이브러리에서 제공하는 PDFtextractor API를 사용해야 합니다.
다음 절차는 다음과 같습니다.
단계 1: 바이브레이션 응용 프로그램 만들기
본 Get Started 문서에서 제공한 설명에 따라 떨림 속에서 기본 프로젝트를 만듭니다.
2단계: Syncfusion Flatter PDF 종속성 추가
pubspec에 패키지 의존항을 포함합니다.yaml 파일은 프로젝트에 있습니다.
dependencies:
syncfusion_flutter_pdf: ^18.3.50-beta
융합 떨림 PDF 3단계:소포 받기
다음 명령을 실행하여 필요한 패키지를 가져오십시오.
|
$ flutter pub get
|4단계:패키지 가져오기
PDF 패키지를 기본 응용 프로그램으로 가져옵니다.dart 파일은 아래의 코드 예시와 같습니다.
import 'package:syncfusion_flutter_pdf/pdf.dart';
5단계: PDF 문서의 텍스트 찾기 및 강조 표시
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
FlatButton(
child: Text(
'Find and highlight',
style: TextStyle(color: Colors.white),
),
onPressed: _extractText,
color: Colors.blue,
)
],
),
),
);
}
//Load the existing PDF document.
PdfDocument document =
PdfDocument(inputBytes: await _readDocumentData('pdf_succinctly.pdf'));
//Create the new instance of the PdfTextExtractor.
PdfTextExtractor extractor = PdfTextExtractor(document);
//Find text from the PDF document
List<MatchedItem> findResult = extractor.findText(['PDF']);
if (findResult.length == 0) {
document.dispose();
_showResult('The text is not found');
} else {
//Highlight the searched text from the document.
for (int i = 0; i < findResult.length; i++) {
MatchedItem item = findResult[i];
//Get page.
PdfPage page = document.pages[item.pageIndex];
//Set transparency to the page graphics.
page.graphics.save();
page.graphics.setTransparency(0.5);
//Draw rectangle to highlight the text.
page.graphics
.drawRectangle(bounds: item.bounds, brush: PdfBrushes.yellow);
page.graphics.restore();
}
//Save and launch the document.
final List<int> bytes = document.save();
//Dispose the document.
document.dispose();
//Get the storage folder location using path_provider package.
final Directory directory = await getApplicationDocumentsDirectory();
final String path = directory.path;
final File file = File('$path/output.pdf');
await file.writeAsBytes(bytes);
//Launch the file (used open_file package)
await OpenFile.open('$path/output.pdf');
Future<List<int>> _readDocumentData(String name) async {
final ByteData data = await rootBundle.load('assets/$name');
return data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
}
void _showResult(String text) {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('Find Text'),
content: Scrollbar(
child: SingleChildScrollView(
child: Text(text),
physics: BouncingScrollPhysics(
parent: AlwaysScrollableScrollPhysics()),
),
),
actions: [
FlatButton(
child: Text('Close'),
onPressed: () {
Navigator.of(context).pop();
},
)
],
);
});
}
프로젝트를 실행하면 필요한 텍스트의 모든 사례가 아래 화면 캡처와 같이 밝게 표시됩니다.assets
Flatter의 특정 PDF 페이지에서 텍스트 찾기
때때로 우리는 전체 PDF 문서에서 텍스트의 실례를 찾고 싶지 않다.특정 페이지에서 텍스트를 따로 찾아야 합니다.이 경우, 특정 페이지의 페이지 인덱스와 검색할 텍스트를findText에 전달하는 방법이 필요합니다.
다음 코드는 특정 페이지에서 텍스트를 찾는 방법을 보여 줍니다.
//Load the existing PDF document.
PdfDocument document =
PdfDocument(inputBytes: await _readDocumentData('pdf_succinctly.pdf'));
//Create the new instance of the PdfTextExtractor.
PdfTextExtractor extractor = PdfTextExtractor(document);
//Find text from the PDF document with a specific page.
List<MatchedItem> findResult =
extractor.findText(['PDF'], startPageIndex: 0);
if (findResult.length == 0) {
document.dispose();
_showResult('The text is not found');
} else {
_showResult(findResult.length.toString() + ' matches found.');
}
프로젝트를 실행할 때 특정 페이지의 텍스트 실례 수는 아래 화면 캡처에 표시됩니다.Flatter에서 특정 범위의 PDF 페이지에서 텍스트 찾기
또한findText 방법의 시작 페이지와 끝 페이지 인덱스, 검색할 텍스트를 지정하여 PDF 문서의 일련의 페이지에서 텍스트를 찾을 수 있습니다.
다음 코드는 특정 범위의 페이지에서 텍스트를 찾는 방법을 보여 줍니다.
//Load the existing PDF document.
PdfDocument document =
PdfDocument(inputBytes: await _readDocumentData('pdf_succinctly.pdf'));
//Create the new instance of the PdfTextExtractor.
PdfTextExtractor extractor = PdfTextExtractor(document);
//Find text from the PDF document with a specific range of pages.
List<MatchedItem> findResult =
extractor.findText(['PDF'], startPageIndex: 1, endPageIndex: 3);
if (findResult.length == 0) {
document.dispose();
_showResult('The text is not found');
} else {
_showResult(findResult.length.toString() + ' matches found.');
}
이 코드를 실행하면 아래 화면 캡처와 같이 지정한 페이지 범위 내의 모든 실례를 제공합니다.PDF의 검색 옵션을 사용하여 텍스트 찾기
우리는 검색 옵션 (대소문자 구분, 전체 글자 일치, 또는 둘 다 포함) 을 통해 텍스트를 찾을 수 있습니다.이를 위해findText 방법에서 검색 옵션과 텍스트를 제공해야 합니다.
다음 코드는 사용 가능한 검색 옵션을 사용하여 텍스트를 찾는 방법을 보여 줍니다.여기서는 대소문자를 구분하는 검색 옵션을 사용하여 텍스트를 검색합니다.
//Load the existing PDF document.
PdfDocument document =
PdfDocument(inputBytes: await _readDocumentData('pdf_succinctly.pdf'));
//Create the new instance of the PdfTextExtractor.
PdfTextExtractor extractor = PdfTextExtractor(document);
//Find text with text search option.
List<MatchedItem> findResult = extractor.findText(['PDF'],
startPageIndex: 1,
endPageIndex: 3,
searchOption: TextSearchOption.caseSensitive);
if (findResult.length == 0) {
document.dispose();
_showResult('The text is not found');
} else {
_showResult(findResult.length.toString() + ' matches found.');
}
실행 코드 예시를 통해 아래 화면 캡처와 같은 출력을 얻을 수 있습니다.PDF에서 여러 세그먼트 텍스트 동시에 찾기
Syncfusion Flatter PDF 패키지를 사용하여 여러 텍스트를 찾을 수도 있습니다.이를 위해findText 방법에 여러 길이의 텍스트를 제공해야 합니다.
다음 코드는 PDF 문서에서 여러 단락의 텍스트를 동시에 찾는 방법을 보여 줍니다.
//Load the existing PDF document.
PdfDocument document =
PdfDocument(inputBytes: await _readDocumentData('pdf_succinctly.pdf'));
//Create the new instance of the PdfTextExtractor.
PdfTextExtractor extractor = PdfTextExtractor(document);
//Find more than one text length at the same time.
List<MatchedItem> findResult = extractor.findText(['PDF', 'document']);
if (findResult.length == 0) {
document.dispose();
_showResult('The text is not found');
} else {
_showResult(findResult.length.toString() + ' matches found.');
}
이 코드 예시를 실행하면 다음 화면 캡처와 같은 출력을 얻을 수 있습니다.리소스
자세한 내용은 를 참조하십시오.
PDF 문서 바이브레이션 데모에서 텍스트 찾기 결론
이 블로그에서 우리는 떨림 프로그램에서 PDF 문서의 텍스트를 찾는 다섯 가지 다른 방법을 배웠다.우리 를 자세히 읽으면 다른 옵션과 기능, 그리고 첨부된 코드 예시를 발견할 수 있습니다.
이러한 기능에 대해 궁금한 점이 있으면 아래 설명 섹션에서 알려 주십시오.저희Syncfusion Flutter PDF Library, documentation 또는 support forum를 통해서도 저희에게 연락하실 수 있습니다.우리는 언제든지 기꺼이 당신을 돕겠습니다!
이 기사를 좋아하신다면 다음과 같은 기사도 좋아하실 거라고 생각합니다.
[블로그]
[블로그]
[블로그]
[블로그]
Direct-Trac [전자책]
Reference
이 문제에 관하여(Flatter에서 PDF 문서의 텍스트를 찾는 5가지 간단한 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/syncfusion/5-easy-ways-to-find-text-in-pdf-documents-in-flutter-4k8h텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)